Mercurial > dropbear
comparison libtomcrypt/src/mac/omac/omac_test.c @ 1471:6dba84798cd5
Update to libtomcrypt 1.18.1, merged with Dropbear changes
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 09 Feb 2018 21:44:05 +0800 |
parents | f849a5ca2efc |
children |
comparison
equal
deleted
inserted
replaced
1470:8bba51a55704 | 1471:6dba84798cd5 |
---|---|
3 * LibTomCrypt is a library that provides various cryptographic | 3 * LibTomCrypt is a library that provides various cryptographic |
4 * algorithms in a highly modular and flexible manner. | 4 * algorithms in a highly modular and flexible manner. |
5 * | 5 * |
6 * The library is free for all purposes without any express | 6 * The library is free for all purposes without any express |
7 * guarantee it works. | 7 * guarantee it works. |
8 * | |
9 * Tom St Denis, [email protected], http://libtom.org | |
10 */ | 8 */ |
11 #include "tomcrypt.h" | 9 #include "tomcrypt.h" |
12 | 10 |
13 /** | 11 /** |
14 @file omac_test.c | 12 @file omac_test.c |
15 LTC_OMAC1 support, self-test, by Tom St Denis | 13 OMAC1 support, self-test, by Tom St Denis |
16 */ | 14 */ |
17 | 15 |
18 #ifdef LTC_OMAC | 16 #ifdef LTC_OMAC |
19 | 17 |
20 /** | 18 /** |
21 Test the LTC_OMAC setup | 19 Test the OMAC setup |
22 @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled | 20 @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled |
23 */ | 21 */ |
24 int omac_test(void) | 22 int omac_test(void) |
25 { | 23 { |
26 #if !defined(LTC_TEST) | 24 #if !defined(LTC_TEST) |
27 return CRYPT_NOP; | 25 return CRYPT_NOP; |
28 #else | 26 #else |
29 static const struct { | 27 static const struct { |
30 int keylen, msglen; | 28 int keylen, msglen; |
31 unsigned char key[16], msg[64], tag[16]; | 29 unsigned char key[16], msg[64], tag[16]; |
32 } tests[] = { | 30 } tests[] = { |
33 { 16, 0, | 31 { 16, 0, |
34 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | 32 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, |
35 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | 33 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, |
36 { 0x00 }, | 34 { 0x00 }, |
37 { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, | 35 { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, |
38 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } | 36 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } |
39 }, | 37 }, |
40 { 16, 16, | 38 { 16, 16, |
41 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | 39 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, |
42 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | 40 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, |
43 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | 41 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, |
44 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, | 42 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, |
45 { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, | 43 { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, |
46 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } | 44 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } |
47 }, | 45 }, |
48 { 16, 40, | 46 { 16, 40, |
49 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | 47 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, |
50 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | 48 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, |
51 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | 49 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, |
52 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | 50 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, |
53 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | 51 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, |
54 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | 52 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, |
55 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, | 53 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, |
56 { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, | 54 { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, |
57 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } | 55 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } |
58 }, | 56 }, |
59 { 16, 64, | 57 { 16, 64, |
60 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, | 58 { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, |
61 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, | 59 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, |
62 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, | 60 { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, |
63 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, | 61 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, |
64 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, | 62 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, |
65 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, | 63 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, |
66 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, | 64 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, |
67 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, | 65 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, |
68 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, | 66 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, |
69 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, | 67 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, |
70 { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, | 68 { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, |
71 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } | 69 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } |
72 } | 70 } |
73 | 71 |
74 }; | 72 }; |
75 unsigned char out[16]; | 73 unsigned char out[16]; |
76 int x, err, idx; | 74 int x, err, idx; |
77 unsigned long len; | 75 unsigned long len; |
78 | 76 |
79 | 77 |
80 /* AES can be under rijndael or aes... try to find it */ | 78 /* AES can be under rijndael or aes... try to find it */ |
81 if ((idx = find_cipher("aes")) == -1) { | 79 if ((idx = find_cipher("aes")) == -1) { |
82 if ((idx = find_cipher("rijndael")) == -1) { | 80 if ((idx = find_cipher("rijndael")) == -1) { |
83 return CRYPT_NOP; | 81 return CRYPT_NOP; |
84 } | 82 } |
85 } | 83 } |
86 | 84 |
87 for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { | 85 for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { |
88 len = sizeof(out); | 86 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) { | 87 if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { |
90 return err; | 88 return err; |
91 } | 89 } |
92 | 90 |
93 if (XMEMCMP(out, tests[x].tag, 16) != 0) { | 91 if (compare_testvector(out, len, tests[x].tag, sizeof(tests[x].tag), "OMAC", x) != 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; | 92 return CRYPT_FAIL_TESTVECTOR; |
100 } | 93 } |
101 } | 94 } |
102 return CRYPT_OK; | 95 return CRYPT_OK; |
103 #endif | 96 #endif |
104 } | 97 } |
105 | 98 |
106 #endif | 99 #endif |
107 | 100 |
108 /* $Source$ */ | 101 /* ref: $Format:%D$ */ |
109 /* $Revision$ */ | 102 /* git commit: $Format:%H$ */ |
110 /* $Date$ */ | 103 /* commit time: $Format:%ai$ */ |