Remove tag files.
[bertos.git] / bertos / sec / cipher / aes_test.c
index 9971bb56f1d601e5ee79faeac13d20d59c357f2b..1d10740cb083b82c0074b1f07a9f33dcdf86042f 100644 (file)
@@ -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;
 }