Back to index

courier  0.68.2
sha1hmactest.c
Go to the documentation of this file.
00001 /*
00002 ** Copyright 1998 - 1999 Double Precision, Inc.
00003 ** See COPYING for distribution information.
00004 */
00005 
00006 #if    HAVE_CONFIG_H
00007 #include      "config.h"
00008 #endif
00009 
00010 #define       SHA1_INTERNAL
00011 #include      "../sha1/sha1.h"
00012 #include      "hmac.h"
00013 
00014 #include      <stdio.h>
00015 
00016 
00017 static struct {
00018        const char *key, *data;
00019        } testcases[]={
00020        {"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
00021               "Hi There"},
00022        {"Jefe", "what do ya want for nothing?" },
00023 
00024        {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
00025               "\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"},
00026 
00027        {"\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",
00028               "\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"},
00029 
00030        {"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
00031               "Test With Truncation"},
00032 
00033        {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
00034        "Test Using Larger Than Block-Size Key - Hash Key First"},
00035 
00036        {"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
00037        "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"}
00038        } ;
00039 
00040 int main()
00041 {
00042        unsigned i, j;
00043 
00044        for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
00045        {
00046        SHA1_DIGEST ok, ik, hash;
00047 
00048               hmac_hashkey(&hmac_sha1, testcases[i].key,
00049                      strlen(testcases[i].key), ok, ik);
00050 
00051               hmac_hashtext(&hmac_sha1, testcases[i].data,
00052                      strlen(testcases[i].data), ok, ik, hash);
00053 
00054               printf("test_cases[%i].digest=0x", i+1);
00055               for (j=0; j<SHA1_DIGEST_SIZE; j++)
00056                      printf("%02x", hash[j]);
00057               printf("\n");
00058        }
00059 
00060        for (i=0; i<sizeof(testcases)/sizeof(testcases[0]); i++)
00061        {
00062        SHA256_DIGEST ok, ik, hash;
00063 
00064               hmac_hashkey(&hmac_sha256, testcases[i].key,
00065                      strlen(testcases[i].key), ok, ik);
00066 
00067               hmac_hashtext(&hmac_sha256, testcases[i].data,
00068                      strlen(testcases[i].data), ok, ik, hash);
00069 
00070               printf("test_cases[%i].digest256=0x", i+1);
00071               for (j=0; j<SHA256_DIGEST_SIZE; j++)
00072                      printf("%02x", hash[j]);
00073               printf("\n");
00074        }
00075        return (0);
00076 }