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
60626f42
Commit
60626f42
authored
Feb 01, 2006
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/demux/mp4: added more comments and debug information to the DRMS
code.
parent
2b1bac2b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
15 deletions
+45
-15
modules/demux/mp4/drms.c
modules/demux/mp4/drms.c
+17
-10
modules/demux/mp4/drmstables.h
modules/demux/mp4/drmstables.h
+12
-1
modules/demux/mp4/libmp4.c
modules/demux/mp4/libmp4.c
+16
-4
No files found.
modules/demux/mp4/drms.c
View file @
60626f42
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
# include <limits.h>
# include <limits.h>
#endif
#endif
#ifdef
SYS_DARWIN
#ifdef
__APPLE__
# include <mach/mach.h>
# include <mach/mach.h>
# include <IOKit/IOKitLib.h>
# include <IOKit/IOKitLib.h>
# include <CoreFoundation/CFNumber.h>
# include <CoreFoundation/CFNumber.h>
...
@@ -284,6 +284,13 @@ void drms_decrypt( void *_p_drms, uint32_t *p_buffer, uint32_t i_bytes )
...
@@ -284,6 +284,13 @@ void drms_decrypt( void *_p_drms, uint32_t *p_buffer, uint32_t i_bytes )
/*****************************************************************************
/*****************************************************************************
* drms_init: initialise a DRMS structure
* drms_init: initialise a DRMS structure
*****************************************************************************
* Return values:
* 0: success
* -1: unimplemented
* -2: invalid argument
* -3: failed to get user key
* -4: invalid user key
*****************************************************************************/
*****************************************************************************/
int
drms_init
(
void
*
_p_drms
,
uint32_t
i_type
,
int
drms_init
(
void
*
_p_drms
,
uint32_t
i_type
,
uint8_t
*
p_info
,
uint32_t
i_len
)
uint8_t
*
p_info
,
uint32_t
i_len
)
...
@@ -296,7 +303,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -296,7 +303,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
case
FOURCC_user
:
case
FOURCC_user
:
if
(
i_len
<
sizeof
(
p_drms
->
i_user
)
)
if
(
i_len
<
sizeof
(
p_drms
->
i_user
)
)
{
{
i_ret
=
-
1
;
i_ret
=
-
2
;
break
;
break
;
}
}
...
@@ -306,7 +313,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -306,7 +313,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
case
FOURCC_key
:
case
FOURCC_key
:
if
(
i_len
<
sizeof
(
p_drms
->
i_key
)
)
if
(
i_len
<
sizeof
(
p_drms
->
i_key
)
)
{
{
i_ret
=
-
1
;
i_ret
=
-
2
;
break
;
break
;
}
}
...
@@ -316,7 +323,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -316,7 +323,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
case
FOURCC_iviv
:
case
FOURCC_iviv
:
if
(
i_len
<
sizeof
(
p_drms
->
p_key
)
)
if
(
i_len
<
sizeof
(
p_drms
->
p_key
)
)
{
{
i_ret
=
-
1
;
i_ret
=
-
2
;
break
;
break
;
}
}
...
@@ -328,7 +335,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -328,7 +335,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
if
(
p_drms
->
p_name
==
NULL
)
if
(
p_drms
->
p_name
==
NULL
)
{
{
i_ret
=
-
1
;
i_ret
=
-
2
;
}
}
break
;
break
;
...
@@ -339,7 +346,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -339,7 +346,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
if
(
i_len
<
64
)
if
(
i_len
<
64
)
{
{
i_ret
=
-
1
;
i_ret
=
-
2
;
break
;
break
;
}
}
...
@@ -358,7 +365,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -358,7 +365,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
{
{
if
(
GetUserKey
(
p_drms
,
p_drms
->
p_key
)
)
if
(
GetUserKey
(
p_drms
,
p_drms
->
p_key
)
)
{
{
i_ret
=
-
1
;
i_ret
=
-
3
;
break
;
break
;
}
}
}
}
...
@@ -372,7 +379,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
...
@@ -372,7 +379,7 @@ int drms_init( void *_p_drms, uint32_t i_type,
if
(
p_priv
[
0
]
!=
0x6e757469
)
/* itun */
if
(
p_priv
[
0
]
!=
0x6e757469
)
/* itun */
{
{
i_ret
=
-
1
;
i_ret
=
-
4
;
break
;
break
;
}
}
...
@@ -1956,7 +1963,7 @@ static int GetiPodID( int64_t *p_ipod_id )
...
@@ -1956,7 +1963,7 @@ static int GetiPodID( int64_t *p_ipod_id )
return
0
;
return
0
;
}
}
#ifdef
SYS_DARWIN
#ifdef
__APPLE__
CFTypeRef
value
;
CFTypeRef
value
;
mach_port_t
port
;
mach_port_t
port
;
io_object_t
device
;
io_object_t
device
;
...
@@ -2049,7 +2056,7 @@ static int GetiPodID( int64_t *p_ipod_id )
...
@@ -2049,7 +2056,7 @@ static int GetiPodID( int64_t *p_ipod_id )
break
;
break
;
}
}
}
}
}
}
if
(
!
i_ret
)
break
;
if
(
!
i_ret
)
break
;
}
}
...
...
modules/demux/mp4/drmstables.h
View file @
60626f42
/*****************************************************************************
/*****************************************************************************
* drmstables.h : AES/Rijndael block cipher and miscellaneous tables
* drmstables.h : AES/Rijndael block cipher and miscellaneous tables
*****************************************************************************
*****************************************************************************
* Copyright (C) 2004 the VideoLAN team
* Copyright (C) 2004
, 2006
the VideoLAN team
* $Id$
* $Id$
*
*
* Author: Jon Lech Johansen <jon-vl@nanocrew.net>
* Author: Jon Lech Johansen <jon-vl@nanocrew.net>
...
@@ -21,6 +21,11 @@
...
@@ -21,6 +21,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
*****************************************************************************/
/*****************************************************************************
* p_aes_table, p_aes_encrypt, p_aes_itable, p_aes_decrypt: AES tables
*****************************************************************************
* The following tables and macros are used for the AES (Rijndael) cypher.
*****************************************************************************/
#define AES_ROR( x, n ) (((x) << (32-(n))) | ((x) >> (n)))
#define AES_ROR( x, n ) (((x) << (32-(n))) | ((x) >> (n)))
#define AES_XOR_ROR( p_table, p_tmp ) \
#define AES_XOR_ROR( p_table, p_tmp ) \
...
@@ -178,6 +183,12 @@ static uint32_t const p_aes_decrypt[ 256 ] =
...
@@ -178,6 +183,12 @@ static uint32_t const p_aes_decrypt[ 256 ] =
0x55000000
,
0x21000000
,
0x0c000000
,
0x7d000000
0x55000000
,
0x21000000
,
0x0c000000
,
0x7d000000
};
};
/*****************************************************************************
* p_shuffle_xor, p_shuffle_sub, p_shuffle_add: iTMS drms v1
*****************************************************************************
* The following tables are used for the first version of the iTMS drms key
* scrambling algorithm.
*****************************************************************************/
static
uint16_t
const
p_shuffle_xor
[
256
]
=
static
uint16_t
const
p_shuffle_xor
[
256
]
=
{
{
0x00d1
,
0x0315
,
0x1a32
,
0x19ec
,
0x1bbb
,
0x1d6f
,
0x14fe
,
0x0e9e
,
0x00d1
,
0x0315
,
0x1a32
,
0x19ec
,
0x1bbb
,
0x1d6f
,
0x14fe
,
0x0e9e
,
...
...
modules/demux/mp4/libmp4.c
View file @
60626f42
...
@@ -2035,11 +2035,23 @@ static int MP4_ReadBox_drms( stream_t *p_stream, MP4_Box_t *p_box )
...
@@ -2035,11 +2035,23 @@ static int MP4_ReadBox_drms( stream_t *p_stream, MP4_Box_t *p_box )
if
(
p_drms_box
&&
p_drms_box
->
data
.
p_sample_soun
->
p_drms
)
if
(
p_drms_box
&&
p_drms_box
->
data
.
p_sample_soun
->
p_drms
)
{
{
if
(
drms_init
(
p_drms_box
->
data
.
p_sample_soun
->
p_drms
,
int
i_ret
=
drms_init
(
p_drms_box
->
data
.
p_sample_soun
->
p_drms
,
p_box
->
i_type
,
p_peek
,
i_read
)
)
p_box
->
i_type
,
p_peek
,
i_read
);
if
(
i_ret
)
{
{
msg_Err
(
p_stream
,
"drms_init( %4.4s ) failed"
,
char
*
psz_error
;
(
char
*
)
&
p_box
->
i_type
);
switch
(
i_ret
)
{
case
-
1
:
psz_error
=
"unimplemented"
;
break
;
case
-
2
:
psz_error
=
"invalid argument"
;
break
;
case
-
3
:
psz_error
=
"could not get user key"
;
break
;
case
-
4
:
psz_error
=
"invalid user key"
;
break
;
default:
psz_error
=
"unknown error"
;
break
;
}
msg_Err
(
p_stream
,
"drms_init(%4.4s) failed (%s)"
,
(
char
*
)
&
p_box
->
i_type
,
psz_error
);
drms_free
(
p_drms_box
->
data
.
p_sample_soun
->
p_drms
);
drms_free
(
p_drms_box
->
data
.
p_sample_soun
->
p_drms
);
p_drms_box
->
data
.
p_sample_soun
->
p_drms
=
NULL
;
p_drms_box
->
data
.
p_sample_soun
->
p_drms
=
NULL
;
...
...
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