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_CBC \ 68 IV ( 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, \ 69 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f ) 72 #define AES_PLAINTEXT_NIST \ 73 PLAINTEXT ( 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, \ 74 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, \ 75 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, \ 76 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, \ 77 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, \ 78 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, \ 79 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, \ 80 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 ) 85 CIPHERTEXT ( 0x3a, 0xd7, 0x7b, 0xb4, 0x0d, 0x7a, 0x36, 0x60,
86 0xa8, 0x9e, 0xca, 0xf3, 0x24, 0x66, 0xef, 0x97,
87 0xf5, 0xd3, 0xd5, 0x85, 0x03, 0xb9, 0x69, 0x9d,
88 0xe7, 0x85, 0x89, 0x5a, 0x96, 0xfd, 0xba, 0xaf,
89 0x43, 0xb1, 0xcd, 0x7f, 0x59, 0x8e, 0xce, 0x23,
90 0x88, 0x1b, 0x00, 0xe3, 0xed, 0x03, 0x06, 0x88,
91 0x7b, 0x0c, 0x78, 0x5e, 0x27, 0xe8, 0xad, 0x3f,
92 0x82, 0x23, 0x20, 0x71, 0x04, 0x72, 0x5d, 0xd4 ),
AUTH() );
97 CIPHERTEXT ( 0x76, 0x49, 0xab, 0xac, 0x81, 0x19, 0xb2, 0x46,
98 0xce, 0xe9, 0x8e, 0x9b, 0x12, 0xe9, 0x19, 0x7d,
99 0x50, 0x86, 0xcb, 0x9b, 0x50, 0x72, 0x19, 0xee,
100 0x95, 0xdb, 0x11, 0x3a, 0x91, 0x76, 0x78, 0xb2,
101 0x73, 0xbe, 0xd6, 0xb8, 0xe3, 0xc1, 0x74, 0x3b,
102 0x71, 0x16, 0xe6, 0x9e, 0x22, 0x22, 0x95, 0x16,
103 0x3f, 0xf1, 0xca, 0xa1, 0x68, 0x1f, 0xac, 0x09,
104 0x12, 0x0e, 0xca, 0x30, 0x75, 0x86, 0xe1, 0xa7 ),
AUTH() );
109 CIPHERTEXT ( 0xbd, 0x33, 0x4f, 0x1d, 0x6e, 0x45, 0xf2, 0x5f,
110 0xf7, 0x12, 0xa2, 0x14, 0x57, 0x1f, 0xa5, 0xcc,
111 0x97, 0x41, 0x04, 0x84, 0x6d, 0x0a, 0xd3, 0xad,
112 0x77, 0x34, 0xec, 0xb3, 0xec, 0xee, 0x4e, 0xef,
113 0xef, 0x7a, 0xfd, 0x22, 0x70, 0xe2, 0xe6, 0x0a,
114 0xdc, 0xe0, 0xba, 0x2f, 0xac, 0xe6, 0x44, 0x4e,
115 0x9a, 0x4b, 0x41, 0xba, 0x73, 0x8d, 0x6c, 0x72,
116 0xfb, 0x16, 0x69, 0x16, 0x03, 0xc1, 0x8e, 0x0e ),
AUTH() );
121 CIPHERTEXT ( 0x4f, 0x02, 0x1d, 0xb2, 0x43, 0xbc, 0x63, 0x3d,
122 0x71, 0x78, 0x18, 0x3a, 0x9f, 0xa0, 0x71, 0xe8,
123 0xb4, 0xd9, 0xad, 0xa9, 0xad, 0x7d, 0xed, 0xf4,
124 0xe5, 0xe7, 0x38, 0x76, 0x3f, 0x69, 0x14, 0x5a,
125 0x57, 0x1b, 0x24, 0x20, 0x12, 0xfb, 0x7a, 0xe0,
126 0x7f, 0xa9, 0xba, 0xac, 0x3d, 0xf1, 0x02, 0xe0,
127 0x08, 0xb0, 0xe2, 0x79, 0x88, 0x59, 0x88, 0x81,
128 0xd9, 0x20, 0xa9, 0xe6, 0x4f, 0x56, 0x15, 0xcd ),
AUTH() );
133 CIPHERTEXT ( 0xf3, 0xee, 0xd1, 0xbd, 0xb5, 0xd2, 0xa0, 0x3c,
134 0x06, 0x4b, 0x5a, 0x7e, 0x3d, 0xb1, 0x81, 0xf8,
135 0x59, 0x1c, 0xcb, 0x10, 0xd4, 0x10, 0xed, 0x26,
136 0xdc, 0x5b, 0xa7, 0x4a, 0x31, 0x36, 0x28, 0x70,
137 0xb6, 0xed, 0x21, 0xb9, 0x9c, 0xa6, 0xf4, 0xf9,
138 0xf1, 0x53, 0xe7, 0xb1, 0xbe, 0xaf, 0xed, 0x1d,
139 0x23, 0x30, 0x4b, 0x7a, 0x39, 0xf9, 0xf3, 0xff,
140 0x06, 0x7d, 0x8d, 0x8f, 0x9e, 0x24, 0xec, 0xc7 ),
AUTH() );
145 CIPHERTEXT ( 0xf5, 0x8c, 0x4c, 0x04, 0xd6, 0xe5, 0xf1, 0xba,
146 0x77, 0x9e, 0xab, 0xfb, 0x5f, 0x7b, 0xfb, 0xd6,
147 0x9c, 0xfc, 0x4e, 0x96, 0x7e, 0xdb, 0x80, 0x8d,
148 0x67, 0x9f, 0x77, 0x7b, 0xc6, 0x70, 0x2c, 0x7d,
149 0x39, 0xf2, 0x33, 0x69, 0xa9, 0xd9, 0xba, 0xcf,
150 0xa5, 0x30, 0xe2, 0x63, 0x04, 0x23, 0x14, 0x61,
151 0xb2, 0xeb, 0x05, 0xe2, 0xc3, 0x9b, 0xe9, 0xfc,
152 0xda, 0x6c, 0x19, 0x07, 0x8c, 0x6a, 0x9d, 0x1b ),
AUTH() );
172 for ( keylen = 128 ; keylen <= 256 ; keylen += 64 ) {
173 DBG (
"AES-%d-ECB encryption required %ld cycles per byte\n",
175 DBG (
"AES-%d-ECB decryption required %ld cycles per byte\n",
177 DBG (
"AES-%d-CBC encryption required %ld cycles per byte\n",
179 DBG (
"AES-%d-CBC decryption required %ld cycles per byte\n",
#define AUTH(...)
Define inline authentication tag.
#define IV(...)
Define inline initialisation vector.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define CIPHERTEXT(...)
Define inline ciphertext data.
#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.
CIPHER_TEST(aes_128_ecb, &aes_ecb_algorithm, AES_KEY_NIST_128, IV(), 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 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.