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 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 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); }