xref: /minix3/external/bsd/bind/dist/bin/tests/hash_test.c (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek /*	$NetBSD: hash_test.c,v 1.6 2014/12/10 04:37:53 christos Exp $	*/
2*00b67f09SDavid van Moolenbroek 
3*00b67f09SDavid van Moolenbroek /*
4*00b67f09SDavid van Moolenbroek  * Copyright (C) 2004-2007, 2014  Internet Systems Consortium, Inc. ("ISC")
5*00b67f09SDavid van Moolenbroek  * Copyright (C) 2000, 2001  Internet Software Consortium.
6*00b67f09SDavid van Moolenbroek  *
7*00b67f09SDavid van Moolenbroek  * Permission to use, copy, modify, and/or distribute this software for any
8*00b67f09SDavid van Moolenbroek  * purpose with or without fee is hereby granted, provided that the above
9*00b67f09SDavid van Moolenbroek  * copyright notice and this permission notice appear in all copies.
10*00b67f09SDavid van Moolenbroek  *
11*00b67f09SDavid van Moolenbroek  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
12*00b67f09SDavid van Moolenbroek  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13*00b67f09SDavid van Moolenbroek  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14*00b67f09SDavid van Moolenbroek  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15*00b67f09SDavid van Moolenbroek  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
16*00b67f09SDavid van Moolenbroek  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*00b67f09SDavid van Moolenbroek  * PERFORMANCE OF THIS SOFTWARE.
18*00b67f09SDavid van Moolenbroek  */
19*00b67f09SDavid van Moolenbroek 
20*00b67f09SDavid van Moolenbroek /* Id: hash_test.c,v 1.19 2007/06/19 23:46:59 tbox Exp  */
21*00b67f09SDavid van Moolenbroek 
22*00b67f09SDavid van Moolenbroek /*! \file */
23*00b67f09SDavid van Moolenbroek #include <config.h>
24*00b67f09SDavid van Moolenbroek 
25*00b67f09SDavid van Moolenbroek #include <stdio.h>
26*00b67f09SDavid van Moolenbroek #include <string.h>
27*00b67f09SDavid van Moolenbroek 
28*00b67f09SDavid van Moolenbroek #include <isc/hmacmd5.h>
29*00b67f09SDavid van Moolenbroek #include <isc/hmacsha.h>
30*00b67f09SDavid van Moolenbroek #include <isc/md5.h>
31*00b67f09SDavid van Moolenbroek #include <isc/sha1.h>
32*00b67f09SDavid van Moolenbroek #include <isc/util.h>
33*00b67f09SDavid van Moolenbroek #include <isc/string.h>
34*00b67f09SDavid van Moolenbroek 
35*00b67f09SDavid van Moolenbroek static void
print_digest(const char * s,const char * hash,unsigned char * d,unsigned int words)36*00b67f09SDavid van Moolenbroek print_digest(const char *s, const char *hash, unsigned char *d,
37*00b67f09SDavid van Moolenbroek 	     unsigned int words)
38*00b67f09SDavid van Moolenbroek {
39*00b67f09SDavid van Moolenbroek 	unsigned int i, j;
40*00b67f09SDavid van Moolenbroek 
41*00b67f09SDavid van Moolenbroek 	printf("hash (%s) %s:\n\t", hash, s);
42*00b67f09SDavid van Moolenbroek 	for (i = 0; i < words; i++) {
43*00b67f09SDavid van Moolenbroek 		printf(" ");
44*00b67f09SDavid van Moolenbroek 		for (j = 0; j < 4; j++)
45*00b67f09SDavid van Moolenbroek 			printf("%02x", d[i * 4 + j]);
46*00b67f09SDavid van Moolenbroek 	}
47*00b67f09SDavid van Moolenbroek 	printf("\n");
48*00b67f09SDavid van Moolenbroek }
49*00b67f09SDavid van Moolenbroek 
50*00b67f09SDavid van Moolenbroek int
main(int argc,char ** argv)51*00b67f09SDavid van Moolenbroek main(int argc, char **argv) {
52*00b67f09SDavid van Moolenbroek 	isc_sha1_t sha1;
53*00b67f09SDavid van Moolenbroek 	isc_sha224_t sha224;
54*00b67f09SDavid van Moolenbroek 	isc_md5_t md5;
55*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_t hmacmd5;
56*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_t hmacsha1;
57*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_t hmacsha224;
58*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_t hmacsha256;
59*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_t hmacsha384;
60*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_t hmacsha512;
61*00b67f09SDavid van Moolenbroek 	unsigned char digest[ISC_SHA512_DIGESTLENGTH];
62*00b67f09SDavid van Moolenbroek 	unsigned char buffer[1024];
63*00b67f09SDavid van Moolenbroek 	const char *s;
64*00b67f09SDavid van Moolenbroek 	unsigned char key[20];
65*00b67f09SDavid van Moolenbroek 
66*00b67f09SDavid van Moolenbroek 	UNUSED(argc);
67*00b67f09SDavid van Moolenbroek 	UNUSED(argv);
68*00b67f09SDavid van Moolenbroek 
69*00b67f09SDavid van Moolenbroek 	s = "abc";
70*00b67f09SDavid van Moolenbroek 	isc_sha1_init(&sha1);
71*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
72*00b67f09SDavid van Moolenbroek 	isc_sha1_update(&sha1, buffer, strlen(s));
73*00b67f09SDavid van Moolenbroek 	isc_sha1_final(&sha1, digest);
74*00b67f09SDavid van Moolenbroek 	print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4);
75*00b67f09SDavid van Moolenbroek 
76*00b67f09SDavid van Moolenbroek 	s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
77*00b67f09SDavid van Moolenbroek 	isc_sha1_init(&sha1);
78*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
79*00b67f09SDavid van Moolenbroek 	isc_sha1_update(&sha1, buffer, strlen(s));
80*00b67f09SDavid van Moolenbroek 	isc_sha1_final(&sha1, digest);
81*00b67f09SDavid van Moolenbroek 	print_digest(s, "sha1", digest, ISC_SHA1_DIGESTLENGTH/4);
82*00b67f09SDavid van Moolenbroek 
83*00b67f09SDavid van Moolenbroek 	s = "abc";
84*00b67f09SDavid van Moolenbroek 	isc_sha224_init(&sha224);
85*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
86*00b67f09SDavid van Moolenbroek 	isc_sha224_update(&sha224, buffer, strlen(s));
87*00b67f09SDavid van Moolenbroek 	isc_sha224_final(digest, &sha224);
88*00b67f09SDavid van Moolenbroek 	print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4);
89*00b67f09SDavid van Moolenbroek 
90*00b67f09SDavid van Moolenbroek 	s = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
91*00b67f09SDavid van Moolenbroek 	isc_sha224_init(&sha224);
92*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
93*00b67f09SDavid van Moolenbroek 	isc_sha224_update(&sha224, buffer, strlen(s));
94*00b67f09SDavid van Moolenbroek 	isc_sha224_final(digest, &sha224);
95*00b67f09SDavid van Moolenbroek 	print_digest(s, "sha224", digest, ISC_SHA224_DIGESTLENGTH/4);
96*00b67f09SDavid van Moolenbroek 
97*00b67f09SDavid van Moolenbroek 	s = "abc";
98*00b67f09SDavid van Moolenbroek 	isc_md5_init(&md5);
99*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
100*00b67f09SDavid van Moolenbroek 	isc_md5_update(&md5, buffer, strlen(s));
101*00b67f09SDavid van Moolenbroek 	isc_md5_final(&md5, digest);
102*00b67f09SDavid van Moolenbroek 	print_digest(s, "md5", digest, 4);
103*00b67f09SDavid van Moolenbroek 
104*00b67f09SDavid van Moolenbroek 	/*
105*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-MD5 examples from RFC2104
106*00b67f09SDavid van Moolenbroek 	 */
107*00b67f09SDavid van Moolenbroek 	s = "Hi There";
108*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 16);
109*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_init(&hmacmd5, key, 16);
110*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
111*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
112*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_sign(&hmacmd5, digest);
113*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacmd5", digest, 4);
114*00b67f09SDavid van Moolenbroek 
115*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
116*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
117*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_init(&hmacmd5, key, 4);
118*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
119*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
120*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_sign(&hmacmd5, digest);
121*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacmd5", digest, 4);
122*00b67f09SDavid van Moolenbroek 
123*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
124*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
125*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
126*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
127*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
128*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 16);
129*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_init(&hmacmd5, key, 16);
130*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
131*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_update(&hmacmd5, buffer, strlen(s));
132*00b67f09SDavid van Moolenbroek 	isc_hmacmd5_sign(&hmacmd5, digest);
133*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacmd5", digest, 4);
134*00b67f09SDavid van Moolenbroek 
135*00b67f09SDavid van Moolenbroek 	/*
136*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-SHA1 examples from RFC4634.
137*00b67f09SDavid van Moolenbroek 	 */
138*00b67f09SDavid van Moolenbroek 	s = "Hi There";
139*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 20);
140*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_init(&hmacsha1, key, 20);
141*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
142*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
143*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
144*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
145*00b67f09SDavid van Moolenbroek 
146*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
147*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
148*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_init(&hmacsha1, key, 4);
149*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
150*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
151*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
152*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
153*00b67f09SDavid van Moolenbroek 
154*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
155*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
156*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
157*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
158*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
159*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 20);
160*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_init(&hmacsha1, key, 20);
161*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
162*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_update(&hmacsha1, buffer, strlen(s));
163*00b67f09SDavid van Moolenbroek 	isc_hmacsha1_sign(&hmacsha1, digest, ISC_SHA1_DIGESTLENGTH);
164*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha1", digest, ISC_SHA1_DIGESTLENGTH/4);
165*00b67f09SDavid van Moolenbroek 
166*00b67f09SDavid van Moolenbroek 	/*
167*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-SHA224 examples from RFC4634.
168*00b67f09SDavid van Moolenbroek 	 */
169*00b67f09SDavid van Moolenbroek 	s = "Hi There";
170*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 20);
171*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_init(&hmacsha224, key, 20);
172*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
173*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
174*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
175*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
176*00b67f09SDavid van Moolenbroek 
177*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
178*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
179*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_init(&hmacsha224, key, 4);
180*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
181*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
182*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
183*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
184*00b67f09SDavid van Moolenbroek 
185*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
186*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
187*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
188*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
189*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
190*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 20);
191*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_init(&hmacsha224, key, 20);
192*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
193*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_update(&hmacsha224, buffer, strlen(s));
194*00b67f09SDavid van Moolenbroek 	isc_hmacsha224_sign(&hmacsha224, digest, ISC_SHA224_DIGESTLENGTH);
195*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha224", digest, ISC_SHA224_DIGESTLENGTH/4);
196*00b67f09SDavid van Moolenbroek 
197*00b67f09SDavid van Moolenbroek 	/*
198*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-SHA256 examples from RFC4634.
199*00b67f09SDavid van Moolenbroek 	 */
200*00b67f09SDavid van Moolenbroek 	s = "Hi There";
201*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 20);
202*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_init(&hmacsha256, key, 20);
203*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
204*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
205*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
206*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
207*00b67f09SDavid van Moolenbroek 
208*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
209*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
210*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_init(&hmacsha256, key, 4);
211*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
212*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
213*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
214*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
215*00b67f09SDavid van Moolenbroek 
216*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
217*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
218*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
219*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
220*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
221*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 20);
222*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_init(&hmacsha256, key, 20);
223*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
224*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_update(&hmacsha256, buffer, strlen(s));
225*00b67f09SDavid van Moolenbroek 	isc_hmacsha256_sign(&hmacsha256, digest, ISC_SHA256_DIGESTLENGTH);
226*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha256", digest, ISC_SHA256_DIGESTLENGTH/4);
227*00b67f09SDavid van Moolenbroek 
228*00b67f09SDavid van Moolenbroek 	/*
229*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-SHA384 examples from RFC4634.
230*00b67f09SDavid van Moolenbroek 	 */
231*00b67f09SDavid van Moolenbroek 	s = "Hi There";
232*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 20);
233*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_init(&hmacsha384, key, 20);
234*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
235*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
236*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
237*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
238*00b67f09SDavid van Moolenbroek 
239*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
240*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
241*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_init(&hmacsha384, key, 4);
242*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
243*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
244*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
245*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
246*00b67f09SDavid van Moolenbroek 
247*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
248*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
249*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
250*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
251*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
252*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 20);
253*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_init(&hmacsha384, key, 20);
254*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
255*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_update(&hmacsha384, buffer, strlen(s));
256*00b67f09SDavid van Moolenbroek 	isc_hmacsha384_sign(&hmacsha384, digest, ISC_SHA384_DIGESTLENGTH);
257*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha384", digest, ISC_SHA384_DIGESTLENGTH/4);
258*00b67f09SDavid van Moolenbroek 
259*00b67f09SDavid van Moolenbroek 	/*
260*00b67f09SDavid van Moolenbroek 	 * The 3 HMAC-SHA512 examples from RFC4634.
261*00b67f09SDavid van Moolenbroek 	 */
262*00b67f09SDavid van Moolenbroek 	s = "Hi There";
263*00b67f09SDavid van Moolenbroek 	memset(key, 0x0b, 20);
264*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_init(&hmacsha512, key, 20);
265*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
266*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
267*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
268*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
269*00b67f09SDavid van Moolenbroek 
270*00b67f09SDavid van Moolenbroek 	s = "what do ya want for nothing?";
271*00b67f09SDavid van Moolenbroek 	strcpy((char *)key, "Jefe");
272*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_init(&hmacsha512, key, 4);
273*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
274*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
275*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
276*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
277*00b67f09SDavid van Moolenbroek 
278*00b67f09SDavid van Moolenbroek 	s = "\335\335\335\335\335\335\335\335\335\335"
279*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
280*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
281*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335"
282*00b67f09SDavid van Moolenbroek 	    "\335\335\335\335\335\335\335\335\335\335";
283*00b67f09SDavid van Moolenbroek 	memset(key, 0xaa, 20);
284*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_init(&hmacsha512, key, 20);
285*00b67f09SDavid van Moolenbroek 	memmove(buffer, s, strlen(s));
286*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_update(&hmacsha512, buffer, strlen(s));
287*00b67f09SDavid van Moolenbroek 	isc_hmacsha512_sign(&hmacsha512, digest, ISC_SHA512_DIGESTLENGTH);
288*00b67f09SDavid van Moolenbroek 	print_digest(s, "hmacsha512", digest, ISC_SHA512_DIGESTLENGTH/4);
289*00b67f09SDavid van Moolenbroek 
290*00b67f09SDavid van Moolenbroek 	return (0);
291*00b67f09SDavid van Moolenbroek }
292