tests: Add some of the AES ECB mode test cases from CAVS 11.1
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
1244408401
commit
5c0ff9f9a3
1 changed files with 90 additions and 0 deletions
|
@ -404,6 +404,95 @@ static int test_cbc(void)
|
|||
}
|
||||
|
||||
|
||||
static int test_ecb(void)
|
||||
{
|
||||
#ifdef EAP_PSK
|
||||
struct ecb_test_vector {
|
||||
char *key;
|
||||
char *plaintext;
|
||||
char *ciphertext;
|
||||
} vectors[] = {
|
||||
/* CAVS 11.1 - ECBGFSbox128.rsp */
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"f34481ec3cc627bacd5dc3fb08f273e6",
|
||||
"0336763e966d92595a567cc9ce537f5e"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"9798c4640bad75c7c3227db910174e72",
|
||||
"a9a1631bf4996954ebc093957b234589"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"96ab5c2ff612d9dfaae8c31f30c42168",
|
||||
"ff4f8391a6a40ca5b25d23bedd44a597"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"6a118a874519e64e9963798a503f1d35",
|
||||
"dc43be40be0e53712f7e2bf5ca707209"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"cb9fceec81286ca3e989bd979b0cb284",
|
||||
"92beedab1895a94faa69b632e5cc47ce"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"b26aeb1874e47ca8358ff22378f09144",
|
||||
"459264f4798f6a78bacb89c15ed3d601"
|
||||
},
|
||||
{
|
||||
"00000000000000000000000000000000",
|
||||
"58c8e00b2631686d54eab84b91f0aca1",
|
||||
"08a4e2efec8a8e3312ca7460b9040bbf"
|
||||
},
|
||||
/* CAVS 11.1 - ECBKeySbox128.rsp */
|
||||
{
|
||||
"10a58869d74be5a374cf867cfb473859",
|
||||
"00000000000000000000000000000000",
|
||||
"6d251e6944b051e04eaa6fb4dbf78465"
|
||||
},
|
||||
{
|
||||
"caea65cdbb75e9169ecd22ebe6e54675",
|
||||
"00000000000000000000000000000000",
|
||||
"6e29201190152df4ee058139def610bb",
|
||||
}
|
||||
};
|
||||
int ret = 0;
|
||||
unsigned int i;
|
||||
u8 key[16], plain[16], cipher[16], out[16];
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(vectors); i++) {
|
||||
struct ecb_test_vector *tv = &vectors[i];
|
||||
|
||||
if (hexstr2bin(tv->key, key, sizeof(key)) ||
|
||||
hexstr2bin(tv->plaintext, plain, sizeof(plain)) ||
|
||||
hexstr2bin(tv->ciphertext, cipher, sizeof(cipher))) {
|
||||
wpa_printf(MSG_ERROR, "Invalid AES-ECB test vector %u",
|
||||
i);
|
||||
ret++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (aes_128_encrypt_block(key, plain, out) < 0 ||
|
||||
os_memcmp(out, cipher, 16) != 0) {
|
||||
wpa_printf(MSG_ERROR, "AES-ECB encrypt %u failed", i);
|
||||
ret++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ret)
|
||||
wpa_printf(MSG_INFO, "AES ECB mode test cases passed");
|
||||
|
||||
return ret;
|
||||
#endif /* EAP_PSK */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int test_key_wrap(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
@ -646,6 +735,7 @@ int crypto_module_tests(void)
|
|||
test_omac1() ||
|
||||
test_eax() ||
|
||||
test_cbc() ||
|
||||
test_ecb() ||
|
||||
test_key_wrap())
|
||||
ret = -1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue