* 0: success
* -1: unimplemented
* -2: invalid argument
- * -3: failed to get user key
- * -4: invalid user key
+ * -3: could not get system key
+ * -4: could not get SCI data
+ * -5: no user key found in SCI data
+ * -6: invalid user key
*****************************************************************************/
int drms_init( void *_p_drms, uint32_t i_type,
uint8_t *p_info, uint32_t i_len )
}
else
{
- if( GetUserKey( p_drms, p_drms->p_key ) )
+ i_ret = GetUserKey( p_drms, p_drms->p_key );
+ if( i_ret )
{
- i_ret = -3;
break;
}
}
if( p_priv[ 0 ] != 0x6e757469 ) /* itun */
{
- i_ret = -4;
+ i_ret = -6;
break;
}
uint32_t *p_sci0, *p_sci1, *p_buffer;
uint32_t p_sci_key[ 4 ];
char *psz_ipod;
- int i_ret = -1;
+ int i_ret = -5;
- if( !ReadUserKey( p_drms, p_user_key ) )
+ if( ReadUserKey( p_drms, p_user_key ) == 0 )
{
REVERSE( p_user_key, 4 );
return 0;
if( GetSystemKey( p_sys_key, psz_ipod ? VLC_TRUE : VLC_FALSE ) )
{
- return -1;
+ return -3;
}
if( GetSCIData( psz_ipod, &p_sci_data, &i_sci_size ) )
{
- return -1;
+ return -4;
}
/* Phase 1: unscramble the SCI data using the system key and shuffle
{
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;
+ case -3: psz_error = "could not get system key"; break;
+ case -4: psz_error = "could not get SCI data"; break;
+ case -5: psz_error = "no user key found in SCI data"; break;
+ case -6: psz_error = "invalid user key"; break;
default: psz_error = "unknown error"; break;
}