AES example for SAM.
This file defines a useful set of functions for the AES on SAM devices.
Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.
#include <asf.h>
#include <string.h>
Macros | |
#define | AES_EXAMPLE_REFBUF_SIZE 4 |
Functions | |
static void | aes_callback (void) |
The AES interrupt call back function. More... | |
static void | cbc_mode_test (void) |
CBC mode encryption and decryption test. More... | |
static void | cfb128_mode_test (void) |
CFB128 mode encryption and decryption test. More... | |
static void | configure_console (void) |
Configure serial console. More... | |
static void | ctr_mode_test (void) |
CTR mode encryption and decryption test. More... | |
static void | display_menu (void) |
Display the user menu on the terminal. More... | |
static void | ecb_mode_test (void) |
ECB mode encryption and decryption test. More... | |
int | main (void) |
The main function. More... | |
static void | ofb_mode_test (void) |
OFB mode encryption and decryption test. More... | |
Variables | |
struct aes_config | g_aes_cfg |
AES configuration. More... | |
static uint32_t | output_data [AES_EXAMPLE_REFBUF_SIZE] |
volatile bool | state = false |
sample data from NIST-800-38A appendix F | |
uint32_t | ref_plain_text [AES_EXAMPLE_REFBUF_SIZE] |
Reference plain data. More... | |
uint32_t | ref_cipher_text_ecb [AES_EXAMPLE_REFBUF_SIZE] |
Reference ECB cipher data. More... | |
uint32_t | ref_cipher_text_cbc [AES_EXAMPLE_REFBUF_SIZE] |
Reference CBC cipher data. More... | |
uint32_t | ref_cipher_text_cfb128 [AES_EXAMPLE_REFBUF_SIZE] |
Reference CFB128 cipher data. More... | |
uint32_t | ref_cipher_text_ofb [AES_EXAMPLE_REFBUF_SIZE] |
Reference OFB cipher data. More... | |
uint32_t | ref_cipher_text_ctr [AES_EXAMPLE_REFBUF_SIZE] |
Reference CTR cipher data. More... | |
const uint32_t | key128 [4] |
Cipher 128 bits key array. More... | |
const uint32_t | init_vector [4] |
Init vector array for ECB, CBC, CFB128 and OFB mode. More... | |
const uint32_t | init_vector_ctr [4] |
Init vector array for CTR mode. More... | |
#define AES_EXAMPLE_REFBUF_SIZE 4 |
|
static |
The AES interrupt call back function.
References aes_read_output_data(), output_data, and state.
Referenced by main().
|
static |
CBC mode encryption and decryption test.
References AES_AUTO_START, AES_CBC_MODE, AES_CFB_SIZE_128, AES_DECRYPTION, AES_ENCRYPTION, AES_KEY_SIZE_128, aes_set_config(), aes_write_initvector(), aes_write_input_data(), aes_write_key(), aes_config::cfb_size, aes_config::encrypt_mode, g_aes_cfg, init_vector, key128, aes_config::key_size, aes_config::lod, aes_config::opmode, output_data, ref_cipher_text_cbc, ref_plain_text, aes_config::start_mode, and state.
Referenced by main().
|
static |
CFB128 mode encryption and decryption test.
References AES_AUTO_START, AES_CFB_MODE, AES_CFB_SIZE_128, AES_DECRYPTION, AES_ENCRYPTION, AES_KEY_SIZE_128, aes_set_config(), aes_write_initvector(), aes_write_input_data(), aes_write_key(), aes_config::cfb_size, aes_config::encrypt_mode, g_aes_cfg, init_vector, key128, aes_config::key_size, aes_config::lod, aes_config::opmode, output_data, ref_cipher_text_cfb128, ref_plain_text, aes_config::start_mode, and state.
Referenced by main().
|
static |
Configure serial console.
References uart_rs232_options::baudrate, and stdio_serial_init().
Referenced by main().
|
static |
CTR mode encryption and decryption test.
References AES_AUTO_START, AES_CFB_SIZE_128, AES_CTR_MODE, AES_DECRYPTION, AES_ENCRYPTION, AES_KEY_SIZE_128, aes_set_config(), aes_write_initvector(), aes_write_input_data(), aes_write_key(), aes_config::cfb_size, aes_config::encrypt_mode, g_aes_cfg, init_vector_ctr, key128, aes_config::key_size, aes_config::lod, aes_config::opmode, output_data, ref_cipher_text_ctr, ref_plain_text, aes_config::start_mode, and state.
Referenced by main().
|
static |
Display the user menu on the terminal.
Referenced by main().
|
static |
ECB mode encryption and decryption test.
References AES_AUTO_START, AES_CFB_SIZE_128, AES_DECRYPTION, AES_ECB_MODE, AES_ENCRYPTION, AES_KEY_SIZE_128, aes_set_config(), aes_write_input_data(), aes_write_key(), aes_config::cfb_size, aes_config::encrypt_mode, g_aes_cfg, key128, aes_config::key_size, aes_config::lod, aes_config::opmode, output_data, ref_cipher_text_ecb, ref_plain_text, aes_config::start_mode, and state.
Referenced by main().
int main | ( | void | ) |
The main function.
References aes_callback(), aes_enable(), aes_get_config_defaults(), aes_init(), AES_INTERRUPT_DATA_READY, aes_set_callback(), board_init(), BOARD_NAME, cbc_mode_test(), cfb128_mode_test(), configure_console(), ctr_mode_test(), display_menu(), ecb_mode_test(), g_aes_cfg, ofb_mode_test(), and sysclk_init().
|
static |
OFB mode encryption and decryption test.
References AES_AUTO_START, AES_CFB_SIZE_128, AES_DECRYPTION, AES_ENCRYPTION, AES_KEY_SIZE_128, AES_OFB_MODE, aes_set_config(), aes_write_initvector(), aes_write_input_data(), aes_write_key(), aes_config::cfb_size, aes_config::encrypt_mode, g_aes_cfg, init_vector, key128, aes_config::key_size, aes_config::lod, aes_config::opmode, output_data, ref_cipher_text_ofb, ref_plain_text, aes_config::start_mode, and state.
Referenced by main().
struct aes_config g_aes_cfg |
AES configuration.
const uint32_t init_vector[4] |
Init vector array for ECB, CBC, CFB128 and OFB mode.
Referenced by cbc_mode_test(), cfb128_mode_test(), ofb_mode_test(), run_cbc_mode_test(), run_cfb128_mode_test(), and run_ofb_mode_test().
const uint32_t init_vector_ctr[4] |
Init vector array for CTR mode.
Referenced by ctr_mode_test(), and run_ctr_mode_test().
const uint32_t key128[4] |
Cipher 128 bits key array.
Referenced by cbc_mode_test(), cfb128_mode_test(), ctr_mode_test(), ecb_mode_test(), ofb_mode_test(), run_cbc_mode_test(), run_cfb128_mode_test(), run_ctr_mode_test(), run_ecb_mode_test(), and run_ofb_mode_test().
|
static |
Referenced by aes_callback(), cbc_mode_test(), cfb128_mode_test(), ctr_mode_test(), ecb_mode_test(), and ofb_mode_test().
uint32_t ref_cipher_text_cbc[AES_EXAMPLE_REFBUF_SIZE] |
Reference CBC cipher data.
Referenced by cbc_mode_test(), and run_cbc_mode_test().
uint32_t ref_cipher_text_cfb128[AES_EXAMPLE_REFBUF_SIZE] |
Reference CFB128 cipher data.
Referenced by cfb128_mode_test(), and run_cfb128_mode_test().
uint32_t ref_cipher_text_ctr[AES_EXAMPLE_REFBUF_SIZE] |
Reference CTR cipher data.
Referenced by ctr_mode_test(), and run_ctr_mode_test().
uint32_t ref_cipher_text_ecb[AES_EXAMPLE_REFBUF_SIZE] |
Reference ECB cipher data.
Referenced by ecb_mode_test(), and run_ecb_mode_test().
uint32_t ref_cipher_text_ofb[AES_EXAMPLE_REFBUF_SIZE] |
Reference OFB cipher data.
Referenced by ofb_mode_test(), and run_ofb_mode_test().
uint32_t ref_plain_text[AES_EXAMPLE_REFBUF_SIZE] |
Reference plain data.
Referenced by cbc_mode_test(), cfb128_mode_test(), ctr_mode_test(), ecb_mode_test(), ofb_mode_test(), run_cbc_mode_test(), run_cfb128_mode_test(), run_ctr_mode_test(), run_ecb_mode_test(), and run_ofb_mode_test().