Imported upstream version 0.59.3
[hcoop/debian/courier-authlib.git] / libhmac / sha1hmactest.c
CommitLineData
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
16static const char rcsid[]="$Id: sha1hmactest.c,v 1.4 2005/02/21 03:18:30 mrsam Exp $";
17
18static struct {
19 const char *key, *data;
20 } testcases[]={
21 {"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
22 "Hi There"},
23 {"Jefe", "what do ya want for nothing?" },
24
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"},
27
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"},
30
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"},
33
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"},
36
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"}
39 } ;
40
41int main()
42{
43 unsigned i, j;
44
45 for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
46 {
47 SHA1_DIGEST ok, ik, hash;
48
49 hmac_hashkey(&hmac_sha1, testcases[i].key,
50 strlen(testcases[i].key), ok, ik);
51
52 hmac_hashtext(&hmac_sha1, testcases[i].data,
53 strlen(testcases[i].data), ok, ik, hash);
54
55 printf("test_cases[%i].digest=0x", i+1);
56 for (j=0; j<SHA1_DIGEST_SIZE; j++)
57 printf("%02x", hash[j]);
58 printf("\n");
59 }
60
61 for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
62 {
63 SHA256_DIGEST ok, ik, hash;
64
65 hmac_hashkey(&hmac_sha256, testcases[i].key,
66 strlen(testcases[i].key), ok, ik);
67
68 hmac_hashtext(&hmac_sha256, testcases[i].data,
69 strlen(testcases[i].data), ok, ik, hash);
70
71 printf("test_cases[%i].digest256=0x", i+1);
72 for (j=0; j<SHA256_DIGEST_SIZE; j++)
73 printf("%02x", hash[j]);
74 printf("\n");
75 }
76 return (0);
77}