49 #define AES_KEY_NIST_128 \ 50 KEY ( 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, \ 51 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c ) 54 #define AES_KEY_NIST_192 \ 55 KEY ( 0x8e, 0x73, 0xb0, 0xf7, 0xda, 0x0e, 0x64, 0x52, 0xc8, \ 56 0x10, 0xf3, 0x2b, 0x80, 0x90, 0x79, 0xe5, 0x62, 0xf8, \ 57 0xea, 0xd2, 0x52, 0x2c, 0x6b, 0x7b ) 60 #define AES_KEY_NIST_256 \ 61 KEY ( 0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, \ 62 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81, 0x1f, 0x35, \ 63 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, \ 64 0xa3, 0x09, 0x14, 0xdf, 0xf4 ) 67 #define AES_IV_NIST_DUMMY \ 68 IV ( 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ) 72 #define AES_IV_NIST_CBC \ 73 IV ( 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, \ 74 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f ) 77 #define AES_PLAINTEXT_NIST \ 78 PLAINTEXT ( 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, \ 79 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, \ 80 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, \ 81 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, \ 82 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, \ 83 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, \ 84 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, \ 85 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 ) 90 CIPHERTEXT ( 0x3a, 0xd7, 0x7b, 0xb4, 0x0d, 0x7a, 0x36, 0x60,
91 0xa8, 0x9e, 0xca, 0xf3, 0x24, 0x66, 0xef, 0x97,
92 0xf5, 0xd3, 0xd5, 0x85, 0x03, 0xb9, 0x69, 0x9d,
93 0xe7, 0x85, 0x89, 0x5a, 0x96, 0xfd, 0xba, 0xaf,
94 0x43, 0xb1, 0xcd, 0x7f, 0x59, 0x8e, 0xce, 0x23,
95 0x88, 0x1b, 0x00, 0xe3, 0xed, 0x03, 0x06, 0x88,
96 0x7b, 0x0c, 0x78, 0x5e, 0x27, 0xe8, 0xad, 0x3f,
97 0x82, 0x23, 0x20, 0x71, 0x04, 0x72, 0x5d, 0xd4 ),
AUTH() );
102 CIPHERTEXT ( 0x76, 0x49, 0xab, 0xac, 0x81, 0x19, 0xb2, 0x46,
103 0xce, 0xe9, 0x8e, 0x9b, 0x12, 0xe9, 0x19, 0x7d,
104 0x50, 0x86, 0xcb, 0x9b, 0x50, 0x72, 0x19, 0xee,
105 0x95, 0xdb, 0x11, 0x3a, 0x91, 0x76, 0x78, 0xb2,
106 0x73, 0xbe, 0xd6, 0xb8, 0xe3, 0xc1, 0x74, 0x3b,
107 0x71, 0x16, 0xe6, 0x9e, 0x22, 0x22, 0x95, 0x16,
108 0x3f, 0xf1, 0xca, 0xa1, 0x68, 0x1f, 0xac, 0x09,
109 0x12, 0x0e, 0xca, 0x30, 0x75, 0x86, 0xe1, 0xa7 ),
AUTH() );
114 CIPHERTEXT ( 0xbd, 0x33, 0x4f, 0x1d, 0x6e, 0x45, 0xf2, 0x5f,
115 0xf7, 0x12, 0xa2, 0x14, 0x57, 0x1f, 0xa5, 0xcc,
116 0x97, 0x41, 0x04, 0x84, 0x6d, 0x0a, 0xd3, 0xad,
117 0x77, 0x34, 0xec, 0xb3, 0xec, 0xee, 0x4e, 0xef,
118 0xef, 0x7a, 0xfd, 0x22, 0x70, 0xe2, 0xe6, 0x0a,
119 0xdc, 0xe0, 0xba, 0x2f, 0xac, 0xe6, 0x44, 0x4e,
120 0x9a, 0x4b, 0x41, 0xba, 0x73, 0x8d, 0x6c, 0x72,
121 0xfb, 0x16, 0x69, 0x16, 0x03, 0xc1, 0x8e, 0x0e ),
AUTH() );
126 CIPHERTEXT ( 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d,
127 0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8,
128 0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4,
129 0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a,
130 0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0,
131 0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0,
132 0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81,
133 0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd ),
AUTH() );
138 CIPHERTEXT ( 0xf3, 0xee, 0xd1, 0xbd, 0xb5, 0xd2, 0xa0, 0x3c,
139 0x06, 0x4b, 0x5a, 0x7e, 0x3d, 0xb1, 0x81, 0xf8,
140 0x59, 0x1c, 0xcb, 0x10, 0xd4, 0x10, 0xed, 0x26,
141 0xdc, 0x5b, 0xa7, 0x4a, 0x31, 0x36, 0x28, 0x70,
142 0xb6, 0xed, 0x21, 0xb9, 0x9c, 0xa6, 0xf4, 0xf9,
143 0xf1, 0x53, 0xe7, 0xb1, 0xbe, 0xaf, 0xed, 0x1d,
144 0x23, 0x30, 0x4b, 0x7a, 0x39, 0xf9, 0xf3, 0xff,
145 0x06, 0x7d, 0x8d, 0x8f, 0x9e, 0x24, 0xec, 0xc7 ),
AUTH() );
150 CIPHERTEXT ( 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba,
151 0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6,
152 0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d,
153 0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d,
154 0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf,
155 0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61,
156 0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc,
157 0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b ),
AUTH() );
177 for ( keylen = 128 ; keylen <= 256 ; keylen += 64 ) {
178 DBG (
"AES-%d-ECB encryption required %ld cycles per byte\n",
180 DBG (
"AES-%d-ECB decryption required %ld cycles per byte\n",
182 DBG (
"AES-%d-CBC encryption required %ld cycles per byte\n",
184 DBG (
"AES-%d-CBC decryption required %ld cycles per byte\n",
#define AUTH(...)
Define inline authentication tag.
#define AES_IV_NIST_DUMMY
Dummy initialisation vector used for NIST ECB-mode test vectors.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define CIPHERTEXT(...)
Define inline ciphertext data.
CIPHER_TEST(aes_128_ecb, &aes_ecb_algorithm, AES_KEY_NIST_128, AES_IV_NIST_DUMMY, ADDITIONAL(), AES_PLAINTEXT_NIST, CIPHERTEXT(0x3a, 0xd7, 0x7b, 0xb4, 0x0d, 0x7a, 0x36, 0x60, 0xa8, 0x9e, 0xca, 0xf3, 0x24, 0x66, 0xef, 0x97, 0xf5, 0xd3, 0xd5, 0x85, 0x03, 0xb9, 0x69, 0x9d, 0xe7, 0x85, 0x89, 0x5a, 0x96, 0xfd, 0xba, 0xaf, 0x43, 0xb1, 0xcd, 0x7f, 0x59, 0x8e, 0xce, 0x23, 0x88, 0x1b, 0x00, 0xe3, 0xed, 0x03, 0x06, 0x88, 0x7b, 0x0c, 0x78, 0x5e, 0x27, 0xe8, 0xad, 0x3f, 0x82, 0x23, 0x20, 0x71, 0x04, 0x72, 0x5d, 0xd4), AUTH())
AES-128-ECB (same test as AES-128-Core)
#define AES_KEY_NIST_128
Key used for NIST 128-bit test vectors.
Self-test infrastructure.
const char * name
Test set name.
unsigned long cipher_cost_decrypt(struct cipher_algorithm *cipher, size_t key_len)
Calculate cipher decryption cost.
struct self_test aes_test __self_test
AES self-test.
#define AES_KEY_NIST_192
Key used for NIST 192-bit test vectors.
static void aes_test_exec(void)
Perform AES self-test.
#define AES_KEY_NIST_256
Key used for NIST 256-bit test vectors.
#define AES_IV_NIST_CBC
Initialisation vector used for NIST CBC-mode test vectors.
#define cipher_ok(test)
Report a cipher encryption and decryption test result.
struct cipher_algorithm aes_cbc_algorithm
#define AES_PLAINTEXT_NIST
Plaintext used for NIST test vectors.
#define ADDITIONAL(...)
Define inline additional data.
struct cipher_algorithm aes_ecb_algorithm
#define DBG(...)
Print a debugging message.
unsigned long cipher_cost_encrypt(struct cipher_algorithm *cipher, size_t key_len)
Calculate cipher encryption cost.