~ubuntu-branches/ubuntu/gutsy/wpasupplicant/gutsy

« back to all changes in this revision

Viewing changes to wpa_supplicant/tests/test_sha256.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Alexander Sack
  • Date: 2007-08-26 16:06:57 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20070826160657-2m8pxoweuxe8f93t
Tags: 0.6.0+0.5.8-0ubuntu1
* New upstream release
* remove patch 11_erroneous_manpage_ref, applied upstream
* remove patch 25_wpas_dbus_unregister_iface_fix, applied upstream

[ Alexander Sack ]
* bumping upstream version to replace development version 0.6.0 with
  this package from stable release branch.
* attempt to fix wierd timeout and high latency issues by going
  back to stable upstream version (0.5.9) (LP: #140763,
  LP: #141233).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Test program for SHA256
3
 
 * Copyright (c) 2006, Jouni Malinen <j@w1.fi>
4
 
 *
5
 
 * This program is free software; you can redistribute it and/or modify
6
 
 * it under the terms of the GNU General Public License version 2 as
7
 
 * published by the Free Software Foundation.
8
 
 *
9
 
 * Alternatively, this software may be distributed under the terms of BSD
10
 
 * license.
11
 
 *
12
 
 * See README and COPYING for more details.
13
 
 */
14
 
 
15
 
#include "includes.h"
16
 
 
17
 
#include "common.h"
18
 
#include "sha256.h"
19
 
#include "crypto.h"
20
 
 
21
 
struct {
22
 
        char *data;
23
 
        u8 hash[32];
24
 
} tests[] = {
25
 
        {
26
 
                "abc",
27
 
                {
28
 
                        0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
29
 
                        0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
30
 
                        0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c,
31
 
                        0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad
32
 
                }
33
 
        },
34
 
        {
35
 
                "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
36
 
                {
37
 
                        0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8,
38
 
                        0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39,
39
 
                        0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67,
40
 
                        0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1
41
 
                }
42
 
        }
43
 
};
44
 
 
45
 
struct hmac_test {
46
 
        u8 key[80];
47
 
        size_t key_len;
48
 
        u8 data[128];
49
 
        size_t data_len;
50
 
        u8 hash[32];
51
 
} hmac_tests[] = {
52
 
        /* draft-ietf-ipsec-ciph-sha-256-01.txt */
53
 
        {
54
 
                {
55
 
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
56
 
                        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
57
 
                        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
58
 
                        0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20
59
 
                },
60
 
                32,
61
 
                "abc", 3,
62
 
                {
63
 
                        0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a,
64
 
                        0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a,
65
 
                        0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66,
66
 
                        0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81
67
 
                }
68
 
        },
69
 
        {
70
 
                {
71
 
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
72
 
                        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
73
 
                        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
74
 
                        0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20
75
 
                },
76
 
                32,
77
 
                "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
78
 
                56,
79
 
                {
80
 
                        0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08,
81
 
                        0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae,
82
 
                        0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49,
83
 
                        0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30
84
 
                }
85
 
        },
86
 
        {
87
 
                {
88
 
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
89
 
                        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
90
 
                        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
91
 
                        0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20
92
 
                },
93
 
                32,
94
 
                "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
95
 
                "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
96
 
                112,
97
 
                {
98
 
                        0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34,
99
 
                        0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab,
100
 
                        0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5,
101
 
                        0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3
102
 
                }
103
 
        },
104
 
        {
105
 
                {
106
 
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
107
 
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
108
 
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
109
 
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b
110
 
                },
111
 
                32,
112
 
                "Hi There",
113
 
                8,
114
 
                {
115
 
                        0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6,
116
 
                        0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5,
117
 
                        0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c,
118
 
                        0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7
119
 
                }
120
 
        },
121
 
        {
122
 
                "Jefe",
123
 
                4,
124
 
                "what do ya want for nothing?",
125
 
                28,
126
 
                {
127
 
                        0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
128
 
                        0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
129
 
                        0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
130
 
                        0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43
131
 
                }
132
 
        },
133
 
        {
134
 
                {
135
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
136
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
137
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
138
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
139
 
                },
140
 
                32,
141
 
                {
142
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
143
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
144
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
145
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
146
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
147
 
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
148
 
                        0xdd, 0xdd
149
 
                },
150
 
                50,
151
 
                {
152
 
                        0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea,
153
 
                        0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62,
154
 
                        0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc,
155
 
                        0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0
156
 
                }
157
 
        },
158
 
        {
159
 
                {
160
 
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
161
 
                        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
162
 
                        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
163
 
                        0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
164
 
                        0x21, 0x22, 0x23, 0x24, 0x25
165
 
                },
166
 
                37,
167
 
                {
168
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
169
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
170
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
171
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
172
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
173
 
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
174
 
                        0xcd, 0xcd
175
 
                },
176
 
                50,
177
 
                {
178
 
                        0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74,
179
 
                        0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55,
180
 
                        0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85,
181
 
                        0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17
182
 
                }
183
 
        },
184
 
        {
185
 
                {
186
 
                        0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
187
 
                        0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
188
 
                        0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
189
 
                        0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c
190
 
                },
191
 
                32,
192
 
                "Test With Truncation",
193
 
                20,
194
 
                {
195
 
                        0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b,
196
 
                        0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17,
197
 
                        0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27,
198
 
                        0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42
199
 
                }
200
 
        },
201
 
        {
202
 
                {
203
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
204
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
205
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
206
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
207
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
208
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
209
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
210
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
211
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
212
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
213
 
                },
214
 
                80,
215
 
                "Test Using Larger Than Block-Size Key - Hash Key First",
216
 
                54,
217
 
                {
218
 
                        0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09,
219
 
                        0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb,
220
 
                        0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e,
221
 
                        0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f
222
 
                }
223
 
        },
224
 
        {
225
 
                {
226
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
227
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
228
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
229
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
230
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
231
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
232
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
233
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
234
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
235
 
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
236
 
                },
237
 
                80,
238
 
                "Test Using Larger Than Block-Size Key and Larger Than One "
239
 
                "Block-Size Data",
240
 
                73,
241
 
                {
242
 
                        0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3,
243
 
                        0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8,
244
 
                        0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc,
245
 
                        0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6
246
 
                }
247
 
        }
248
 
};
249
 
 
250
 
 
251
 
int main(int argc, char *argv[])
252
 
{
253
 
 
254
 
        unsigned int i;
255
 
        u8 hash[32];
256
 
        const u8 *addr[2];
257
 
        size_t len[2];
258
 
        int errors = 0;
259
 
 
260
 
        for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) {
261
 
                printf("SHA256 test case %d:", i + 1);
262
 
 
263
 
                addr[0] = (u8 *) tests[i].data;
264
 
                len[0] = strlen(tests[i].data);
265
 
                sha256_vector(1, addr, len, hash);
266
 
                if (memcmp(hash, tests[i].hash, 32) != 0) {
267
 
                        printf(" FAIL");
268
 
                        errors++;
269
 
                } else
270
 
                        printf(" OK");
271
 
 
272
 
                if (len[0]) {
273
 
                        addr[0] = (u8 *) tests[i].data;
274
 
                        len[0] = 1;
275
 
                        addr[1] = (u8 *) tests[i].data + 1;
276
 
                        len[1] = strlen(tests[i].data) - 1;
277
 
                        sha256_vector(2, addr, len, hash);
278
 
                        if (memcmp(hash, tests[i].hash, 32) != 0) {
279
 
                                printf(" FAIL");
280
 
                                errors++;
281
 
                        } else
282
 
                                printf(" OK");
283
 
                }
284
 
 
285
 
                printf("\n");
286
 
        }
287
 
 
288
 
        for (i = 0; i < sizeof(hmac_tests) / sizeof(hmac_tests[0]); i++) {
289
 
                struct hmac_test *t = &hmac_tests[i];
290
 
                printf("HMAC-SHA256 test case %d:", i + 1);
291
 
 
292
 
                hmac_sha256(t->key, t->key_len, t->data, t->data_len, hash);
293
 
                if (memcmp(hash, t->hash, 32) != 0) {
294
 
                        printf(" FAIL");
295
 
                        errors++;
296
 
                } else
297
 
                        printf(" OK");
298
 
 
299
 
                addr[0] = t->data;
300
 
                len[0] = t->data_len;
301
 
                hmac_sha256_vector(t->key, t->key_len, 1, addr, len, hash);
302
 
                if (memcmp(hash, t->hash, 32) != 0) {
303
 
                        printf(" FAIL");
304
 
                        errors++;
305
 
                } else
306
 
                        printf(" OK");
307
 
 
308
 
                if (len[0]) {
309
 
                        addr[0] = t->data;
310
 
                        len[0] = 1;
311
 
                        addr[1] = t->data + 1;
312
 
                        len[1] = t->data_len - 1;
313
 
                        hmac_sha256_vector(t->key, t->key_len, 2, addr, len,
314
 
                                           hash);
315
 
                        if (memcmp(hash, t->hash, 32) != 0) {
316
 
                                printf(" FAIL");
317
 
                                errors++;
318
 
                        } else
319
 
                                printf(" OK");
320
 
                }
321
 
 
322
 
                printf("\n");
323
 
        }
324
 
 
325
 
        printf("Test IEEE 802.11r KDF\n");
326
 
        sha256_prf("abc", 3, "KDF test", "data", 4, hash, sizeof(hash));
327
 
        /* TODO: add proper test case for this */
328
 
 
329
 
        return errors;
330
 
}