Mercurial > dropbear
comparison src/mac/omac/omac_test.c @ 191:1c15b283127b libtomcrypt-orig
Import of libtomcrypt 1.02 with manual path rename rearrangement etc
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 06 May 2005 13:23:02 +0000 |
parents | |
children | 39d5d58461d6 |
comparison
equal
deleted
inserted
replaced
143:5d99163f7e32 | 191:1c15b283127b |
---|---|
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 #include "tomcrypt.h" | |
12 | |
13 /** | |
14 @file omac_test.c | |
15 OMAC1 support, self-test, by Tom St Denis | |
16 */ | |
17 | |
18 #ifdef OMAC | |
19 | |
20 /** | |
21 Test the OMAC setup | |
22 @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled | |
23 */ | |
24 int omac_test(void) | |
25 { | |
26 #if !defined(LTC_TEST) | |
27 return CRYPT_NOP; | |
28 #else | |
29 static const struct { | |
30 int keylen, msglen; | |
31 unsigned char key[16], msg[64], tag[16]; | |
32 } tests[] = { | |
33 { 16, 0, | |
34 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
35 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
36 { 0x00 }, | |
37 { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, | |
38 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } | |
39 }, | |
40 { 16, 16, | |
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 { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, | |
46 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } | |
47 }, | |
48 { 16, 40, | |
49 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
50 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
51 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | |
52 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | |
53 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | |
54 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | |
55 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, | |
56 { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, | |
57 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } | |
58 }, | |
59 { 16, 64, | |
60 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | |
61 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | |
62 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | |
63 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | |
64 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | |
65 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | |
66 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, | |
67 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, | |
68 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, | |
69 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, | |
70 { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, | |
71 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } | |
72 } | |
73 | |
74 }; | |
75 unsigned char out[16]; | |
76 int x, err, idx; | |
77 unsigned long len; | |
78 | |
79 | |
80 /* AES can be under rijndael or aes... try to find it */ | |
81 if ((idx = find_cipher("aes")) == -1) { | |
82 if ((idx = find_cipher("rijndael")) == -1) { | |
83 return CRYPT_NOP; | |
84 } | |
85 } | |
86 | |
87 for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { | |
88 len = sizeof(out); | |
89 if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { | |
90 return err; | |
91 } | |
92 | |
93 if (memcmp(out, tests[x].tag, 16) != 0) { | |
94 #if 0 | |
95 int y; | |
96 printf("\n\nTag: "); | |
97 for (y = 0; y < 16; y++) printf("%02x", out[y]); printf("\n\n"); | |
98 #endif | |
99 return CRYPT_FAIL_TESTVECTOR; | |
100 } | |
101 } | |
102 return CRYPT_OK; | |
103 #endif | |
104 } | |
105 | |
106 #endif |