亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? master_key.c

?? ZORAN 962/966 SOURCE CODE,DVD chip
?? C
字號(hào):
// $Header: /I76/I76_Common/I76_Reference/Playcore/Nav_Clips/AviDrm/LibDrmCommon/master_key.c 2     2/15/04 7:41p Lotan $
// Copyright (c) 2003 DivXNetworks, Inc. http://www.divxnetworks.com
// All rights reserved.
//
// This software is the confidential and proprietary information of DivxNetworks
// Inc. ("Confidential Information").  You shall not disclose such Confidential
// Information and shall use it only in accordance with the terms of the license
// agreement you entered into with DivXNetworks, Inc.
#include "Config.h"		// Global Configuration - do not remove!

#ifdef AVI_DRM_SUPPORT

#ifdef USE_ONE_MASTER_KEY
#include "Playcore\Nav_Clips\AviDrm\libDrmCommon\master_key_one.h"
#else
#include "Playcore\Nav_Clips\AviDrm\libDrmCommon\master_key_all.h"
#include "Playcore\Nav_Clips\AviDrm\libDrmCommon\master_key_all_local.h"
#endif
#include "Playcore\Nav_Clips\AviDrm\LibDrmCommon\DrmSizes.h"
#include "Playcore\Nav_Clips\AviDrm\LibDrmCommon\crypt_util.h"
#include "Playcore\Nav_Clips\AviDrm\LibDrmCommon\DrmErrors.h"
#include "Playcore\Nav_Clips\AviDrm\libDrmDecrypt\DrmLocal.h"
#include "Playcore\Nav_Clips\AviDrm\libDrmCommon\sha1.h"

#include "Services\Memory\malloc.h" // when using far malloc we should add this include 
#include "Services\Include\_heap.h"

int get_master_key_from_id(unsigned char *masterKeyId, unsigned char *masterkey)
{
	// The aes portable keys for a 32 byte key are 44 bytes long
	// The portable key is divided into elevent four byte pieces 
	// each piece has a random number id.

	return(	get_local_master_key_from_id(masterKeyId, masterkey));

}

/*********************************************************************
  Function:			MasterKeyTable0Descramble
  Description:		descramble master key table row 0

  Input Parameters: const char* input - input buffer, 6 chars long, 
										digits only.
					char* output	  -	output buffer, 4 chars allocated.

  Return Value:		none

  lotan_3105_2004_A - function created.

*********************************************************************/
#ifdef AVI_DRM_SCRAMBLE
void MasterKeyTable0Descramble( const char* input , char* output )
{
	output[3]= (((input[0]-'0')<<4)+(input[1]-'0'))^ ( 'a');
	output[0]= (((input[2]-'0')<<4)+(input[3]-'0'))^ ( '0');
	output[1]= (((input[4]-'0')<<4)+(input[5]-'0'));
	output[2]= (((input[6]-'0')<<4)+(input[7]-'0'))^ ( '1');

	return;
}
/* this function is the descrambling function for the following scrambling one,
	used in an offline utility for creating master_key_table_0.tbl
	
void MasterKeyTable0Scramble( const char* input , char* output )
{
	
	sprintf(output+0,"%02x",input[3] ^ ( 'a'));
	sprintf(output+2,"%02x",input[0] ^ ( '0' ));
	sprintf(output+4,"%02x",input[1] );
	sprintf(output+6,"%02x",input[2] ^ ( '1' ));
	return;
}
*/



/*********************************************************************
  Function:			MasterKeyTable1Descramble
  Description:		descramble master key table row 1

  Input Parameters: const char* input - input buffer, 4 chars long.
					char* output	  -	output buffer, 4 chars allocated.

  Return Value:		none
  
  lotan_3105_2004_A - function created.
*********************************************************************/
void MasterKeyTable1Descramble( const char* input , char* output )
{
	output[0] = input[3]-1;
	output[1] = input[1]-2;
	output[2] = input[0]-3;
	output[3] = input[2]-4;

	return;
}

/* this function is the descrambling function for the following scrambling one,
	used in an offline utility for creating master_key_table_1.tbl
	
 void MasterKeyTable1Scramble( const char* input , char* output )
{
	output[0] = input[2]+3;
	output[1] = input[1]+2;
	output[2] = input[3]+4;
	output[3] = input[0]+1;
	output[4] = '\0';

	return;
}

 */


int get_master_key_from_id(unsigned char *masterKeyId, unsigned char *masterkey)
{
	// The aes portable keys for a 32 byte key are 44 bytes long
	// The portable key is divided into elevent four byte pieces 
	// each piece has a random number id.
	int j = 0;
	int k = 0;
	int keyTableOffset = -1;

	char master_key_table0_Desc[5]={0};
	char master_key_table1_Desc[5]={0};

	for(j=0; j<11; j++)
	{
		int firstChar = j*4;
		char idPart[4];

		strncpy(idPart, masterKeyId + firstChar, 4);

		for(k=0; k < master_key_table_rows; k++)
		{
			MasterKeyTable0Descramble(master_key_table0[k], master_key_table0_Desc);
			
			if(0 == strncmp(idPart, master_key_table0_Desc,4))
			{
				keyTableOffset = k;
				MasterKeyTable1Descramble(master_key_table1[k], master_key_table1_Desc);

				memcpy(masterkey + firstChar, master_key_table1_Desc, 4);
				break;
			}
		}

		if(keyTableOffset == -1)
		{
			return -1;
		}
	}

	return 1;
}

#else
int get_local_master_key_from_id(unsigned char *masterKeyId, unsigned char *masterkey)
{
	// The aes portable keys for a 32 byte key are 44 bytes long
	// The portable key is divided into elevent four byte pieces 
	// each piece has a random number id.
	int j = 0;
	int k = 0;
	int keyTableOffset = -1;

	for(j=0; j<11; j++)
	{
		int firstChar = j*4;
		char idPart[4];

		strncpy(idPart, (char*)&masterKeyId[firstChar], 4);

		for(k=0; k < master_key_table_rows; k++)
		{
			if(0 == strncmp(idPart, master_key_table[k][0],4))
			{
				keyTableOffset = k;
				memcpy(masterkey + firstChar, master_key_table[k][1], 4);
				break;
			}
		}

		if(keyTableOffset == -1)
		{
			return -1;
		}
	}

	return 1;
}

#endif
int getLocalizedMasterKey(unsigned char *masterKey)
{
	unsigned char hardwareSecret[MASTER_KEY_SIZE_BYTES] ;
	unsigned char hardwareKey[KEY_SIZE_BYTES];
	char *hardwareSecretHash;
	unsigned int outlength;
	keyInstance* hardwareKeyInstance;
	int encryptedSize;
	unsigned char ciphered[MASTER_KEY_SIZE_BYTES] = {0};
	cipherInstance cipher;
	int result = DRM_ERROR_NONE;

	localGetHardwareKey(hardwareSecret);
	hardwareSecretHash = sha1GetHash(hardwareSecret, MASTER_KEY_SIZE_BYTES, &outlength);
	memcpy(hardwareKey, hardwareSecretHash, KEY_SIZE_BYTES);
	MEM_Free(SC_POOL, hardwareSecretHash);
	memcpy(ciphered, masterKey, MASTER_KEY_SIZE_BYTES);

	cipherInit(&cipher, MODE_ECB, NULL);

	hardwareKeyInstance = (keyInstance*)MEM_Allocate(SC_POOL, sizeof (keyInstance));
	if(!hardwareKeyInstance)
    {
    	tr_printf(("\nDRM hardware key instance malloc failed\n"));
    	return DRM_ERROR_DECRYPTION_FAILED;
    }
	crypt_util_make_key(hardwareKey, DIR_DECRYPT, hardwareKeyInstance, KEY_SIZE_BYTES);
	crypt_util_decrypt(&cipher, hardwareKeyInstance, ciphered, MASTER_KEY_SIZE_BYTES, masterKey, &encryptedSize);
	MEM_Free(SC_POOL, hardwareKeyInstance);
	
	if (MASTER_KEY_SIZE_BYTES != encryptedSize)
	{
		result = DRM_ERROR_DECRYPTION_FAILED;
	}

	return result;
}
#endif // AVI_DRM_SUPPORT

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费在线播放| 欧美三级一区二区| 国产在线不卡一卡二卡三卡四卡| 亚洲精品视频免费看| 亚洲麻豆国产自偷在线| 一区二区三区色| 调教+趴+乳夹+国产+精品| 免费成人av在线播放| 国产精品一区二区免费不卡 | 色综合久久久久网| 一本在线高清不卡dvd| 在线播放91灌醉迷j高跟美女| 日韩一区二区三区在线| 国产亚洲欧美在线| 亚洲免费看黄网站| 国产.欧美.日韩| 欧美电影一区二区三区| 亚洲人成精品久久久久久| 奇米影视在线99精品| 欧美亚日韩国产aⅴ精品中极品| 欧美日韩精品系列| 亚洲美女免费视频| 成人av午夜电影| 日韩三级视频在线观看| 亚洲gay无套男同| 91网站在线播放| 国产精品午夜春色av| 国产成人自拍网| 精品国产第一区二区三区观看体验| 亚洲美女免费在线| av电影天堂一区二区在线| 精品va天堂亚洲国产| 《视频一区视频二区| 日韩电影在线免费看| 91福利在线免费观看| 亚洲欧美在线高清| 99久久伊人久久99| 亚洲一区二区三区四区五区黄| 国产91在线观看| 亚洲人成在线观看一区二区| 成人污视频在线观看| 亚洲精品高清在线观看| 欧美艳星brazzers| 麻豆精品视频在线观看| 欧美不卡视频一区| 成人免费av资源| 亚洲成人在线免费| 欧美国产精品一区二区三区| 91免费观看在线| 老鸭窝一区二区久久精品| 26uuu精品一区二区在线观看| 99视频精品免费视频| 亚洲v中文字幕| 久久久久久久久久久电影| 91国产视频在线观看| 精品一区二区日韩| 一区二区三区精品久久久| 91精品国产高清一区二区三区 | 成人不卡免费av| 亚洲第一成人在线| 亚洲天堂精品视频| 国产亚洲精品精华液| 欧美一区二区三区视频免费 | 中文字幕乱码久久午夜不卡| 欧美日精品一区视频| av成人动漫在线观看| 麻豆成人在线观看| 免费国产亚洲视频| 久久99久久精品| 肉肉av福利一精品导航| 久久久国际精品| 在线观看一区日韩| 欧美性一区二区| 欧美亚洲一区二区在线观看| 成人动漫在线一区| 福利一区在线观看| 91精品视频网| 91啪九色porn原创视频在线观看| 国产一区二区精品久久91| 国产一本一道久久香蕉| 成人毛片老司机大片| 99久久久无码国产精品| 在线免费av一区| 欧美午夜精品理论片a级按摩| 成人黄色777网| 91成人免费电影| 日韩欧美中文一区二区| 欧美精品一区二区三区一线天视频 | 亚洲一区影音先锋| 国产白丝网站精品污在线入口 | 亚洲国产另类精品专区| 日韩主播视频在线| 99re视频精品| 日韩免费电影网站| 亚洲综合免费观看高清完整版 | 亚洲精选一二三| 麻豆精品在线观看| 欧美视频第二页| 国产精品久久久久影院| 奇米在线7777在线精品| 99国产精品久久久久久久久久| 日韩三级免费观看| 午夜免费欧美电影| 欧美欧美欧美欧美| 一区二区激情小说| 99vv1com这只有精品| 中文字幕第一区综合| 成人免费av在线| 91免费视频大全| 精品伦理精品一区| 日本美女一区二区三区| 欧美大白屁股肥臀xxxxxx| 午夜精品一区在线观看| 欧美老年两性高潮| 亚洲va欧美va人人爽| 欧美片在线播放| 日韩福利视频导航| 亚洲精品一区二区三区蜜桃下载| 视频一区中文字幕| 欧美精品一区二区在线播放| 国产成人av福利| 中文字幕亚洲不卡| 欧美在线观看一二区| 免费看日韩精品| 日本一区二区不卡视频| 欧美在线看片a免费观看| 日韩激情一二三区| 国产欧美一区二区三区沐欲| 91影视在线播放| 久久精品国产精品亚洲红杏| 国产精品美女久久久久高潮| 在线中文字幕一区二区| 久久99久久99精品免视看婷婷| 亚洲欧洲日产国码二区| 91精品在线麻豆| 色婷婷精品久久二区二区蜜臀av | 色综合久久综合网97色综合| 日韩黄色小视频| 久久一区二区三区四区| 欧美日韩精品欧美日韩精品一| 国产制服丝袜一区| 日韩精品亚洲一区二区三区免费| 久久久久国产成人精品亚洲午夜| 色综合视频一区二区三区高清| 美女精品一区二区| 免费观看在线色综合| 天天综合日日夜夜精品| 亚洲精品国产高清久久伦理二区| 国产精品丝袜一区| 久久综合久久综合久久综合| 日韩精品一区二区三区中文不卡 | 国产在线国偷精品免费看| 亚洲成人综合视频| 日本aⅴ精品一区二区三区 | 色狠狠一区二区| 91麻豆免费在线观看| 在线欧美日韩国产| 欧洲亚洲精品在线| 精品日本一线二线三线不卡| 欧美tickling挠脚心丨vk| 久久久久久夜精品精品免费| 亚洲国产高清不卡| 亚洲精品高清在线观看| 日韩激情中文字幕| 成人深夜在线观看| 在线不卡免费av| 亚洲同性gay激情无套| 日韩成人av影视| 成人激情动漫在线观看| 欧美三级在线看| 亚洲欧洲综合另类| 久久99精品久久久久久国产越南| 成人的网站免费观看| 欧美一区午夜视频在线观看| 最新中文字幕一区二区三区| 午夜精品福利视频网站| 91啪在线观看| 亚洲免费在线观看视频| 国产高清亚洲一区| 日韩午夜在线播放| 日本亚洲视频在线| www.av精品| 国产精品久久精品日日| 国产精品一二三四| 久久精品视频网| 国产精品一区二区黑丝| 8x福利精品第一导航| 视频在线观看91| 777午夜精品免费视频| 日韩精品亚洲一区| 日韩精品最新网址| 国产在线精品一区二区三区不卡| 欧美电影在线免费观看| 青青草97国产精品免费观看 | 精品国产乱码久久久久久久久| 亚洲综合在线五月| 日韩免费高清av| 波多野结衣中文字幕一区| 51午夜精品国产| 日本视频在线一区|