⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cprm_test.c

📁 GM8120 linux driver.
💻 C
📖 第 1 页 / 共 2 页
字号:
									BufPtr = BufPtr + length - 4;		    }		    else		    	break;		    }		   					fclose( stream );		        	}    else      	printf("File could not be opened\n" );		CPRM_Process_MKB(TmpBuf, &mediaKey);	printf("mediakey = %0.8x%0.8x\n",(UINT32)mediaKey,(UINT32)(mediaKey >> 32));	free(TmpBuf);		return OK_COMMAND;}UINT32 TstAlgorithmCmd(CommandTableStruct_T *CmdTable){	UINT32 Response[2];	UINT32 Buf[6];		#ifdef Debug_CPRM_Message				printf("Key = 0x5e916a, 0xef341fa3\n");	printf("Input = 0x89067f2b, 0xe2a60d6f\n");#endif	Buf[1] = 0x89067f2b;	Buf[0] = 0xe2a60d6f;				CPRM_C2_E(0x5e916a, 0xef341fa3, Buf, 1);#ifdef license_4C_Test	if((Buf[1] != 0x2fe75ad4) || (Buf[0] != 0xa8c1eae2))#else	if((Buf[1] != 0x8fe65fe4) || (Buf[0] != 0xf7ba8005))#endif			printf("CPRM_C2_E fail\n");	else		printf("CPRM_C2_E pass\n");			CPRM_C2_D(0x5e916a, 0xef341fa3, Buf, 1);		if((Buf[1] != 0x89067f2b) || (Buf[0] != 0xe2a60d6f))		printf("CPRM_C2_D fail\n");	else		printf("CPRM_C2_D pass\n");#ifdef Debug_CPRM_Message	printf("Key = 0x7cb3c4, 0xdb094713\n");	printf("Input = 0xa24632d8, 0x24320844, 0x7d8111df, 0x8ce24172, 0x76be42d7, 0x0db14418\n");#endif		Buf[0] = 0x24320844;	Buf[1] = 0xa24632d8;	Buf[2] = 0x8ce24172;		Buf[3] = 0x7d8111df;	Buf[4] = 0x0db14418;	Buf[5] = 0x76be42d7;					CPRM_C2_ECBC(0x7cb3c4, 0xdb094713, Buf, 3);	#ifdef license_4C_Test	if((Buf[1] != 0x41a58620) || (Buf[0] != 0x7cd88c65) || 	   (Buf[3] != 0x108d6fb9) || (Buf[2] != 0xeae7c9c7) || 	   (Buf[5] != 0x87e87358) || (Buf[4] != 0x9e2135e8))#else		if((Buf[1] != 0x50fc09d1) || (Buf[0] != 0x691c5102) || 	   (Buf[3] != 0x541d322f) || (Buf[2] != 0x68e7fd79) || 	   (Buf[5] != 0x91a80c3d) || (Buf[4] != 0x9d9f310d))#endif	   		printf("CPRM_C2_ECBC fail\n");	else		printf("CPRM_C2_ECBC pass\n");				CPRM_C2_DCBC(0x7cb3c4, 0xdb094713, Buf, 3);#ifdef Debug_CPRM_Message		printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[1], Buf[0]);		printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[3], Buf[2]);	printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[5], Buf[4]);	#endif		if((Buf[1] != 0xa24632d8) || (Buf[0] != 0x24320844) || 	   (Buf[3] != 0x7d8111df) || (Buf[2] != 0x8ce24172) || 	   (Buf[5] != 0x76be42d7) || (Buf[4] != 0x0db14418))		printf("CPRM_C2_DCBC fail\n");	else		printf("CPRM_C2_DCBC pass\n");		CPRM_C2_G(0xc61f84, 0x36cc3ce5, 0x16e0b4c4, 0x5dfeeae7, Response);	#ifdef license_4C_Test		if((Response[1] != 0x22b567e5) || (Response[0] != 0xccaa3179))#else	if((Response[1] != 0x33a48465) || (Response[0] != 0xbadd8256))#endif			printf("CPRM_C2_G fail\n");	else		printf("CPRM_C2_G pass\n");			return OK_COMMAND;}UINT32 EncryptFileCmd(CommandTableStruct_T *CmdTable){	FILE *src;        	UINT32 *Buf,file_length = 0, tmp_length;        	UINT32 dsc;        	UINT32 ReadSize;   					#ifdef license_4C_Test	  #ifndef AUTO_CBC_DMAmode						//Deal With Protect Area File		if(!fLib_WriteTKMG(&fLib_ProtectAreaCard, &fLib_CPRMAudio))	{		printf("Can not found SD CPRM Protected Area!!!\n");		return FALSE;	}#endif	#endif		//Deal With User Area File	        	if ((dsc = fLib_OpenFile(CmdTable->Argu[0].Str, 4, 0)) == NULL) 	{ 		printf("Can not open file %s\n", CmdTable->Argu[0].Str);       		return FALSE;	        	 	} 	      		 	//Assign data into buffer, only for demo  	//////////////////////////////////////////////////////	if ((src = fopen("c:\\FREAD.TXT", "rb")) == NULL)   	{   		printf("Can not open c:\\FREAD.TXT\n");    		fclose(dsc);				return FALSE;	     		} 	   	Buf = malloc(10240); 	  	while((ReadSize = fread(Buf, 1, 10240, src)) > 0)   	 	file_length += ReadSize;  	free(Buf);  	fclose(src);    	src = fopen("c:\\FREAD.TXT", "rb");     	  	Buf = malloc(file_length); 	          	fread(Buf, 1, file_length, src);   	            if((file_length % 64) != 0)    	tmp_length = file_length - (file_length % 64);     else    	tmp_length = file_length; 	//////////////////////////////////////////////////////     	  	            #ifdef AUTO_CBC_DMAmode 	*(&fLib_SDCard.AUTO_CBC) = TRUE;  		              	if(fLib_WriteCPRMFile(dsc, Buf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0)  	{  		printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str);  		 		*(&fLib_SDCard.AUTO_CBC) = FALSE;  		    	free(Buf);  		fclose(src);         		fLib_CloseFile(dsc); 		    	return FALSE;      	  	} 	  	  	*(&fLib_SDCard.AUTO_CBC) = FALSE;   	#else      			#ifdef AUTO_CBC_PIOmode 		*(&fLib_SDCard.AUTO_CBC) = TRUE;  			              		if(fLib_WriteCPRMFile(dsc, Buf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0) 	 	{	  		printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str);	  		 			*(&fLib_SDCard.AUTO_CBC) = FALSE;  			    	free(Buf);  			fclose(src);         			fLib_CloseFile(dsc); 				    	return FALSE;      		  	}	 	  		  	*(&fLib_SDCard.AUTO_CBC) = FALSE;	#else  	     				//64 bit = 8 byte one time		if(!CPRM_C2_ECBC(fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0], Buf, tmp_length / 8))		{	       	printf("CPRM_C2_ECBC fail\n"); 	    	free(Buf);     		  	fclose(src);         		 	fLib_CloseFile(dsc); 	       	return FALSE;  				}	    if(fLib_WriteFile(dsc, Buf, file_length) != 0) 	    {			printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str); 	        		     	free(Buf);     			fclose(src);         			fLib_CloseFile(dsc);      	              	     	return FALSE; 	                		    } 	     #endif   	#endif		free(Buf);   		          	fclose(src);          	fLib_CloseFile(dsc);   	 	        	return TRUE;	}UINT32 DecryptFileCmd(CommandTableStruct_T *CmdTable){	FILE *src;	UINT32 *Buf,*DescryptBuf,i,file_length = 0;               	UINT32 dsc;  	BOOL flag = TRUE;			//Deal With User Area File        	           	if ((dsc = fLib_OpenFile(CmdTable->Argu[0].Str, 0, 0)) == NULL)  	{        	                    	printf("Can not open file %s\n", CmdTable->Argu[0].Str);     	return FALSE;	        		}     file_length = fLib_FileLen(dsc);  	  	DescryptBuf = malloc(file_length);  	 	//Assign data into buffer, only for demo  	//////////////////////////////////////////////////////		    if ((src = fopen("c:\\FREAD.TXT", "rb")) == NULL)    	{  		printf("Can not open file c:\\FREAD.TXT\n");      	free(DescryptBuf); 	    	fLib_CloseFile(dsc);    		         		return FALSE;        	 	}      	    	Buf = malloc(file_length);  	  	  	fread(Buf, 1, file_length, src);     //////////////////////////////////////////////////////	        if((file_length % 64) != 0)    	file_length = file_length - (file_length % 64);     	 	     	 	 	  	#ifdef AUTO_CBC_DMAmode 	*(&fLib_SDCard.AUTO_CBC) = TRUE;          	if(fLib_ReadCPRMFile(dsc, DescryptBuf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0)  	{    	printf("Can not Read file %s\n", CmdTable->Argu[0].Str);    	 	 	*(&fLib_SDCard.AUTO_CBC) = FALSE;   	     	free(Buf);      		free(DescryptBuf);  		fclose(src);	 	fLib_CloseFile(dsc);          	              	return FALSE;	                	    }                    	*(&fLib_SDCard.AUTO_CBC) = FALSE;  	#else  	        	#ifdef AUTO_CBC_PIOmode 		*(&fLib_SDCard.AUTO_CBC) = TRUE;	          		if(fLib_ReadCPRMFile(dsc, DescryptBuf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0)	  	{	    	printf("Can not Read file %s\n", CmdTable->Argu[0].Str);	    		 	 	*(&fLib_SDCard.AUTO_CBC) = FALSE;   		     	free(Buf);   	   		free(DescryptBuf);  			fclose(src);		 	fLib_CloseFile(dsc); 	         	        	      	return FALSE;	                		    }                  	  	*(&fLib_SDCard.AUTO_CBC) = FALSE;	  		#else	  		                	    if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) 	    {	    	printf("Can not Read file %s\n", CmdTable->Argu[0].Str);	       	free(Buf);   	       	free(DescryptBuf); 			fclose(src);		 	fLib_CloseFile(dsc);	       	return FALSE;	                		    }  		    	    		//64 bit = 8 byte one time		if(!CPRM_C2_DCBC(fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0], DescryptBuf, file_length / 8))		{	     	printf("CPRM_C2_DCBC fail\n");	       	free(Buf);   	       	free(DescryptBuf);   			fclose(src);			fLib_CloseFile(dsc);	       	return FALSE;	                		   	}   	   	  	#endif#endif	 	//Assign data into buffer, only for demo  	//////////////////////////////////////////////////////			                   	for (i = 0; i < file_length / 4; i++)    	{                	   		if(*(Buf + i) != *(DescryptBuf + i))    		{      		printf("Compare Fail!, Addr = %0.3x, C = %0.8x, F = %0.8x\n",i*4,*(Buf + i),*(DescryptBuf + i));        		flag = FALSE;      		break;  		}	 	                	  	} 	  		if (flag)		printf("Compare Pass\n");	else		printf("Compare Fail\n"); 		//////////////////////////////////////////////////////		  	free(Buf);    	free(DescryptBuf);	       	fclose(src); 	fLib_CloseFile(dsc);   	   	return TRUE;        }UINT32 TstPLMCmd(CommandTableStruct_T *CmdTable){	UINT32 *DescryptBuf,file_length = 0;               	UINT32 dsc;		  		if((dsc = fLib_OpenFile( "c:\\SD_AUDIO\\SD_AUDIO.PLM", 0, 0)) != NULL )	{			    file_length = fLib_FileLen(dsc);  		  	DescryptBuf = malloc(file_length);			    if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) 	    {	    	printf("Can not Read file c:\\SD_AUDIO\\SD_AUDIO.PLM\n");	       	free(DescryptBuf); 		 	fLib_CloseFile(dsc);	       	return FALSE;	                		    }		            	}    else    {      	printf("File c:\\SD_AUDIO\\SD_AUDIO.PLM not be found\n");	      	return FALSE;    }      	        	if(!SD_PLMGParse(&fLib_CPRMAudio, DescryptBuf, file_length))	{		free(DescryptBuf);		return FALSE;	}		free(DescryptBuf);		return OK_COMMAND;}UINT32 TstTKMCmd(CommandTableStruct_T *CmdTable){	UINT32 *DescryptBuf,file_length = 0;               	UINT32 dsc;		  		if((dsc = fLib_OpenFile( "c:\\SD_AUDIO\\SD_AUDIO.TKM", 0, 0)) != NULL )	{			    file_length = fLib_FileLen(dsc);  		  	DescryptBuf = malloc(file_length);			    if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) 	    {	    	printf("Can not Read file c:\\SD_AUDIO\\SD_AUDIO.TKM\n");	       	free(DescryptBuf); 		 	fLib_CloseFile(dsc);	       	return FALSE;	                		    }		            	}    else    {      	printf("File c:\\SD_AUDIO\\SD_AUDIO.TKM not be found\n");	      	return FALSE;    }      	        	if(!SD_TrackMGParse(&fLib_CPRMAudio, DescryptBuf, file_length))	{		free(DescryptBuf);		return FALSE;	}		free(DescryptBuf);		return OK_COMMAND;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -