Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
0afcb97c
Commit
0afcb97c
authored
Aug 28, 2009
by
Rémi Duraffort
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drms: remove duplicate code (this was done to reuse drms outside of vlc but it
seems that noone is using it actually).
parent
005a7c47
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
220 deletions
+5
-220
modules/demux/mp4/drms.c
modules/demux/mp4/drms.c
+5
-220
No files found.
modules/demux/mp4/drms.c
View file @
0afcb97c
...
@@ -22,18 +22,14 @@
...
@@ -22,18 +22,14 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
*****************************************************************************/
#ifdef __LIBVLC__
#ifdef HAVE_CONFIG_H
#ifdef HAVE_CONFIG_H
# include "config.h"
# include "config.h"
#endif
#endif
# include <vlc_common.h>
#include <vlc_common.h>
# include <vlc_md5.h>
#include <vlc_md5.h>
# include "libmp4.h"
#include "libmp4.h"
# include <vlc_charset.h>
#include <vlc_charset.h>
#else
# include "drmsvl.h"
#endif
#ifdef WIN32
#ifdef WIN32
# include <io.h>
# include <io.h>
...
@@ -88,22 +84,7 @@ struct aes_s
...
@@ -88,22 +84,7 @@ struct aes_s
uint32_t
pp_dec_keys
[
AES_KEY_COUNT
+
1
][
4
];
uint32_t
pp_dec_keys
[
AES_KEY_COUNT
+
1
][
4
];
};
};
#ifdef __LIBVLC__
#define Digest DigestMD5
# define Digest DigestMD5
#else
/*****************************************************************************
* md5_s: MD5 message structure
*****************************************************************************
* This structure stores the static information needed to compute an MD5
* hash. It has an extra data buffer to allow non-aligned writes.
*****************************************************************************/
struct
md5_s
{
uint64_t
i_bits
;
/* Total written bits */
uint32_t
p_digest
[
4
];
/* The MD5 digest */
uint32_t
p_data
[
16
];
/* Buffer to cache non-aligned writes */
};
#endif
/*****************************************************************************
/*****************************************************************************
* shuffle_s: shuffle structure
* shuffle_s: shuffle structure
...
@@ -144,13 +125,6 @@ struct drms_s
...
@@ -144,13 +125,6 @@ struct drms_s
static
void
InitAES
(
struct
aes_s
*
,
uint32_t
*
);
static
void
InitAES
(
struct
aes_s
*
,
uint32_t
*
);
static
void
DecryptAES
(
struct
aes_s
*
,
uint32_t
*
,
const
uint32_t
*
);
static
void
DecryptAES
(
struct
aes_s
*
,
uint32_t
*
,
const
uint32_t
*
);
#ifndef __LIBVLC__
static
void
InitMD5
(
struct
md5_s
*
);
static
void
AddMD5
(
struct
md5_s
*
,
const
uint8_t
*
,
uint32_t
);
static
void
EndMD5
(
struct
md5_s
*
);
static
void
Digest
(
struct
md5_s
*
,
uint32_t
*
);
#endif
static
void
InitShuffle
(
struct
shuffle_s
*
,
uint32_t
*
,
uint32_t
);
static
void
InitShuffle
(
struct
shuffle_s
*
,
uint32_t
*
,
uint32_t
);
static
void
DoShuffle
(
struct
shuffle_s
*
,
uint32_t
*
,
uint32_t
);
static
void
DoShuffle
(
struct
shuffle_s
*
,
uint32_t
*
,
uint32_t
);
...
@@ -507,195 +481,6 @@ static void DecryptAES( struct aes_s *p_aes,
...
@@ -507,195 +481,6 @@ static void DecryptAES( struct aes_s *p_aes,
}
}
}
}
#ifndef __LIBVLC__
/*****************************************************************************
* InitMD5: initialise an MD5 message
*****************************************************************************
* The MD5 message-digest algorithm is described in RFC 1321
*****************************************************************************/
static
void
InitMD5
(
struct
md5_s
*
p_md5
)
{
p_md5
->
p_digest
[
0
]
=
0x67452301
;
p_md5
->
p_digest
[
1
]
=
0xefcdab89
;
p_md5
->
p_digest
[
2
]
=
0x98badcfe
;
p_md5
->
p_digest
[
3
]
=
0x10325476
;
memset
(
p_md5
->
p_data
,
0
,
64
);
p_md5
->
i_bits
=
0
;
}
/*****************************************************************************
* AddMD5: add i_len bytes to an MD5 message
*****************************************************************************/
static
void
AddMD5
(
struct
md5_s
*
p_md5
,
const
uint8_t
*
p_src
,
uint32_t
i_len
)
{
unsigned
int
i_current
;
/* Current bytes in the spare buffer */
unsigned
int
i_offset
=
0
;
i_current
=
(
p_md5
->
i_bits
/
8
)
&
63
;
p_md5
->
i_bits
+=
8
*
i_len
;
/* If we can complete our spare buffer to 64 bytes, do it and add the
* resulting buffer to the MD5 message */
if
(
i_len
>=
(
64
-
i_current
)
)
{
memcpy
(
((
uint8_t
*
)
p_md5
->
p_data
)
+
i_current
,
p_src
,
(
64
-
i_current
)
);
Digest
(
p_md5
,
p_md5
->
p_data
);
i_offset
+=
(
64
-
i_current
);
i_len
-=
(
64
-
i_current
);
i_current
=
0
;
}
/* Add as many entire 64 bytes blocks as we can to the MD5 message */
while
(
i_len
>=
64
)
{
uint32_t
p_tmp
[
16
];
memcpy
(
p_tmp
,
p_src
+
i_offset
,
64
);
Digest
(
p_md5
,
p_tmp
);
i_offset
+=
64
;
i_len
-=
64
;
}
/* Copy our remaining data to the message's spare buffer */
memcpy
(
((
uint8_t
*
)
p_md5
->
p_data
)
+
i_current
,
p_src
+
i_offset
,
i_len
);
}
/*****************************************************************************
* EndMD5: finish an MD5 message
*****************************************************************************
* This function adds adequate padding to the end of the message, and appends
* the bit count so that we end at a block boundary.
*****************************************************************************/
static
void
EndMD5
(
struct
md5_s
*
p_md5
)
{
unsigned
int
i_current
;
i_current
=
(
p_md5
->
i_bits
/
8
)
&
63
;
/* Append 0x80 to our buffer. No boundary check because the temporary
* buffer cannot be full, otherwise AddMD5 would have emptied it. */
((
uint8_t
*
)
p_md5
->
p_data
)[
i_current
++
]
=
0x80
;
/* If less than 8 bytes are available at the end of the block, complete
* this 64 bytes block with zeros and add it to the message. We'll add
* our length at the end of the next block. */
if
(
i_current
>
56
)
{
memset
(
((
uint8_t
*
)
p_md5
->
p_data
)
+
i_current
,
0
,
(
64
-
i_current
)
);
Digest
(
p_md5
,
p_md5
->
p_data
);
i_current
=
0
;
}
/* Fill the unused space in our last block with zeroes and put the
* message length at the end. */
memset
(
((
uint8_t
*
)
p_md5
->
p_data
)
+
i_current
,
0
,
(
56
-
i_current
)
);
p_md5
->
p_data
[
14
]
=
p_md5
->
i_bits
&
0xffffffff
;
p_md5
->
p_data
[
15
]
=
(
p_md5
->
i_bits
>>
32
);
REVERSE
(
&
p_md5
->
p_data
[
14
],
2
);
Digest
(
p_md5
,
p_md5
->
p_data
);
}
#define F1( x, y, z ) ((z) ^ ((x) & ((y) ^ (z))))
#define F2( x, y, z ) F1((z), (x), (y))
#define F3( x, y, z ) ((x) ^ (y) ^ (z))
#define F4( x, y, z ) ((y) ^ ((x) | ~(z)))
#define MD5_DO( f, w, x, y, z, data, s ) \
( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
/*****************************************************************************
* Digest: update the MD5 digest with 64 bytes of data
*****************************************************************************/
static
void
Digest
(
struct
md5_s
*
p_md5
,
uint32_t
*
p_input
)
{
uint32_t
a
,
b
,
c
,
d
;
REVERSE
(
p_input
,
16
);
a
=
p_md5
->
p_digest
[
0
];
b
=
p_md5
->
p_digest
[
1
];
c
=
p_md5
->
p_digest
[
2
];
d
=
p_md5
->
p_digest
[
3
];
MD5_DO
(
F1
,
a
,
b
,
c
,
d
,
p_input
[
0
]
+
0xd76aa478
,
7
);
MD5_DO
(
F1
,
d
,
a
,
b
,
c
,
p_input
[
1
]
+
0xe8c7b756
,
12
);
MD5_DO
(
F1
,
c
,
d
,
a
,
b
,
p_input
[
2
]
+
0x242070db
,
17
);
MD5_DO
(
F1
,
b
,
c
,
d
,
a
,
p_input
[
3
]
+
0xc1bdceee
,
22
);
MD5_DO
(
F1
,
a
,
b
,
c
,
d
,
p_input
[
4
]
+
0xf57c0faf
,
7
);
MD5_DO
(
F1
,
d
,
a
,
b
,
c
,
p_input
[
5
]
+
0x4787c62a
,
12
);
MD5_DO
(
F1
,
c
,
d
,
a
,
b
,
p_input
[
6
]
+
0xa8304613
,
17
);
MD5_DO
(
F1
,
b
,
c
,
d
,
a
,
p_input
[
7
]
+
0xfd469501
,
22
);
MD5_DO
(
F1
,
a
,
b
,
c
,
d
,
p_input
[
8
]
+
0x698098d8
,
7
);
MD5_DO
(
F1
,
d
,
a
,
b
,
c
,
p_input
[
9
]
+
0x8b44f7af
,
12
);
MD5_DO
(
F1
,
c
,
d
,
a
,
b
,
p_input
[
10
]
+
0xffff5bb1
,
17
);
MD5_DO
(
F1
,
b
,
c
,
d
,
a
,
p_input
[
11
]
+
0x895cd7be
,
22
);
MD5_DO
(
F1
,
a
,
b
,
c
,
d
,
p_input
[
12
]
+
0x6b901122
,
7
);
MD5_DO
(
F1
,
d
,
a
,
b
,
c
,
p_input
[
13
]
+
0xfd987193
,
12
);
MD5_DO
(
F1
,
c
,
d
,
a
,
b
,
p_input
[
14
]
+
0xa679438e
,
17
);
MD5_DO
(
F1
,
b
,
c
,
d
,
a
,
p_input
[
15
]
+
0x49b40821
,
22
);
MD5_DO
(
F2
,
a
,
b
,
c
,
d
,
p_input
[
1
]
+
0xf61e2562
,
5
);
MD5_DO
(
F2
,
d
,
a
,
b
,
c
,
p_input
[
6
]
+
0xc040b340
,
9
);
MD5_DO
(
F2
,
c
,
d
,
a
,
b
,
p_input
[
11
]
+
0x265e5a51
,
14
);
MD5_DO
(
F2
,
b
,
c
,
d
,
a
,
p_input
[
0
]
+
0xe9b6c7aa
,
20
);
MD5_DO
(
F2
,
a
,
b
,
c
,
d
,
p_input
[
5
]
+
0xd62f105d
,
5
);
MD5_DO
(
F2
,
d
,
a
,
b
,
c
,
p_input
[
10
]
+
0x02441453
,
9
);
MD5_DO
(
F2
,
c
,
d
,
a
,
b
,
p_input
[
15
]
+
0xd8a1e681
,
14
);
MD5_DO
(
F2
,
b
,
c
,
d
,
a
,
p_input
[
4
]
+
0xe7d3fbc8
,
20
);
MD5_DO
(
F2
,
a
,
b
,
c
,
d
,
p_input
[
9
]
+
0x21e1cde6
,
5
);
MD5_DO
(
F2
,
d
,
a
,
b
,
c
,
p_input
[
14
]
+
0xc33707d6
,
9
);
MD5_DO
(
F2
,
c
,
d
,
a
,
b
,
p_input
[
3
]
+
0xf4d50d87
,
14
);
MD5_DO
(
F2
,
b
,
c
,
d
,
a
,
p_input
[
8
]
+
0x455a14ed
,
20
);
MD5_DO
(
F2
,
a
,
b
,
c
,
d
,
p_input
[
13
]
+
0xa9e3e905
,
5
);
MD5_DO
(
F2
,
d
,
a
,
b
,
c
,
p_input
[
2
]
+
0xfcefa3f8
,
9
);
MD5_DO
(
F2
,
c
,
d
,
a
,
b
,
p_input
[
7
]
+
0x676f02d9
,
14
);
MD5_DO
(
F2
,
b
,
c
,
d
,
a
,
p_input
[
12
]
+
0x8d2a4c8a
,
20
);
MD5_DO
(
F3
,
a
,
b
,
c
,
d
,
p_input
[
5
]
+
0xfffa3942
,
4
);
MD5_DO
(
F3
,
d
,
a
,
b
,
c
,
p_input
[
8
]
+
0x8771f681
,
11
);
MD5_DO
(
F3
,
c
,
d
,
a
,
b
,
p_input
[
11
]
+
0x6d9d6122
,
16
);
MD5_DO
(
F3
,
b
,
c
,
d
,
a
,
p_input
[
14
]
+
0xfde5380c
,
23
);
MD5_DO
(
F3
,
a
,
b
,
c
,
d
,
p_input
[
1
]
+
0xa4beea44
,
4
);
MD5_DO
(
F3
,
d
,
a
,
b
,
c
,
p_input
[
4
]
+
0x4bdecfa9
,
11
);
MD5_DO
(
F3
,
c
,
d
,
a
,
b
,
p_input
[
7
]
+
0xf6bb4b60
,
16
);
MD5_DO
(
F3
,
b
,
c
,
d
,
a
,
p_input
[
10
]
+
0xbebfbc70
,
23
);
MD5_DO
(
F3
,
a
,
b
,
c
,
d
,
p_input
[
13
]
+
0x289b7ec6
,
4
);
MD5_DO
(
F3
,
d
,
a
,
b
,
c
,
p_input
[
0
]
+
0xeaa127fa
,
11
);
MD5_DO
(
F3
,
c
,
d
,
a
,
b
,
p_input
[
3
]
+
0xd4ef3085
,
16
);
MD5_DO
(
F3
,
b
,
c
,
d
,
a
,
p_input
[
6
]
+
0x04881d05
,
23
);
MD5_DO
(
F3
,
a
,
b
,
c
,
d
,
p_input
[
9
]
+
0xd9d4d039
,
4
);
MD5_DO
(
F3
,
d
,
a
,
b
,
c
,
p_input
[
12
]
+
0xe6db99e5
,
11
);
MD5_DO
(
F3
,
c
,
d
,
a
,
b
,
p_input
[
15
]
+
0x1fa27cf8
,
16
);
MD5_DO
(
F3
,
b
,
c
,
d
,
a
,
p_input
[
2
]
+
0xc4ac5665
,
23
);
MD5_DO
(
F4
,
a
,
b
,
c
,
d
,
p_input
[
0
]
+
0xf4292244
,
6
);
MD5_DO
(
F4
,
d
,
a
,
b
,
c
,
p_input
[
7
]
+
0x432aff97
,
10
);
MD5_DO
(
F4
,
c
,
d
,
a
,
b
,
p_input
[
14
]
+
0xab9423a7
,
15
);
MD5_DO
(
F4
,
b
,
c
,
d
,
a
,
p_input
[
5
]
+
0xfc93a039
,
21
);
MD5_DO
(
F4
,
a
,
b
,
c
,
d
,
p_input
[
12
]
+
0x655b59c3
,
6
);
MD5_DO
(
F4
,
d
,
a
,
b
,
c
,
p_input
[
3
]
+
0x8f0ccc92
,
10
);
MD5_DO
(
F4
,
c
,
d
,
a
,
b
,
p_input
[
10
]
+
0xffeff47d
,
15
);
MD5_DO
(
F4
,
b
,
c
,
d
,
a
,
p_input
[
1
]
+
0x85845dd1
,
21
);
MD5_DO
(
F4
,
a
,
b
,
c
,
d
,
p_input
[
8
]
+
0x6fa87e4f
,
6
);
MD5_DO
(
F4
,
d
,
a
,
b
,
c
,
p_input
[
15
]
+
0xfe2ce6e0
,
10
);
MD5_DO
(
F4
,
c
,
d
,
a
,
b
,
p_input
[
6
]
+
0xa3014314
,
15
);
MD5_DO
(
F4
,
b
,
c
,
d
,
a
,
p_input
[
13
]
+
0x4e0811a1
,
21
);
MD5_DO
(
F4
,
a
,
b
,
c
,
d
,
p_input
[
4
]
+
0xf7537e82
,
6
);
MD5_DO
(
F4
,
d
,
a
,
b
,
c
,
p_input
[
11
]
+
0xbd3af235
,
10
);
MD5_DO
(
F4
,
c
,
d
,
a
,
b
,
p_input
[
2
]
+
0x2ad7d2bb
,
15
);
MD5_DO
(
F4
,
b
,
c
,
d
,
a
,
p_input
[
9
]
+
0xeb86d391
,
21
);
p_md5
->
p_digest
[
0
]
+=
a
;
p_md5
->
p_digest
[
1
]
+=
b
;
p_md5
->
p_digest
[
2
]
+=
c
;
p_md5
->
p_digest
[
3
]
+=
d
;
}
#endif
/*****************************************************************************
/*****************************************************************************
* InitShuffle: initialise a shuffle structure
* InitShuffle: initialise a shuffle structure
*****************************************************************************
*****************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment