Mercurial > dropbear
comparison src/mac/pelican/pelican_test.c @ 192:9cc34777b479 libtomcrypt
propagate from branch 'au.asn.ucc.matt.ltc-orig' (head 9ba8f01f44320e9cb9f19881105ae84f84a43ea9)
to branch 'au.asn.ucc.matt.dropbear.ltc' (head dbf51c569bc34956ad948e4cc87a0eeb2170b768)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 08 May 2005 06:36:47 +0000 |
parents | 1c15b283127b |
children | 39d5d58461d6 |
comparison
equal
deleted
inserted
replaced
164:cd1143579f00 | 192:9cc34777b479 |
---|---|
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 pelican_test.c | |
15 Pelican MAC, test, by Tom St Denis | |
16 */ | |
17 | |
18 #ifdef PELICAN | |
19 | |
20 int pelican_test(void) | |
21 { | |
22 #ifndef LTC_TEST | |
23 return CRYPT_NOP; | |
24 #else | |
25 static const struct { | |
26 unsigned char K[32], MSG[64], T[16]; | |
27 int keylen, ptlen; | |
28 } tests[] = { | |
29 /* K=16, M=0 */ | |
30 { | |
31 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
32 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
33 { 0 }, | |
34 { 0xeb, 0x58, 0x37, 0x15, 0xf8, 0x34, 0xde, 0xe5, | |
35 0xa4, 0xd1, 0x6e, 0xe4, 0xb9, 0xd7, 0x76, 0x0e, }, | |
36 16, 0 | |
37 }, | |
38 | |
39 /* K=16, M=3 */ | |
40 { | |
41 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
42 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
43 { 0x00, 0x01, 0x02 }, | |
44 { 0x1c, 0x97, 0x40, 0x60, 0x6c, 0x58, 0x17, 0x2d, | |
45 0x03, 0x94, 0x19, 0x70, 0x81, 0xc4, 0x38, 0x54, }, | |
46 16, 3 | |
47 }, | |
48 | |
49 /* K=16, M=16 */ | |
50 { | |
51 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
52 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
53 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
54 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
55 { 0x03, 0xcc, 0x46, 0xb8, 0xac, 0xa7, 0x9c, 0x36, | |
56 0x1e, 0x8c, 0x6e, 0xa6, 0x7b, 0x89, 0x32, 0x49, }, | |
57 16, 16 | |
58 }, | |
59 | |
60 /* K=16, M=32 */ | |
61 { | |
62 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
63 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
64 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
65 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, | |
66 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | |
67 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }, | |
68 { 0x89, 0xcc, 0x36, 0x58, 0x1b, 0xdd, 0x4d, 0xb5, | |
69 0x78, 0xbb, 0xac, 0xf0, 0xff, 0x8b, 0x08, 0x15, }, | |
70 16, 32 | |
71 }, | |
72 | |
73 /* K=16, M=35 */ | |
74 { | |
75 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
76 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, | |
77 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, | |
78 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, | |
79 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, | |
80 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, | |
81 0x20, 0x21, 0x23 }, | |
82 { 0x4a, 0x7d, 0x45, 0x4d, 0xcd, 0xb5, 0xda, 0x8d, | |
83 0x48, 0x78, 0x16, 0x48, 0x5d, 0x45, 0x95, 0x99, }, | |
84 16, 35 | |
85 }, | |
86 }; | |
87 int x, err; | |
88 unsigned char out[16]; | |
89 pelican_state pel; | |
90 | |
91 for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { | |
92 if ((err = pelican_init(&pel, tests[x].K, tests[x].keylen)) != CRYPT_OK) { | |
93 return err; | |
94 } | |
95 if ((err = pelican_process(&pel, tests[x].MSG, tests[x].ptlen)) != CRYPT_OK) { | |
96 return err; | |
97 } | |
98 if ((err = pelican_done(&pel, out)) != CRYPT_OK) { | |
99 return err; | |
100 } | |
101 | |
102 if (memcmp(out, tests[x].T, 16)) { | |
103 #if 0 | |
104 int y; | |
105 printf("\nFailed test %d\n", x); | |
106 printf("{ "); for (y = 0; y < 16; ) { printf("0x%02x, ", out[y]); if (!(++y & 7)) printf("\n"); } printf(" }\n"); | |
107 #endif | |
108 return CRYPT_FAIL_TESTVECTOR; | |
109 } | |
110 } | |
111 return CRYPT_OK; | |
112 #endif | |
113 } | |
114 | |
115 | |
116 #endif |