void ltc_init(void) { int cipherID; unsigned char key[ENCRYPTION_KEY_LENGTH]; #if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC) unsigned char IV[ENCRYPTION_BLOCK_LENGTH]; #endif TRACE_DEBUG("LTC: Initializing ...\n\r"); // Register cipher register_cipher(&CIPHER_DESC); cipherID = find_cipher(CIPHER_NAME); // Load key ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); #if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC) // Load IV ASCII2Hex(ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); #endif // Start decryption mode #if defined(ENCRYPTION_ECB) ecb_start(cipherID, key, ENCRYPTION_KEY_LENGTH, 0, &sECB); #elif defined(ENCRYPTION_CBC) cbc_start(cipherID, IV, key, ENCRYPTION_KEY_LENGTH, 0, &sCBC); #elif defined(ENCRYPTION_CTR) ctr_start(cipherID, IV, key, ENCRYPTION_KEY_LENGTH, 0, CTR_COUNTER_BIG_ENDIAN, &sCTR); #endif TRACE_DEBUG("LTC: Initialization done.\n\r"); }
void aes_hard_init_CTR(void) { unsigned char key[16]; unsigned char IV[16]; TRACE_DEBUG("aes_hard_init_CTR\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_CTR; // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AES_SetKey((unsigned int*)key); // Convert and load IV ASCII2Hex((unsigned char*)ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); AES_SetVector((unsigned int*)IV); }
void tdes_hard_init(void) { unsigned char key[ENCRYPTION_KEY_LENGTH]; TRACE_DEBUG("TDES/HARD: Initializing ...\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES/TDES undefined #endif // Load mode #if (ENCRYPTION_KEY_LENGTH == 24) AT91C_BASE_TDES->TDES_MR = AT91C_TDES_SMOD_MANUAL | TDES_MODE | AT91C_TDES_TDESMOD | TDES_CIPHER; #else AT91C_BASE_TDES->TDES_MR = AT91C_TDES_SMOD_MANUAL | TDES_MODE | AT91C_TDES_KEYMOD | AT91C_TDES_TDESMOD | TDES_CIPHER; #endif // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AT91C_BASE_TDES->TDES_KEY1WxR[0] = ((int *) key)[0]; AT91C_BASE_TDES->TDES_KEY1WxR[1] = ((int *) key)[1]; AT91C_BASE_TDES->TDES_KEY2WxR[0] = ((int *) key)[2]; AT91C_BASE_TDES->TDES_KEY2WxR[1] = ((int *) key)[3]; #if (ENCRYPTION_KEY_LENGTH == 24) AT91C_BASE_TDES->TDES_KEY3WxR[0] = ((int *) key)[4]; AT91C_BASE_TDES->TDES_KEY3WxR[1] = ((int *) key)[5]; #endif #if defined(ENCRYPTION_CBC) unsigned char IV[8]; ASCII2Hex((unsigned char*)ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); AT91C_BASE_TDES->TDES_IVxR[0] = ((int *) IV)[0]; AT91C_BASE_TDES->TDES_IVxR[1] = ((int *) IV)[1]; #elif defined(ENCRYPTION_CTR) // Convert IV ASCII2Hex((unsigned char*)ENCRYPTION_IV, CTR, ENCRYPTION_BLOCK_LENGTH); #endif TRACE_DEBUG("TDES/HARD: Initialization done.\n\r"); }
void aes_hard_init_ECB(void) { unsigned char key[ENCRYPTION_KEY_LENGTH]; TRACE_DEBUG("aes_hard_init_ECB\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC // PDC Mode #if (ENCRYPTION_KEY_LENGTH == 32) | AT91C_AES_KEYSIZE_256_BIT #endif #if (ENCRYPTION_KEY_LENGTH == 24) | AT91C_AES_KEYSIZE_192_BIT #endif | AT91C_AES_OPMOD_ECB; // ECB Electronic CodeBook mode // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AES_SetKey((unsigned int*)key, ENCRYPTION_KEY_LENGTH); }
void aes_hard_init_ECB(void) { unsigned char key[16]; TRACE_DEBUG("aes_hard_init_ECB\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode //AES_Configure(AT91C_AES_CIPHER, AT91C_AES_SMOD_MANUAL, AT91C_AES_OPMOD_ECB); AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_ECB; // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AES_SetKey((unsigned int*)key); }
void aes_hard_init(void) { unsigned char key[16]; #if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC) unsigned char IV[16]; #endif TRACE_DEBUG("AES/HARD: Initializing ...\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode #if defined(ENCRYPTION_ECB) //AES_Configure(AT91C_AES_CIPHER, AT91C_AES_SMOD_PDC, AT91C_AES_OPMOD_ECB); AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_ECB; #elif defined(ENCRYPTION_CBC) AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_CBC; #elif defined(ENCRYPTION_CTR) AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC | AT91C_AES_OPMOD_CTR; #endif // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AES_SetKey((unsigned int*)key); // Convert and load IV #if defined(ENCRYPTION_CTR) || defined(ENCRYPTION_CBC) ASCII2Hex((unsigned char*)ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); AES_SetVector((unsigned int*)IV); #endif TRACE_DEBUG("AES/HARD: Initialization done.\n\r"); }
void tdes_hard_init_CBC(void) { unsigned char key[TDES_ENCRYPTION_KEY_LENGTH]; TRACE_DEBUG("tdes_hard_init_CBC\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode #if (TDES_ENCRYPTION_KEY_LENGTH == 24) AT91C_BASE_TDES->TDES_MR = AT91C_TDES_SMOD_MANUAL | AT91C_TDES_OPMOD_CBC | AT91C_TDES_TDESMOD | 0; #else AT91C_BASE_TDES->TDES_MR = AT91C_TDES_SMOD_MANUAL | AT91C_TDES_OPMOD_CBC | AT91C_TDES_KEYMOD | AT91C_TDES_TDESMOD | 0; #endif // Convert and load key ASCII2Hex((unsigned char*)TDES_ENCRYPTION_KEY, key, TDES_ENCRYPTION_KEY_LENGTH); AT91C_BASE_TDES->TDES_KEY1WxR[0] = ((int *) key)[0]; AT91C_BASE_TDES->TDES_KEY1WxR[1] = ((int *) key)[1]; AT91C_BASE_TDES->TDES_KEY2WxR[0] = ((int *) key)[2]; AT91C_BASE_TDES->TDES_KEY2WxR[1] = ((int *) key)[3]; #if (TDES_ENCRYPTION_KEY_LENGTH == 24) AT91C_BASE_TDES->TDES_KEY3WxR[0] = ((int *) key)[4]; AT91C_BASE_TDES->TDES_KEY3WxR[1] = ((int *) key)[5]; #endif unsigned char IV[8]; ASCII2Hex((unsigned char*)ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); AT91C_BASE_TDES->TDES_IVxR[0] = ((int *) IV)[0]; AT91C_BASE_TDES->TDES_IVxR[1] = ((int *) IV)[1]; }
void aes_hard_init_CBC(void) { unsigned char key[ENCRYPTION_KEY_LENGTH]; unsigned char IV[ENCRYPTION_BLOCK_LENGTH]; TRACE_DEBUG("aes_hard_init_CBC\n\r"); // Activate peripheral clock #ifdef AT91C_ID_AES PMC_EnablePeripheral( AT91C_ID_AES ); #elif AT91C_ID_AESTDES PMC_EnablePeripheral( AT91C_ID_AESTDES ); #elif AT91C_ID_TDES PMC_EnablePeripheral( AT91C_ID_TDES ); #else #error AES undefined #endif // Load mode AT91C_BASE_AES->AES_MR = AT91C_AES_SMOD_PDC // PDC Mode #if (ENCRYPTION_KEY_LENGTH == 32) | AT91C_AES_KEYSIZE_256_BIT #endif #if (ENCRYPTION_KEY_LENGTH == 24) | AT91C_AES_KEYSIZE_192_BIT #endif | AT91C_AES_OPMOD_CBC; // Cipher Block Chaining mode // Convert and load key ASCII2Hex((unsigned char*)ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); AES_SetKey((unsigned int*)key, ENCRYPTION_KEY_LENGTH); // Convert and load IV ASCII2Hex((unsigned char*)ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); AES_SetVector((unsigned int*)IV); }
void ltc_init_3DES_CTR(void) { int cipherID; unsigned char key[ENCRYPTION_KEY_LENGTH]; unsigned char IV[ENCRYPTION_BLOCK_LENGTH]; TRACE_DEBUG("LTC: Initializing CTR...\n\r"); // Register cipher register_cipher(&des3_desc); cipherID = find_cipher("3des"); // Load key ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); // Load IV ASCII2Hex(ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); // Start decryption mode ctr_start(cipherID, IV, key, ENCRYPTION_KEY_LENGTH, 0, CTR_COUNTER_BIG_ENDIAN, &sCTR); TRACE_DEBUG("LTC: Initialization done.\n\r"); }
void ltc_init_AES_CBC(void) { int cipherID; unsigned char key[ENCRYPTION_KEY_LENGTH]; unsigned char IV[ENCRYPTION_BLOCK_LENGTH]; TRACE_DEBUG("LTC: Initializing CBC...\n\r"); // Register cipher register_cipher(&rijndael_desc); cipherID = find_cipher("rijndael"); // Load key ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); // Load IV ASCII2Hex(ENCRYPTION_IV, IV, ENCRYPTION_BLOCK_LENGTH); // Start decryption mode cbc_start(cipherID, IV, key, ENCRYPTION_KEY_LENGTH, 0, &sCBC); TRACE_DEBUG("LTC: Initialization done.\n\r"); }
void ltc_init_3DES_ECB(void) { int cipherID; unsigned char key[ENCRYPTION_KEY_LENGTH]; TRACE_DEBUG("LTC: Initializing ECB...\n\r"); // Register cipher register_cipher(&des3_desc); cipherID = find_cipher("3des"); // Load key ASCII2Hex(ENCRYPTION_KEY, key, ENCRYPTION_KEY_LENGTH); // Start decryption mode ecb_start(cipherID, key, ENCRYPTION_KEY_LENGTH, 0, &sECB); TRACE_DEBUG("LTC: Initialization done.\n\r"); }