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

📄 sblock.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 3 页
字号:
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			break;

		case 3:
	 		Copy((u32)uAesKey, rAES_RX_KEY1, 4); 			// install aes key
	 		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter, rAES_RX_CTR1, 4); 	// install ctr data 
			printf(" Choose Counter :  0 : 16bit,  1:32bit,  2:64bits  \n");
			uSel1 = GetIntNum();

			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			uReg |= (uSel1<<6);
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			printf("rAES_RX_CRT 0x%x\n", Inp32(0x7D100000));
			break;



	 	}


		
	}
	else if (oSblk.m_eSblkType == DES)
	{
		Copy((u32)uDesKey, rDES_RX_KEY1_0, 6); 		// install des key
		Copy((u32)uDesIV, rDES_RX_IV0, 2); 			// install des iv

		uReg = ((eDirSel == ENC)? (0<<2) : (1<<2))|(1<<5)|(1<<1);		// TDES
		if (oSblk.m_eOperMode == ECB)
			uReg |= (1<<3);
		else if (oSblk.m_eOperMode == CBC)
			uReg |= (2<<3);
		else
			Assert(0);
		Outp32(rDES_RX_CTRL, uReg);
	}
	else if (oSblk.m_eSblkType == HASH)
	{
		if (oSblk.m_eOperMode == HMAC)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<2)|(0<<0)); // start + key mode

			pSrc = (u32 *)uHmacKey;
			for(i=0; i<16; i++)
				*(u32 *)rHASH_RX_DAT = *pSrc++;

			Outp32(rHASH_RX_CTRL, (0<<2)); // text mode
		}
		else if (oSblk.m_eOperMode == SHA1)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<0));
		}
		else if(oSblk.m_eOperMode == PRNG)
		{
			Outp32(rHASH_RX_CTRL, SEED_SET_ENABLE|HASH_START|(2<<0));
			Copy((u32)uPrngSeed, rPRNG_SEED_DAT1, 10);
		}
		else
		{
			Assert(0);
		}
	}

	Outp32(rDNI_CFG, 0xFFFFFF00);
}


void SBLK_Init_Test2(SBLK_TYPE eSblkType, OPER_MODE eOperMode, DIR_SEL eDirSel)
{
	u32 uReg;
	u32 *pSrc;
	int i;

	oSblk.m_eSblkType = eSblkType;
	oSblk.m_eOperMode = eOperMode;

	SBLK_Reset();

	if (oSblk.m_eSblkType == AES)
	{
		

	 switch(g_AES_Key)
	 	{
		case 0:
	 		Copy((u32)uAesKey, rAES_RX_KEY1, 4); 			// install aes key
			Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);

			//printf("Selected 128 Key Option \n");
			break;

		case 1:
	 		Copy((u32)uAesKey192, rAES_RX_KEY1, 6); 			// install aes key
	 		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			uReg |= (1<<1);
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			//printf("Selected 196 Key Option \n");
			break;
		
		case 2:
	 		Copy((u32)uAesKey256, rAES_RX_KEY1, 8); 			// install aes key
	 		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			uReg |= (2<<1);
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			//printf("Selected 256 Key Option \n");
			break;

	 	}


		
	}
	else if (oSblk.m_eSblkType == DES)
	{
		Copy((u32)uDesKey, rDES_RX_KEY1_0, 6); 		// install des key
		Copy((u32)uDesIV, rDES_RX_IV0, 2); 			// install des iv

		uReg = ((eDirSel == ENC)? (0<<2) : (1<<2))|(1<<5)|(1<<1);		// TDES
		if (oSblk.m_eOperMode == ECB)
			uReg |= (1<<3);
		else if (oSblk.m_eOperMode == CBC)
			uReg |= (2<<3);
		else
			Assert(0);
		Outp32(rDES_RX_CTRL, uReg);
	}
	else if (oSblk.m_eSblkType == HASH)
	{
		if (oSblk.m_eOperMode == HMAC)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<2)|(0<<0)); // start + key mode

			pSrc = (u32 *)uHmacKey;
			for(i=0; i<16; i++)
				*(u32 *)rHASH_RX_DAT = *pSrc++;

			Outp32(rHASH_RX_CTRL, (0<<2)); // text mode
		}
		else if (oSblk.m_eOperMode == SHA1)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<0));
		}
		else if(oSblk.m_eOperMode == PRNG)
		{
			Outp32(rHASH_RX_CTRL, SEED_SET_ENABLE|HASH_START|(2<<0));
			Copy((u32)uPrngSeed, rPRNG_SEED_DAT1, 10);
		}
		else
		{
			Assert(0);
		}
	}

	Outp32(rDNI_CFG, 0xFFFFFF00);
}

void SBLK_Init_Test3(SBLK_TYPE eSblkType, OPER_MODE eOperMode, DIR_SEL eDirSel)
{
	u32 uReg;
	u32 *pSrc;
	int i;

	oSblk.m_eSblkType = eSblkType;
	oSblk.m_eOperMode = eOperMode;

	SBLK_Reset();

	if (oSblk.m_eSblkType == AES)
	{
		

	 switch(g_AES_Key)
	 	{
		case 0:
	 		Copy((u32)uAesKey, rAES_RX_KEY1, 4); 			// install aes key
			Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter_, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);

			//printf("Selected 128 Key Option \n");
			break;

		case 1:
	 		Copy((u32)uAesKey192, rAES_RX_KEY1, 6); 			// install aes key
	 		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter_+0x10, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			uReg |= (1<<1);
			uReg |= (1<<6);			// 32bit
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			
			//printf("Selected 196 Key Option \n");
			break;
		
		case 2:
	 		Copy((u32)uAesKey256, rAES_RX_KEY1, 8); 			// install aes key
	 		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
			Copy((u32)uAesInitCounter_+0x20, rAES_RX_CTR1, 4); 	// install ctr data 


			uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
			uReg |= (2<<1);
			uReg |= (2<<6);			// 64bit
			if (oSblk.m_eOperMode == ECB)
				uReg |= (1<<4);
			else if (oSblk.m_eOperMode == CBC)
				uReg |= (2<<4);
			else if (oSblk.m_eOperMode == CTR)
				uReg |= (3<<4);
			else
				Assert(0);
			Outp32(rAES_RX_CTRL, uReg);
			//printf("Selected 256 Key Option \n");
			break;

	 	}


		
	}
	else if (oSblk.m_eSblkType == DES)
	{
		Copy((u32)uDesKey, rDES_RX_KEY1_0, 6); 		// install des key
		Copy((u32)uDesIV, rDES_RX_IV0, 2); 			// install des iv

		uReg = ((eDirSel == ENC)? (0<<2) : (1<<2))|(1<<5)|(1<<1);		// TDES
		if (oSblk.m_eOperMode == ECB)
			uReg |= (1<<3);
		else if (oSblk.m_eOperMode == CBC)
			uReg |= (2<<3);
		else
			Assert(0);
		Outp32(rDES_RX_CTRL, uReg);
	}
	else if (oSblk.m_eSblkType == HASH)
	{
		if (oSblk.m_eOperMode == HMAC)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<2)|(0<<0)); // start + key mode

			pSrc = (u32 *)uHmacKey;
			for(i=0; i<16; i++)
				*(u32 *)rHASH_RX_DAT = *pSrc++;

			Outp32(rHASH_RX_CTRL, (0<<2)); // text mode
		}
		else if (oSblk.m_eOperMode == SHA1)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<0));
		}
		else if(oSblk.m_eOperMode == PRNG)
		{
			Outp32(rHASH_RX_CTRL, SEED_SET_ENABLE|HASH_START|(2<<0));
			Copy((u32)uPrngSeed, rPRNG_SEED_DAT1, 10);
		}
		else
		{
			Assert(0);
		}
	}

	Outp32(rDNI_CFG, 0xFFFFFF00);
}

void SBLK_Init_T(SBLK_TYPE eSblkType, OPER_MODE eOperMode, DIR_SEL eDirSel)
{
	u32 uReg;
	u32 *pSrc;
	int i;

	oSblk.m_eSblkType = eSblkType;
	oSblk.m_eOperMode = eOperMode;

	SBLK_Reset();

	if (oSblk.m_eSblkType == AES)
	{
		Copy((u32)uAesKey, rAES_RX_KEY1, 4); 			// install aes key
		Copy((u32)uAesIV, rAES_RX_IV1, 4); 			// install aes iv
		Copy((u32)uAesInitCounter, rAES_RX_CTR1, 4); 	// install ctr data 

		uReg = (eDirSel == ENC)? (0<<3) : (1<<3);
		if (oSblk.m_eOperMode == ECB)
			uReg |= (1<<4);
		else if (oSblk.m_eOperMode == CBC)
			uReg |= (2<<4);
		else if (oSblk.m_eOperMode == CTR)
			uReg |= (3<<4);
		else
			Assert(0);
		Outp32(rAES_RX_CTRL, uReg);
	}
	else if (oSblk.m_eSblkType == DES)
	{
		Copy((u32)uDesKey, rDES_RX_KEY1_0, 6); 		// install des key
		Copy((u32)uDesIV, rDES_RX_IV0, 2); 			// install des iv

		uReg = ((eDirSel == ENC)? (0<<2) : (1<<2))|(0<<5)|(1<<1);
		if (oSblk.m_eOperMode == ECB)
			uReg |= (1<<3);
		else if (oSblk.m_eOperMode == CBC)
			uReg |= (2<<3);
		else
			Assert(0);
		Outp32(rDES_RX_CTRL, uReg);
	}
	else if (oSblk.m_eSblkType == HASH)
	{
		if (oSblk.m_eOperMode == HMAC)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<2)|(0<<0)); // start + key mode

			pSrc = (u32 *)uHmacKey;
			for(i=0; i<16; i++)
				*(u32 *)rHASH_RX_DAT = *pSrc++;

			Outp32(rHASH_RX_CTRL, (0<<2)); // text mode
		}
		else if (oSblk.m_eOperMode == SHA1)
		{
			Outp32(rHASH_RX_CTRL, HASH_START|(1<<8)|(1<<0));
		}
		else if(oSblk.m_eOperMode == PRNG)
		{
			Outp32(rHASH_RX_CTRL, SEED_SET_ENABLE|HASH_START|(2<<0));
			Copy((u32)uPrngSeed, rPRNG_SEED_DAT1, 10);
		}
		else
		{
			Assert(0);
		}
	}

	Outp32(rDNI_CFG, 0xFFFFFF00);
}


void SBLK_PutDataToInReg1(u32 uSrcAddr, u32 uSize, LVALID_BYTE eLValid)
{
	u32 i, uReg;
	u32 *pSrcAddr, *pDstAddr;

	pSrcAddr = (u32 *)uSrcAddr;

	if (oSblk.m_eSblkType == AES)
	{
		pDstAddr = (u32 *)rAES_RX_DIN1;
		for (i=uSize; i>0; i--)
			Outp32(pDstAddr++, *pSrcAddr++);
	}
	else if (oSblk.m_eSblkType == DES)
	{
		pDstAddr = (u32 *)rDES_RX_IN0;
		for (i=uSize; i>0; i--)
			Outp32(pDstAddr++, *pSrcAddr++);
	}
	else
	{
		printf("SHA1 Intermediate\n");
		Outp32(rHASH_RX_CTRL, 0x109);
		for (i=uSize; i>0; i--)
		{
		//Outp32(rHASH_RX_CTRL, 0x09);	
			if(i == 1)
			{
				uReg =
					((eLValid == LASTBYTE_1ST)? (0<<6) :
					(eLValid == LASTBYTE_2ND)? (1<<6) :
					(eLValid == LASTBYTE_3RD)? (2<<6) : (3<<6)) |
					HASH_INPUT_FINISHED |
					((oSblk.m_eOperMode == HMAC)? (0<<0) :
					(oSblk.m_eOperMode == SHA1)? (1<<0) : (2<<0));

				uReg |= (1<<8);	
				printf("RX_CTRL = 0x%x\n",uReg);
				
				Outp32(rHASH_RX_CTRL, 0xD1);
				//Outp32(rHASH_RX_CTRL, uReg); // inform hash of last data input
			}
			Outp32(rHASH_RX_DAT, *pSrcAddr++);
			
		}
	}
}

⌨️ 快捷键说明

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