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

📄 sblock_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		Disp("_IV_1st_ENC Success..\n");
		}
		else
		{
		Disp("AES");
		Disp("_IV_1st_ENC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("AES_CTR");
				Disp("_IV_1st_ENC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	
	// Decryption

	//SBLK_Init(AES, CBC, DEC);
	SBLK_Init_Test2(AES, CTR, ENC);
	SBLK_SetFifo(8, 4, 8, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF, 8);

	while(!SBLK_IsFifoTransDone());

	// Intermediate CTR Back-up
	Copy(0x7D1000B0, MID_BUF+0x20, 4);

	SBLK_GetDataFromTxFifo(INPUT_BUF, 8);
	//Copy((u32)uAesPlainText, GOLDEN_BUF, 16);
	uRet = Compare(INPUT_BUF, GOLDEN_BUF1, 8);
	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("AES_");
		Disp("_IV_1st_DEC Success..\n");
		}
		else
		{
		Disp("AES");
		Disp("_IV_1st_DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("AES_CTR");
				Disp("_IV_1st_DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}


	// 2nd Encryption 
	SBLK_Init_Test2(AES, CTR, ENC);
	Copy(MID_BUF, 0x7D1000B0, 4);	// Intermediate IV
		
	SBLK_SetFifo(8, 4, 8, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo((u32)uAesPlainText+0x20, 8);
	
	while(!SBLK_IsFifoTransDone());

	// Intermediate IV Back-up
	
	SBLK_GetDataFromTxFifo(OUTPUT_BUF+0x20, 8);
	
	//Copy((u32)uAesCipherText[CBC], GOLDEN_BUF, 16);
	uRet = Compare(OUTPUT_BUF+0x20, GOLDEN_BUF+0x20, 8);
	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("AES_");
		Disp("_IV_2nd_ENC Success..\n");
		}
		else
		{
		Disp("AES");
		Disp("_IV_2nd_ENC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("AES_CTR");
				Disp("_IV_2nd_ENC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

	// 2nd Decryption
	// Decryption

	SBLK_Init_Test2(AES, CTR, ENC);
	Copy(MID_BUF+0x20, 0x7D1000B0, 4);	// Intermediate IV
	SBLK_SetFifo(8, 4, 8, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF+0x20, 8);

	while(!SBLK_IsFifoTransDone());

	SBLK_GetDataFromTxFifo(INPUT_BUF+0x20, 8);
	//Copy((u32)uAesPlainText, GOLDEN_BUF, 16);
	uRet = Compare(INPUT_BUF+0x20, GOLDEN_BUF1+0x20, 8);
	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("AES_");
		Disp("_IV_2nd_DEC Success..\n");
		}
		else
		{
		Disp("AES");
		Disp("_IV_2nd_DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("AES_CTR");
				Disp("_IV_2nd_DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

	
}

void Test_AES_CONT_DEC(eFunction_Test eTest, oFunctionT_AutoVar oAutoVar)
{
	u32 uRet;

	//g_sblock_err=0;

	if(eTest == eTest_Manual)
	{
		printf("[SBLOCK - AES Continuos Decryption Test]\n");

	}
	else
	{
		
	}
	Copy((u32)uAesCipherText, GOLDEN_BUF, 16);
	Copy((u32)uAesPlainText, GOLDEN_BUF1, 16);
	
       ///////////////////////
	//ECB 128bit Decryption	
	SBLK_Init(AES, ECB, DEC);
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF, 4);

	while(((Inp32(0x7D800000)>>16)&0xFFFF)==0x4);	// Tx FIFO 1Word Read Done From AES
	
	SBLK_GetDataFromTxFifo(INPUT_BUF, 4);

	Outp32(0x7D400000, 0x4);
	Outp32(0x7D800000, 0x4);  // FIFO Reset
	uRet = Compare(INPUT_BUF, GOLDEN_BUF1, 4);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("ECB 128bit DEC Success..\n");
		}
		else
		{
		
		Disp("ECB 128bit DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("ECB 128bit DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	////////////////////////////////
	//ECB 128bit Continuous Decryption
	Outp32(0x7D100000, 0x118); 		// 128Bit ECB Continuous Decryption.
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF+0x10, 12);
	while(((Inp32(0x7D800000)>>25)&0xFF)==0x1);	// Transfer Done Polling
	
	SBLK_GetDataFromTxFifo(INPUT_BUF+0x10, 12);
	uRet = Compare(INPUT_BUF+0x10, GOLDEN_BUF1+0x10, 12);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("ECB 128bit Cont. DEC Success..\n");
		}
		else
		{
		
		Disp("ECB 128bit Cont. DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("ECB 128bit Cont. DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	
	

	//////////////////////////////////////////////

	Copy((u32)uAesCipherText+0x40, GOLDEN_BUF, 16);

	///////////////////////////////////////
	//CBC 128bit Decryption	
	SBLK_Init(AES, CBC, DEC);
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF, 4);

	while(((Inp32(0x7D800000)>>16)&0xFFFF)==0x4);	// Tx FIFO 1Word Read Done From AES
	
	Copy(0x7D1000A0, MID_BUF, 4);						// Intermedate IV Backup
	SBLK_GetDataFromTxFifo(INPUT_BUF, 4);

	Outp32(0x7D400000, 0x4);
	Outp32(0x7D800000, 0x4);  // FIFO Reset
	
	uRet = Compare(INPUT_BUF, GOLDEN_BUF1, 4);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("CBC 128bit DEC Success..\n");
		}
		else
		{
		
		Disp("CBC 128bit DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("CBC 128bit DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

	
	///////////////////////////////////////
	//ECB 128bit Continuous Decryption
	Outp32(0x7D100000, 0x128); 		// 128Bit CBC Continuous Decryption.
	Copy(MID_BUF, 0x7D1000A0, 4);		// Load IV 
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF+0x10, 12);
	while(((Inp32(0x7D800000)>>25)&0xFF)==0x1);	// Transfer Done Polling
	
	SBLK_GetDataFromTxFifo(INPUT_BUF+0x10, 12);


	uRet = Compare(INPUT_BUF+0x10, GOLDEN_BUF1+0x10, 12);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("CBC 128bit Cont. DEC Success..\n");
		}
		else
		{
		
		Disp("CBC 128bit Cont. DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("CBC 128bit Cont. DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	

	//////////////////////////////////////////////

	Copy((u32)uAesCipherText+0x80, GOLDEN_BUF, 16);


	//CBC 128bit Decryption	
	SBLK_Init(AES, CTR, ENC);
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF, 4);

	while(((Inp32(0x7D800000)>>16)&0xFFFF)==0x4);	// Tx FIFO 1Word Read Done From AES
	
	Copy(0x7D1000B0, MID_BUF, 4);						// Intermedate CTR Backup
	SBLK_GetDataFromTxFifo(INPUT_BUF, 4);

	Outp32(0x7D400000, 0x4);
	Outp32(0x7D800000, 0x4);  // FIFO Reset
	
	uRet = Compare(INPUT_BUF, GOLDEN_BUF1, 4);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("CTR 128bit DEC Success..\n");
		}
		else
		{
		
		Disp("CTR 128bit DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("CTR 128bit DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	
	
	//ECB 128bit Continuous Decryption
	Outp32(0x7D100000, 0x130); 		// 128Bit CBC Continuous Decryption.
	Copy(MID_BUF, 0x7D1000B0, 4);		// Load CTR
	SBLK_SetFifo(0xc, 4, 0xc, 4, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(GOLDEN_BUF+0x10, 12);
	while(((Inp32(0x7D800000)>>25)&0xFF)==0x1);	// Transfer Done Polling
	
	SBLK_GetDataFromTxFifo(INPUT_BUF+0x10, 12);


	uRet = Compare(INPUT_BUF+0x10, GOLDEN_BUF1+0x10, 12);


	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("CTR 128bit Cont. DEC Success..\n");
		}
		else
		{
		
		Disp("CTR 128bit Cont. DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				Disp("CTR 128bit Cont. DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

	
}

#if 0
void Test_AES_Temp(void)
{
	u32 uRet, i;

	// Encryption
	//SBLK_Init(AES, CBC, ENC);
	SBLK_Init_Test(AES, eAesOperMode, ENC);

	for (i=0; i<4; i++)
	{
		SBLK_PutDataToInReg((u32)uAesPlainText+i*4*4, 4, LASTBYTE_1ST);	// LASTBYTE => not affect to AES operating
		SBLK_StartByManual();

		while(!SBLK_IsOutputReady());

		SBLK_GetDataFromOutReg(OUTPUT_BUF+i*4*4, 4);
	}


	// Decryption
	if (eAesOperMode == CTR)
		SBLK_Init_Test(AES, eAesOperMode, ENC);
	else
		SBLK_Init_Test(AES, eAesOperMode, DEC);

	for (i=0; i<4; i++)
	{
		SBLK_PutDataToInReg(OUTPUT_BUF+i*4*4, 4, LASTBYTE_1ST);
		SBLK_StartByManual();

		while(!SBLK_IsOutputReady());

		SBLK_GetDataFromOutReg(GOLDEN_BUF+i*4*4, 4);
	}

	Copy((u32)uAesPlainText, INPUT_BUF, 16);		// Original Data
	uRet = Compare(INPUT_BUF, GOLDEN_BUF, 16);					// Original ->ENC->DEC
	if (uRet)
	{
		Disp("AES_");
		DispOperMode(eAesOperMode);
		Disp("_CPU Success..\n");
	}
	else
	{
		Disp("AES");
		DispOperMode(eAesOperMode);
		Disp("_CPU Failed..\n");
	}
}


void Test_DES_Temp(void)
{
	u32 uRet, i;

	// Encryption
	SBLK_Init_Test(DES, eDesOperMode, ENC);

	for (i=0; i<8; i++)
	{
		SBLK_PutDataToInReg((u32)uDesPlainText+i*4*2, 2, LASTBYTE_1ST);
		SBLK_StartByManual();

		while(!SBLK_IsOutputReady());

		SBLK_GetDataFromOutReg(OUTPUT_BUF+i*4*2, 2);
	}


	// Decryption
	SBLK_Init_Test(DES, eDesOperMode, DEC);

	for (i=0; i<8; i++)
	{
		SBLK_PutDataToInReg(OUTPUT_BUF+i*4*2, 2, LASTBYTE_1ST);
		SBLK_StartByManual();

		while(!SBLK_IsOutputReady());

		SBLK_GetDataFromOutReg(GOLDEN_BUF+i*4*2, 2);
	}
	Copy((u32)uDesPlainText, INPUT_BUF, 16);
	uRet = Compare(INPUT_BUF, GOLDEN_BUF, 16);
	if (uRet)
	{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_CPU_(TDES)Success..\n");
	}
	else
	{
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_CPU_(TDES) Failed..\n");
	}
}


void Temp(void)
{
	u32 uRet,i;

	SBLK_Init(HASH, SHA1, ENC);

	//SHA1 - #0
	/*
	for(i=0; i<7; i++){
	SBLK_PutDataToInReg((u32)uSha1PlainText16, 16, LASTBYTE_4TH);
	}
	SBLK_PutDataToInReg((u32)uSha1PlainText16, 9, LASTBYTE_4TH); 		// bfb94b76, 5f566e1b
	*/
	SBLK_PutDataToInReg((u32)uSha1PlainText121, 25, LASTBYTE_4TH);
	
	while(!SBLK_IsOutputReady());

	SBLK_GetDataFromOutReg(OUTPUT_BUF, 5);

	Copy((u32)uSha1CipherText1, GOLDEN_BUF, 5);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 5);
	if (uRet)
	{
		Disp("HASH_SHA1_CPU 121 \n");
		
	}
	else
	{
		Disp("HASH_SHA1_CPU 121  \n");
	}


	Disp(" \n");
	
}


void Temp3(void)
{
	u32 uRet, i ;

	SBLK_Init(HASH, SHA1, ENC);
	
	//SBLK_SetFifo(0x79, 0x30010, 5, 0x10, LASTBYTE_4TH);
	SBLK_SetFifo(0x79, 0x30010, 5, 0x10, LASTBYTE_4TH);
	SBLK_StartFifo();
	
	for(i=0;i<6;i++){
	//Wait Write Enable...		
	SBLK_PutDataToRxFifo((u32)uSha1PlainText16, 16);
	}
	SBLK_PutDataToRxFifo((u32)uSha1PlainText16, 16);
	SBLK_PutDataToRxFifo((u32)uSha1PlainText16, 9);
	while(!SBLK_IsFifoTransDone());

	
	SBLK_GetDataFromTxFifo(OUTPUT_BUF, 5);
	
	Copy((u32)uSha1CipherText16, GOLDEN_BUF, 5);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 5);
	if (uRet)
	{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		if (eHashOperMode == HMAC)
			Disp("_FIFO 19 Success..\n");
		else if (eHashOperMode == SHA1)
			Disp("_FIFO 16 Success..\n");
	}
	else
	{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		if (eHashOperMode == HMAC)
			Disp("_FIFO 19 Failed..\n");
		else if (eHashOperMode == SHA1)
			Disp("_FIFO 16 Failed..\n");
	}

	
}

#endif

#if 0
void SBlock_AutoT(void)
{
	u32 usel;
	
	printf("\n[SBLOCK Test]\n");
	
	///////////////////////////////////////
	/////////  AES Test   ///////////////////
	for(usel=1;usel<4;usel++)
	{
		if (usel == 1) eAesOperMode = ECB;
		else if (usel == 2) eAesOperMode = CBC;
		else if (usel == 3) eAesOperMode = CTR;	
	Test_AES_CPU();
	Test_AES_FIFO();
	Test_AES_DMA();

	}

	Test_CBC_IV_FIFO();
	Test_CTR_Counter();
	Test_CTR_ICTR_FIFO();
	Test_AES_CONT_DEC();

	///////////////////////////////////////
	/////////  DES Test   ///////////////////
	for(usel=1;usel<3;usel++)
	{
		if (usel == 1) eDesOperMode = ECB;
		else if (usel == 2) eDesOperMode = CBC;
	Test_DES_CPU();
	Test_DES_FIFO();
	Test_DES_DMA();
	}

	///////////////////////////////////////
	/////////  HASH Test   ///////////////////
	for(usel=1;usel<3;usel++)
	{
		if (usel == 1) eHashOperMode = HMAC;
		else if (usel == 2) eHashOperMode = SHA1;
	Test_HASH_CPU();
	Test_HASH_FIFO();
	Test_HASH_DMA();

	}

	Test_HASH_CPU_Added();
	Test_SHA1_INTERMEDIATE()

⌨️ 快捷键说明

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