X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=test_src%2Fmain-sha1-test.c;h=26bee126bdf9649277b4d3cb807cc95abbf5ee14;hp=68534431ffb5d0144bd1c2abf158baaa3b04782a;hb=4b5da1dc27a791b5c448274a3db09cd035b33493;hpb=83d0614d8b17eac97f891f7de2bb3ef265751dea diff --git a/test_src/main-sha1-test.c b/test_src/main-sha1-test.c index 6853443..26bee12 100644 --- a/test_src/main-sha1-test.c +++ b/test_src/main-sha1-test.c @@ -1,7 +1,7 @@ /* main-sha1-test.c */ /* This file is part of the AVR-Crypto-Lib. - Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,38 +18,30 @@ */ /* * SHA-1 test-suit - * + * */ -#include "config.h" -#include "serial-tools.h" -#include "uart.h" -#include "debug.h" + +#include "main-test-common.h" #include "sha1.h" #include "nessie_hash_test.h" -#include "performance_test.h" +#include "hfal_sha1.h" +#include "hfal-performance.h" -#include -#include -#include -#include "cli.h" #include "shavs.h" #include "hfal_sha1.h" #include "dump.h" -char* algo_name = "SHA-1"; +char *algo_name = "SHA-1"; +const hfdesc_t *const algolist[] PROGMEM = { + (hfdesc_t*)&sha1_desc, + NULL +}; /***************************************************************************** * additional validation-functions * *****************************************************************************/ -void sha1_next_dummy(void* buffer, void* ctx){ - sha1_nextBlock(ctx, buffer); -} - -void sha1_last_dummy(void* buffer, uint16_t size_b, void* ctx){ - sha1_lastBlock(ctx, buffer, size_b); -} void testrun_nessie_sha1(void){ nessie_hash_ctx.hashsize_b = 160; @@ -57,10 +49,10 @@ void testrun_nessie_sha1(void){ nessie_hash_ctx.ctx_size_B = sizeof(sha1_ctx_t); nessie_hash_ctx.name = algo_name; nessie_hash_ctx.hash_init = (nessie_hash_init_fpt)sha1_init; - nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha1_next_dummy; - nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha1_last_dummy; + nessie_hash_ctx.hash_next = (nessie_hash_next_fpt)sha1_nextBlock; + nessie_hash_ctx.hash_last = (nessie_hash_last_fpt)sha1_lastBlock; nessie_hash_ctx.hash_conv = (nessie_hash_conv_fpt)sha1_ctx2hash; - + nessie_hash_run(); } @@ -76,18 +68,38 @@ void sha1_ctx_dump(sha1_ctx_t *s){ cli_hexdump(&(s->h[i]), 4); } cli_putstr("\r\nlength"); cli_hexdump(&i, 8); -} +} void testrun_sha1(void){ - sha1_hash_t hash; + uint8_t hash[20]; sha1(&hash,"abc",3*8); - cli_putstr("\r\nsha1(\"abc\") = \r\n\t"); + cli_putstr_P(PSTR("\r\nsha1(\"abc\") = \r\n\t")); + cli_hexdump(hash, SHA1_HASH_BITS/8); + + sha1(&hash,"\0\0\0\0\0\0\0\0", 8*8); + cli_putstr_P(PSTR("\r\nsha1(8 x 0x00) = \r\n\t")); + cli_hexdump(hash,SHA1_HASH_BITS/8); +/* + Len = 496 + Msg = 46fe5ed326c8fe376fcc92dc9e2714e2240d3253b105ad + fbb256ff7a19bc40975c604ad7c0071c4fd78a7cb64786 + e1bece548fa4833c04065fe593f6fb10 + MD = f220a7457f4588d639dc21407c942e9843f8e26b +*/ + sha1(&hash,"\x46\xfe\x5e\xd3\x26\xc8\xfe\x37" + "\x6f\xcc\x92\xdc\x9e\x27\x14\xe2" + "\x24\x0d\x32\x53\xb1\x05\xad\xfb" + "\xb2\x56\xff\x7a\x19\xbc\x40\x97" + "\x5c\x60\x4a\xd7\xc0\x07\x1c\x4f" + "\xd7\x8a\x7c\xb6\x47\x86\xe1\xbe" + "\xce\x54\x8f\xa4\x83\x3c\x04\x06" + "\x5f\xe5\x93\xf6\xfb\x10", 496); + cli_putstr_P(PSTR("\r\nsha1(tv_496) = \r\n\t")); cli_hexdump(hash,SHA1_HASH_BITS/8); - + sha1(&hash,"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",448); - cli_putstr("\r\nsha1(\"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\") = \r\n\t"); +// cli_putstr_P(PSTR("\r\nsha1(\"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\") = \r\n\t")); cli_hexdump(hash,SHA1_HASH_BITS/8); - cli_putstr("\r\nsha1(1,000,000 * 'a') = \r\n\t"); { uint8_t block[SHA1_BLOCK_BITS/8]; @@ -102,64 +114,60 @@ void testrun_sha1(void){ sha1_ctx2hash(&hash, &s); } cli_hexdump(hash,SHA1_HASH_BITS/8); - - cli_putstr("\r\nx"); } void testrun_sha1_2(void){ sha1_ctx_t ctx; - sha1_hash_t hash; + uint8_t hash[20]; sha1(&hash,"",0); - cli_putstr("\r\nsha1(NULL) = \r\n\t"); + cli_putstr_P(PSTR("\r\nsha1(NULL) = \r\n\t")); cli_hexdump(hash,SHA1_HASH_BYTES); memset(hash, 0, SHA1_HASH_BYTES); sha1_init(&ctx); sha1_lastBlock(&ctx, "", 0); - sha1_ctx2hash(&hash, &ctx); - cli_putstr("\r\nsha1(NULL) = \r\n\t"); + sha1_ctx2hash(&hash, &ctx); + cli_putstr_P(PSTR("\r\nsha1(NULL) = \r\n\t")); cli_hexdump(hash,SHA1_HASH_BYTES); } +/* +Msg = a38b899cae4edb191d88d861c842b6e32b9b67db66bdbdde8911d2b30fafa765a8190b963c28bf162c46d7b5dbde63556d114f43ceab88c7f65560f96c0c34c0 +MD = 722246b014af03ef3ba31364fc732a4ab8f38587 +*/ + +void testrun_sha1_506(void){ + uint8_t data[] = { + 0xa3, 0x8b, 0x89, 0x9c, 0xae, 0x4e, 0xdb, 0x19, + 0x1d, 0x88, 0xd8, 0x61, 0xc8, 0x42, 0xb6, 0xe3, + 0x2b, 0x9b, 0x67, 0xdb, 0x66, 0xbd, 0xbd, 0xde, + 0x89, 0x11, 0xd2, 0xb3, 0x0f, 0xaf, 0xa7, 0x65, + 0xa8, 0x19, 0x0b, 0x96, 0x3c, 0x28, 0xbf, 0x16, + 0x2c, 0x46, 0xd7, 0xb5, 0xdb, 0xde, 0x63, 0x55, + 0x6d, 0x11, 0x4f, 0x43, 0xce, 0xab, 0x88, 0xc7, + 0xf6, 0x55, 0x60, 0xf9, 0x6c, 0x0c, 0x34, 0xc0 }; + uint8_t ref[] = { + 0x72, 0x22, 0x46, 0xb0, 0x14, 0xaf, 0x03, 0xef, + 0x3b, 0xa3, 0x13, 0x64, 0xfc, 0x73, 0x2a, 0x4a, + 0xb8, 0xf3, 0x85, 0x87 }; + uint8_t hash[20]; + sha1(&hash,data,506); + cli_putstr_P(PSTR("\r\nsha1() = \r\n\t")); + cli_hexdump(hash,SHA1_HASH_BYTES); + cli_putstr_P(PSTR("\r\nshould = \r\n\t")); + cli_hexdump(ref,SHA1_HASH_BYTES); + if(memcmp(ref, hash, SHA1_HASH_BYTES)==0){ + cli_putstr_P(PSTR("\r\n[ok]")); + } else { + cli_putstr_P(PSTR("\r\n[fail]")); + } +} void testrun_performance_sha1(void){ - uint64_t t; - char str[16]; - uint8_t data[32]; - sha1_ctx_t ctx; - - calibrateTimer(); - print_overhead(); - - memset(data, 0, 32); - - startTimer(1); - sha1_init(&ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - - startTimer(1); - sha1_nextBlock(&ctx, data); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tone-block time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - - startTimer(1); - sha1_lastBlock(&ctx, data, 0); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tlast block time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - cli_putstr_P(PSTR("\r\n")); + hfal_performance_multiple(algolist); } @@ -170,43 +178,38 @@ void testrun_performance_sha1(void){ const char nessie_str[] PROGMEM = "nessie"; const char test_str[] PROGMEM = "test"; const char test2_str[] PROGMEM = "test2"; +const char test506_str[] PROGMEM = "test506"; const char performance_str[] PROGMEM = "performance"; const char echo_str[] PROGMEM = "echo"; const char shavs_list_str[] PROGMEM = "shavs_list"; const char shavs_set_str[] PROGMEM = "shavs_set"; const char shavs_test1_str[] PROGMEM = "shavs_test1"; +const char shavs_test2_str[] PROGMEM = "shavs_test2"; const char dump_str[] PROGMEM = "dump"; -cmdlist_entry_t cmdlist[] PROGMEM = { +const cmdlist_entry_t cmdlist[] PROGMEM = { { nessie_str, NULL, testrun_nessie_sha1}, { test_str, NULL, testrun_sha1}, { test2_str, NULL, testrun_sha1_2}, + { test506_str, NULL, testrun_sha1_506}, { performance_str, NULL, testrun_performance_sha1}, { echo_str, (void*)1, (void_fpt)echo_ctrl}, { shavs_list_str, NULL, shavs_listalgos}, { shavs_set_str, (void*)1, (void_fpt)shavs_setalgo}, { shavs_test1_str, NULL, shavs_test1}, + { shavs_test2_str, NULL, shavs_test2}, { dump_str, (void*)1, (void_fpt)dump}, { NULL, NULL, NULL} }; -const hfdesc_t* algolist[] PROGMEM = { - (hfdesc_t*)&sha1_desc, - NULL -}; - int main (void){ - DEBUG_INIT(); - - cli_rx = uart_getc; - cli_tx = uart_putc; - shavs_algolist=(hfdesc_t**)algolist; - shavs_algo=(hfdesc_t*)&sha1_desc; + main_setup(); + + shavs_algolist=(hfdesc_t**)algolist; + shavs_algo=(hfdesc_t*)&sha1_desc; for(;;){ - cli_putstr_P(PSTR("\r\n\r\nCrypto-VS (")); - cli_putstr(algo_name); - cli_putstr_P(PSTR(")\r\nloaded and running\r\n")); - cmd_interface(cmdlist); + welcome_msg(algo_name); + cmd_interface(cmdlist); } }