drms.c File Reference

Include dependency graph for drms.c:


Data Structures

struct  aes_s
struct  md5_s
struct  shuffle_s
struct  drms_s

Defines

#define SWAP(a, b)   { (a) ^= (b); (b) ^= (a); (a) ^= (b); }
#define REVERSE(p, n)
#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 )
#define ROT13(c)
#define DRMS_DIRNAME   ".drms"
#define ISCINFO   "iSCInfo"
#define PROD_NAME   "iPod"
#define VENDOR_NAME   "Apple Computer, Inc."

Functions

static void InitAES (struct aes_s *, uint32_t *)
static void DecryptAES (struct aes_s *, uint32_t *, const uint32_t *)
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 *)
static void InitShuffle (struct shuffle_s *, uint32_t *, uint32_t)
static void DoShuffle (struct shuffle_s *, uint32_t *, uint32_t)
static uint32_t FirstPass (uint32_t *)
static void SecondPass (uint32_t *, uint32_t)
static void ThirdPass (uint32_t *)
static void FourthPass (uint32_t *)
static void TinyShuffle1 (uint32_t *)
static void TinyShuffle2 (uint32_t *)
static void TinyShuffle3 (uint32_t *)
static void TinyShuffle4 (uint32_t *)
static void TinyShuffle5 (uint32_t *)
static void TinyShuffle6 (uint32_t *)
static void TinyShuffle7 (uint32_t *)
static void TinyShuffle8 (uint32_t *)
static void DoExtShuffle (uint32_t *)
static int GetSystemKey (uint32_t *, bool)
static int WriteUserKey (void *, uint32_t *)
static int ReadUserKey (void *, uint32_t *)
static int GetUserKey (void *, uint32_t *)
static int GetSCIData (char *, uint32_t **, uint32_t *)
static int HashSystemInfo (uint32_t *)
static int GetiPodID (int64_t *)
static void BlockXOR (uint32_t *p_dest, uint32_t *p_s1, uint32_t *p_s2)
void * drms_alloc (const char *psz_homedir)
void drms_free (void *_p_drms)
void drms_decrypt (void *_p_drms, uint32_t *p_buffer, uint32_t i_bytes)
int drms_init (void *_p_drms, uint32_t i_type, uint8_t *p_info, uint32_t i_len)

Define Documentation

#define DRMS_DIRNAME   ".drms"

#define F1 ( x,
y,
 )     ((z) ^ ((x) & ((y) ^ (z))))

#define F2 ( x,
y,
 )     F1((z), (x), (y))

#define F3 ( x,
y,
 )     ((x) ^ (y) ^ (z))

#define F4 ( x,
y,
 )     ((y) ^ ((x) | ~(z)))

#define ISCINFO   "iSCInfo"

#define MD5_DO ( f,
w,
x,
y,
z,
data,
 )     ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )

#define PROD_NAME   "iPod"

#define REVERSE ( p,
 ) 

#define ROT13 (  ) 

Value:

(((c)>='A'&&(c)<='Z')?(((c)-'A'+13)%26)+'A':\
                      ((c)>='a'&&(c)<='z')?(((c)-'a'+13)%26)+'a':c)

#define SWAP ( a,
 )     { (a) ^= (b); (b) ^= (a); (a) ^= (b); }

#define VENDOR_NAME   "Apple Computer, Inc."


Function Documentation

static void AddMD5 ( struct md5_s ,
const uint8_t *  ,
uint32_t   
) [static]

static void BlockXOR ( uint32_t *  p_dest,
uint32_t *  p_s1,
uint32_t *  p_s2 
) [inline, static]

static void DecryptAES ( struct aes_s ,
uint32_t *  ,
const uint32_t *   
) [static]

static void Digest ( struct md5_s ,
uint32_t *   
) [static]

static void DoExtShuffle ( uint32_t *   )  [static]

static void DoShuffle ( struct shuffle_s ,
uint32_t *  ,
uint32_t   
) [static]

void* drms_alloc ( const char *  psz_homedir  ) 

void drms_decrypt ( void *  _p_drms,
uint32_t *  p_buffer,
uint32_t  i_bytes 
)

void drms_free ( void *  _p_drms  ) 

int drms_init ( void *  _p_drms,
uint32_t  i_type,
uint8_t *  p_info,
uint32_t  i_len 
)

static void EndMD5 ( struct md5_s  )  [static]

static uint32_t FirstPass ( uint32_t *   )  [static]

static void FourthPass ( uint32_t *   )  [static]

static int GetiPodID ( int64_t *   )  [static]

static int GetSCIData ( char *  ,
uint32_t **  ,
uint32_t *   
) [static]

static int GetSystemKey ( uint32_t *  ,
bool   
) [static]

static int GetUserKey ( void *  ,
uint32_t *   
) [static]

static int HashSystemInfo ( uint32_t *   )  [static]

static void InitAES ( struct aes_s ,
uint32_t *   
) [static]

static void InitMD5 ( struct md5_s  )  [static]

static void InitShuffle ( struct shuffle_s ,
uint32_t *  ,
uint32_t   
) [static]

static int ReadUserKey ( void *  ,
uint32_t *   
) [static]

static void SecondPass ( uint32_t *  ,
uint32_t   
) [static]

static void ThirdPass ( uint32_t *   )  [static]

static void TinyShuffle1 ( uint32_t *   )  [static]

static void TinyShuffle2 ( uint32_t *   )  [static]

static void TinyShuffle3 ( uint32_t *   )  [static]

static void TinyShuffle4 ( uint32_t *   )  [static]

static void TinyShuffle5 ( uint32_t *   )  [static]

static void TinyShuffle6 ( uint32_t *   )  [static]

static void TinyShuffle7 ( uint32_t *   )  [static]

static void TinyShuffle8 ( uint32_t *   )  [static]

static int WriteUserKey ( void *  ,
uint32_t *   
) [static]


Generated on Wed Aug 13 08:03:24 2008 for VLC by  doxygen 1.5.1