diff options
Diffstat (limited to 'test.c')
-rw-r--r-- | test.c | 69 |
1 files changed, 69 insertions, 0 deletions
@@ -0,0 +1,69 @@ +#include <stdio.h> +#include <string.h> + +#include "sha1.h" + +static void print_hex(const char* data, size_t size) +{ + int i; + printf("0x"); + for(i = 0; i < size; ++i) + printf("%x%x", ((unsigned char)data[i])/16, ((unsigned char)data[i])%16); +} + +static num_test; + +static int do_test(const char* data, size_t size, const char* expected_dgst) +{ + sha1_ctx ctx; + int i; + char dgst[SHA1_DIGEST_SIZE]; + + printf("Test %d. [%d] ", num_test++, size); + print_hex(data, size); + printf("\nExpected : "); + print_hex(expected_dgst, SHA1_DIGEST_SIZE); + printf("\n"); + + sha1_begin(&ctx); + for(i = 0; i < size; ++i) + sha1_hash(data+i, 1, &ctx); + sha1_end(dgst, &ctx); + + printf("Actual (1-byte) : "); + print_hex(dgst, SHA1_DIGEST_SIZE); + if(!memcmp(dgst, expected_dgst, SHA1_DIGEST_SIZE)) + printf(" - ok\n"); + else + { + printf(" - ERR\n"); + return 0; + } + + sha1_begin(&ctx); + sha1_hash(data, size, &ctx); + sha1_end(dgst, &ctx); + printf("Actual (1 block): "); + print_hex(dgst, SHA1_DIGEST_SIZE); + if(!memcmp(dgst, expected_dgst, SHA1_DIGEST_SIZE)) + printf(" - ok\n"); + else + { + printf(" - ERR\n"); + return 0; + } + + return 1; +} + +char t1[] = ""; +char t1_output[] = "\xda\x39\xa3\xee\x5e\x6b\x4b\x0d\x32\x55\xbf\xef\x95\x60\x18\x90\xaf\xd8\x07\x09"; + +char t2[] = "1234567890"; +char t2_output[] = "\x01\xb3\x07\xac\xba\x4f\x54\xf5\x5a\xaf\xc3\x3b\xb0\x6b\xbb\xf6\xca\x80\x3e\x9a"; + +int main() +{ + do_test(t1, sizeof(t1) - 1, t1_output); + do_test(t2, sizeof(t2) - 1, t2_output); +} |