d9898ee8 |
1 | /* |
2 | ** Copyright 1998 - 1999 Double Precision, Inc. |
3 | ** See COPYING for distribution information. |
4 | */ |
5 | |
6 | #if HAVE_CONFIG_H |
7 | #include "config.h" |
8 | #endif |
9 | |
10 | #define SHA1_INTERNAL |
11 | #include "../sha1/sha1.h" |
12 | #include "hmac.h" |
13 | |
14 | #include <stdio.h> |
15 | |
d9898ee8 |
16 | |
17 | static struct { |
18 | const char *key, *data; |
19 | } testcases[]={ |
20 | {"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", |
21 | "Hi There"}, |
22 | {"Jefe", "what do ya want for nothing?" }, |
23 | |
24 | {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", |
25 | "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"}, |
26 | |
27 | {"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19", |
28 | "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"}, |
29 | |
30 | {"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c", |
31 | "Test With Truncation"}, |
32 | |
33 | {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", |
34 | "Test Using Larger Than Block-Size Key - Hash Key First"}, |
35 | |
36 | {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", |
37 | "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"} |
38 | } ; |
39 | |
40 | int main() |
41 | { |
42 | unsigned i, j; |
43 | |
44 | for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++) |
45 | { |
46 | SHA1_DIGEST ok, ik, hash; |
47 | |
48 | hmac_hashkey(&hmac_sha1, testcases[i].key, |
49 | strlen(testcases[i].key), ok, ik); |
50 | |
51 | hmac_hashtext(&hmac_sha1, testcases[i].data, |
52 | strlen(testcases[i].data), ok, ik, hash); |
53 | |
54 | printf("test_cases[%i].digest=0x", i+1); |
55 | for (j=0; j<SHA1_DIGEST_SIZE; j++) |
56 | printf("%02x", hash[j]); |
57 | printf("\n"); |
58 | } |
59 | |
60 | for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++) |
61 | { |
62 | SHA256_DIGEST ok, ik, hash; |
63 | |
64 | hmac_hashkey(&hmac_sha256, testcases[i].key, |
65 | strlen(testcases[i].key), ok, ik); |
66 | |
67 | hmac_hashtext(&hmac_sha256, testcases[i].data, |
68 | strlen(testcases[i].data), ok, ik, hash); |
69 | |
70 | printf("test_cases[%i].digest256=0x", i+1); |
71 | for (j=0; j<SHA256_DIGEST_SIZE; j++) |
72 | printf("%02x", hash[j]); |
73 | printf("\n"); |
74 | } |
75 | return (0); |
76 | } |