summaryrefslogtreecommitdiffstats
path: root/libhmac/sha1hmactest.c
diff options
context:
space:
mode:
Diffstat (limited to 'libhmac/sha1hmactest.c')
-rw-r--r--libhmac/sha1hmactest.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/libhmac/sha1hmactest.c b/libhmac/sha1hmactest.c
new file mode 100644
index 0000000..d571571
--- /dev/null
+++ b/libhmac/sha1hmactest.c
@@ -0,0 +1,76 @@
+/*
+** Copyright 1998 - 1999 Double Precision, Inc.
+** See COPYING for distribution information.
+*/
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define SHA1_INTERNAL
+#include "../sha1/sha1.h"
+#include "hmac.h"
+
+#include <stdio.h>
+
+
+static struct {
+ const char *key, *data;
+ } testcases[]={
+ {"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
+ "Hi There"},
+ {"Jefe", "what do ya want for nothing?" },
+
+ {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
+ "\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"},
+
+ {"\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",
+ "\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"},
+
+ {"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
+ "Test With Truncation"},
+
+ {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
+ "Test Using Larger Than Block-Size Key - Hash Key First"},
+
+ {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
+ "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"}
+ } ;
+
+int main()
+{
+ unsigned i, j;
+
+ for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
+ {
+ SHA1_DIGEST ok, ik, hash;
+
+ hmac_hashkey(&hmac_sha1, testcases[i].key,
+ strlen(testcases[i].key), ok, ik);
+
+ hmac_hashtext(&hmac_sha1, testcases[i].data,
+ strlen(testcases[i].data), ok, ik, hash);
+
+ printf("test_cases[%i].digest=0x", i+1);
+ for (j=0; j<SHA1_DIGEST_SIZE; j++)
+ printf("%02x", hash[j]);
+ printf("\n");
+ }
+
+ for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
+ {
+ SHA256_DIGEST ok, ik, hash;
+
+ hmac_hashkey(&hmac_sha256, testcases[i].key,
+ strlen(testcases[i].key), ok, ik);
+
+ hmac_hashtext(&hmac_sha256, testcases[i].data,
+ strlen(testcases[i].data), ok, ik, hash);
+
+ printf("test_cases[%i].digest256=0x", i+1);
+ for (j=0; j<SHA256_DIGEST_SIZE; j++)
+ printf("%02x", hash[j]);
+ printf("\n");
+ }
+ return (0);
+}