Mercurial > dropbear
comparison omac_test.c @ 0:d7da3b1e1540 libtomcrypt
put back the 0.95 makefile which was inadvertently merged over
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Mon, 31 May 2004 18:21:40 +0000 |
parents | |
children | 5d99163f7e32 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d7da3b1e1540 |
---|---|
1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis | |
2 * | |
3 * LibTomCrypt is a library that provides various cryptographic | |
4 * algorithms in a highly modular and flexible manner. | |
5 * | |
6 * The library is free for all purposes without any express | |
7 * guarantee it works. | |
8 * | |
9 * Tom St Denis, [email protected], http://libtomcrypt.org | |
10 */ | |
11 /* OMAC1 Support by Tom St Denis (for 64 and 128 bit block ciphers only) */ | |
12 #include "mycrypt.h" | |
13 | |
14 #ifdef OMAC | |
15 | |
16 int omac_test(void) | |
17 { | |
18 #if !defined(LTC_TEST) | |
19 return CRYPT_NOP; | |
20 #else | |
21 static const struct { | |
22 int keylen, msglen; | |
23 unsigned char key[16], msg[64], tag[16]; | |
24 } tests[] = { | |
25 { 16, 0, | |
26 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
27 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
28 { 0x00 }, | |
29 { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, | |
30 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } | |
31 }, | |
32 { 16, 16, | |
33 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
34 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
35 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | |
36 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, | |
37 { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, | |
38 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } | |
39 }, | |
40 { 16, 40, | |
41 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
42 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
43 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | |
44 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | |
45 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | |
46 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | |
47 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, | |
48 { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, | |
49 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } | |
50 }, | |
51 { 16, 64, | |
52 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
53 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
54 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | |
55 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | |
56 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | |
57 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | |
58 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, | |
59 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, | |
60 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, | |
61 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, | |
62 { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, | |
63 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } | |
64 } | |
65 | |
66 }; | |
67 unsigned char out[16]; | |
68 int x, y, err, idx; | |
69 unsigned long len; | |
70 | |
71 | |
72 /* AES can be under rijndael or aes... try to find it */ | |
73 if ((idx = find_cipher("aes")) == -1) { | |
74 if ((idx = find_cipher("rijndael")) == -1) { | |
75 return CRYPT_NOP; | |
76 } | |
77 } | |
78 | |
79 for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { | |
80 len = sizeof(out); | |
81 if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { | |
82 return err; | |
83 } | |
84 | |
85 if (memcmp(out, tests[x].tag, 16) != 0) { | |
86 printf("\n\nTag: "); | |
87 for (y = 0; y < 16; y++) printf("%02x", out[y]); printf("\n\n"); | |
88 return CRYPT_FAIL_TESTVECTOR; | |
89 } | |
90 } | |
91 return CRYPT_OK; | |
92 #endif | |
93 } | |
94 | |
95 #endif |