X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fsec%2Fcipher%2Faes_test.c;h=1d10740cb083b82c0074b1f07a9f33dcdf86042f;hb=e655a1568f4499a683026a6ba7b95ddb05e60741;hp=9971bb56f1d601e5ee79faeac13d20d59c357f2b;hpb=8e6d8f2fe271b2db8895667d8814480aa4f70f28;p=bertos.git diff --git a/bertos/sec/cipher/aes_test.c b/bertos/sec/cipher/aes_test.c index 9971bb56..1d10740c 100644 --- a/bertos/sec/cipher/aes_test.c +++ b/bertos/sec/cipher/aes_test.c @@ -150,7 +150,7 @@ ECB128_Tests[] = { "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x41\xc7\x8c\x13\x5e\xd9\xe9\x8c\x09\x66\x40\x64\x72\x65\xda\x1e", }, { "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x5a\x4d\x40\x4d\x89\x17\xe3\x53\xe9\x2a\x21\x07\x2c\x3b\x23\x05", }, { "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x02\xbc\x96\x84\x6b\x3f\xdc\x71\x64\x3f\x38\x4c\xd3\xcc\x3e\xaf", }, -{ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x9b\xa4\xa9\x14\x3f\x4e\x5d\x40\x48\x52\x1c\x4f\x88\x77\xd8\x8e", }, +{ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x9b\xa4\xa9\x14\x3f\x4e\x5d\x40\x48\x52\x1c\x4f\x88\x77\xd8\x8e", }, { "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\x3a\xd7\x8e\x72\x6c\x1e\xc0\x2b\x7e\xbf\xe9\x2b\x23\xd9\xec\x34", }, { "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\xaa\xe5\x93\x9c\x8e\xfd\xf2\xf0\x4e\x60\xb9\xfe\x71\x17\xb2\xc2", }, { "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "\xf0\x31\xd4\xd7\x4f\x5d\xcb\xf3\x9d\xaa\xf8\xca\x3a\xf6\xe5\x27", }, @@ -1016,7 +1016,14 @@ static void AES128_testRun(void) cipher_ecb_decrypt(c, buf); ASSERT(memcmp(buf, t->pt, 16) == 0); } -} + + uint8_t data[16]; + memset(data, 0, 16); + cipher_set_key(c, "0123456789ABCDEF"); + for (int i=0;i<1000;++i) cipher_ecb_encrypt(c, data); + for (int i=0;i<1000;++i) cipher_ecb_decrypt(c, data); + ASSERT(memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0); +} static void AES192_testRun(void) { @@ -1033,7 +1040,14 @@ static void AES192_testRun(void) cipher_ecb_decrypt(c, buf); ASSERT(memcmp(buf, t->pt, 16) == 0); } -} + + uint8_t data[16]; + memset(data, 0, 16); + cipher_set_key(c, "0123456789ABCDEF01234567"); + for (int i=0;i<1000;++i) cipher_ecb_encrypt(c, data); + for (int i=0;i<1000;++i) cipher_ecb_decrypt(c, data); + ASSERT(memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0); +} static void AES256_testRun(void) { @@ -1050,17 +1064,33 @@ static void AES256_testRun(void) cipher_ecb_decrypt(c, buf); ASSERT(memcmp(buf, t->pt, 16) == 0); } -} + + uint8_t data[16]; + memset(data, 0, 16); + cipher_set_key(c, "0123456789ABCDEF0123456789ABCDEF"); + for (int i=0;i<1000;++i) cipher_ecb_encrypt(c, data); + for (int i=0;i<1000;++i) cipher_ecb_decrypt(c, data); + ASSERT(memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0); +} int AES_testRun(void) { AES128_testRun(); AES192_testRun(); AES256_testRun(); - + //BlockCipher *c = AES192_stackinit(); //cipher_set_key(c, "\x8e\x73\xb0\xf7\xda\x0e\x64\x52\xc8\x10\xf3\x2b\x80\x90\x79\xe5\x62\xf8\xea\xd2\x52\x2c\x6b\x7b"); - + + // This is the step-by-step example in FIPS-197 + BlockCipher *c = AES128_stackinit(); + uint8_t data[] = { "\x32\x43\xf6\xa8\x88\x5a\x30\x8d\x31\x31\x98\xa2\xe0\x37\x07\x34" }; + cipher_set_key(c, "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c"); + cipher_ecb_encrypt(c, data); + ASSERT(memcmp(data, "\x39\x25\x84\x1D\x02\xDC\x09\xFB\xDC\x11\x85\x97\x19\x6A\x0B\x32", 16) == 0); + cipher_ecb_decrypt(c, data); + ASSERT(memcmp(data, "\x32\x43\xf6\xa8\x88\x5a\x30\x8d\x31\x31\x98\xa2\xe0\x37\x07\x34", 16) == 0); + return 0; }