2 ** Copyright 1998 - 1999 Double Precision, Inc.
3 ** See COPYING for distribution information.
11 #include "../sha1/sha1.h"
16 static const char rcsid
[]="$Id: sha1hmactest.c,v 1.4 2005/02/21 03:18:30 mrsam Exp $";
19 const char *key
, *data
;
21 {"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
23 {"Jefe", "what do ya want for nothing?" },
25 {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
26 "\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"},
28 {"\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",
29 "\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"},
31 {"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
32 "Test With Truncation"},
34 {"\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",
35 "Test Using Larger Than Block-Size Key - Hash Key First"},
37 {"\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",
38 "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"}
45 for (i
=0; i
<sizeof(testcases
)/sizeof(testcases
[0]); i
++)
47 SHA1_DIGEST ok
, ik
, hash
;
49 hmac_hashkey(&hmac_sha1
, testcases
[i
].key
,
50 strlen(testcases
[i
].key
), ok
, ik
);
52 hmac_hashtext(&hmac_sha1
, testcases
[i
].data
,
53 strlen(testcases
[i
].data
), ok
, ik
, hash
);
55 printf("test_cases[%i].digest=0x", i
+1);
56 for (j
=0; j
<SHA1_DIGEST_SIZE
; j
++)
57 printf("%02x", hash
[j
]);
61 for (i
=0; i
<sizeof(testcases
)/sizeof(testcases
[0]); i
++)
63 SHA256_DIGEST ok
, ik
, hash
;
65 hmac_hashkey(&hmac_sha256
, testcases
[i
].key
,
66 strlen(testcases
[i
].key
), ok
, ik
);
68 hmac_hashtext(&hmac_sha256
, testcases
[i
].data
,
69 strlen(testcases
[i
].data
), ok
, ik
, hash
);
71 printf("test_cases[%i].digest256=0x", i
+1);
72 for (j
=0; j
<SHA256_DIGEST_SIZE
; j
++)
73 printf("%02x", hash
[j
]);