X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=test_src%2Fmain-threefish-test.c;h=af8544655f3ebea561f0d9221303d19f896ddada;hp=74a2acabdd27133ad0d1a213bcd3a782959949ac;hb=4b5da1dc27a791b5c448274a3db09cd035b33493;hpb=4147d732efd04605764a2820d4478f33a0cdf1fa diff --git a/test_src/main-threefish-test.c b/test_src/main-threefish-test.c index 74a2aca..af85446 100644 --- a/test_src/main-threefish-test.c +++ b/test_src/main-threefish-test.c @@ -1,7 +1,7 @@ /* main-threefish-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 @@ -21,25 +21,47 @@ * */ -#include "config.h" -#include "serial-tools.h" -#include "uart.h" -#include "debug.h" + +#include "main-test-common.h" #include "threefish.h" -#include "nessie_bc_test.h" -#include "cli.h" #include "performance_test.h" +#include "bcal-performance.h" +#include "bcal-nessie.h" +#include "bcal_threefish256.h" +#include "bcal_threefish512.h" +#include "bcal_threefish1024.h" -#include -#include -#include - -char* algo_name = "Threefish"; +char *algo_name = "Threefish"; +const bcdesc_t *const algolist[] PROGMEM = { + (bcdesc_t*)&threefish256_desc, + (bcdesc_t*)&threefish512_desc, + (bcdesc_t*)&threefish1024_desc, + NULL +}; /***************************************************************************** * additional validation-functions * *****************************************************************************/ + +void threefish256_dump(threefish256_ctx_t *ctx){ + uint8_t i; + cli_putstr_P(PSTR("\r\n=== ctx dump (256) === \r\n k: ")); + for(i=0; i<5; ++i){ + cli_hexdump(&(ctx->k[i]), 8); + cli_putc(' '); + } + cli_putstr_P(PSTR("\r\n t: ")); + for(i=0; i<3; ++i){ + cli_hexdump(&(ctx->t[i]), 8); + cli_putc(' '); + } +} + +void testrun_nessie_threefish(void){ + bcal_nessie_multiple(algolist); +} + void testrun_stdtest_threefish256(void){ uint8_t key[32], data[32]; uint8_t tweak[16]; @@ -52,25 +74,19 @@ void testrun_stdtest_threefish256(void){ memset(tweak, 0, 16); cli_putstr_P(PSTR("\r\nkey: ")); - cli_hexdump(key, 32); + cli_hexdump_block(key, 32, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); + cli_hexdump_block(data, 32, 4, 16); threefish256_init(key, tweak, &ctx); threefish256_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); - /* - cli_hexdump_rev(data, 8); - cli_putc(' '); - cli_hexdump_rev(data+8, 8); - cli_putc(' '); - cli_hexdump_rev(data+16, 8); - cli_putc(' '); - cli_hexdump_rev(data+24, 8); - cli_putc(' '); - */ + cli_hexdump_block(data, 32, 4, 16); + cli_putstr_P(PSTR("\r\ndecipher: ")); + threefish256_dec(data, &ctx); + cli_hexdump_block(data, 32, 4, 16); + /* second test */ for(i=0; i<32; ++i){ key[i] = 0x10+i; @@ -79,16 +95,19 @@ void testrun_stdtest_threefish256(void){ for(i=0; i<16; ++i){ tweak[i] = i; } - cli_putstr_P(PSTR("\r\n\r\nkey: ")); - cli_hexdump(key, 32); + cli_putstr_P(PSTR("\r\nkey: ")); + cli_hexdump_block(key, 32, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); + cli_hexdump_block(data, 32, 4, 16); threefish256_init(key, tweak, &ctx); threefish256_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); + cli_hexdump_block(data, 32, 4, 16); + cli_putstr_P(PSTR("\r\ndecipher: ")); + threefish256_dec(data, &ctx); + cli_hexdump_block(data, 32, 4, 16); } void testrun_stdtest_threefish512(void){ @@ -103,21 +122,21 @@ void testrun_stdtest_threefish512(void){ memset(tweak, 0, 16); cli_putstr_P(PSTR("\r\nkey: ")); - cli_hexdump(key, 32); + cli_hexdump_block(key, 32, 4, 16); cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+32, 32); + cli_hexdump_block(key+32, 32, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); + cli_hexdump_block(data, 64, 4, 16); threefish512_init(key, tweak, &ctx); threefish512_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); + cli_hexdump_block(data, 64, 4, 16); + threefish512_dec(data, &ctx); + cli_putstr_P(PSTR("\r\ndecipher: ")); + cli_hexdump_block(data, 64, 4, 16); + for(i=0; i<64; ++i){ key[i] = 0x10+i; @@ -126,22 +145,22 @@ void testrun_stdtest_threefish512(void){ for(i=0; i<16; ++i){ tweak[i] = i; } - cli_putstr_P(PSTR("\r\n\r\nkey: ")); - cli_hexdump(key, 32); + cli_putstr_P(PSTR("\r\nkey: ")); + cli_hexdump_block(key, 32, 4, 16); cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+32, 32); + cli_hexdump_block(key+32, 32, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); + cli_hexdump_block(data, 64, 4, 16); threefish512_init(key, tweak, &ctx); threefish512_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); + cli_hexdump_block(data, 64, 4, 16); + threefish512_dec(data, &ctx); + cli_putstr_P(PSTR("\r\ndecipher: ")); + cli_hexdump_block(data, 64, 4, 16); + } void testrun_stdtest_threefish1024(void){ @@ -156,34 +175,19 @@ void testrun_stdtest_threefish1024(void){ memset(tweak, 0, 16); cli_putstr_P(PSTR("\r\nkey: ")); - cli_hexdump(key, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+96, 32); + cli_hexdump_block(key, 128, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+96, 32); + cli_hexdump_block(data, 128, 4, 16); threefish1024_init(key, tweak, &ctx); threefish1024_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+96, 32); - + cli_hexdump_block(data, 128, 4, 16); + threefish1024_dec(data, &ctx); + cli_putstr_P(PSTR("\r\ndecipher: ")); + cli_hexdump_block(data, 128, 4, 16); + for(i=0; i<128; ++i){ key[i] = 0x10+i; data[i] = 0xFF-i; @@ -191,35 +195,20 @@ void testrun_stdtest_threefish1024(void){ for(i=0; i<16; ++i){ tweak[i] = i; } - cli_putstr_P(PSTR("\r\n\r\nkey: ")); - cli_hexdump(key, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(key+96, 32); + cli_putstr_P(PSTR("\r\nkey: ")); + cli_hexdump_block(key, 128, 4, 16); cli_putstr_P(PSTR("\r\ntweak: ")); - cli_hexdump(tweak, 16); + cli_hexdump_block(tweak, 16, 4, 16); cli_putstr_P(PSTR("\r\nplain: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+96, 32); + cli_hexdump_block(data, 128, 4, 16); threefish1024_init(key, tweak, &ctx); threefish1024_enc(data, &ctx); cli_putstr_P(PSTR("\r\ncipher: ")); - cli_hexdump(data, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+32, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+64, 32); - cli_putstr_P(PSTR("\r\n ")); - cli_hexdump(data+96, 32); - } + cli_hexdump_block(data, 128, 4, 16); + threefish1024_dec(data, &ctx); + cli_putstr_P(PSTR("\r\ndecipher: ")); + cli_hexdump_block(data, 128, 4, 16); +} void testrun_stdtest_threefish(void){ @@ -228,109 +217,8 @@ void testrun_stdtest_threefish(void){ testrun_stdtest_threefish1024(); } -void testrun_performance_threefish256(void){ - uint64_t t; - char str[16]; - uint8_t key[THREEFISH256_BLOCKSIZE_B]; - uint8_t data[THREEFISH256_BLOCKSIZE_B]; - uint8_t tweak[16]; - threefish256_ctx_t ctx; - - cli_putstr_P(PSTR("\r\nThreefish-256 performance:")); - - calibrateTimer(); - print_overhead(); - -// memset(key, 0, THREEFISH256_BLOCKSIZE_B); -// memset(tweak, 0, 16); - - startTimer(1); - threefish256_init(key, tweak, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - startTimer(1); - threefish256_enc(data, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tencrypt time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - cli_putstr_P(PSTR("\r\n")); -} - -void testrun_performance_threefish512(void){ - uint64_t t; - char str[16]; - uint8_t key[THREEFISH512_BLOCKSIZE_B]; - uint8_t data[THREEFISH512_BLOCKSIZE_B]; - uint8_t tweak[16]; - threefish512_ctx_t ctx; - - cli_putstr_P(PSTR("\r\nThreefish-512 performance:")); - - calibrateTimer(); - print_overhead(); - -// memset(key, 0, THREEFISH512_BLOCKSIZE_B); -// memset(tweak, 0, 16); - - startTimer(1); - threefish512_init(key, tweak, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - startTimer(1); - threefish512_enc(data, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tencrypt time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - cli_putstr_P(PSTR("\r\n")); -} - -void testrun_performance_threefish1024(void){ - uint64_t t; - char str[16]; - uint8_t key[THREEFISH1024_BLOCKSIZE_B]; - uint8_t data[THREEFISH1024_BLOCKSIZE_B]; - uint8_t tweak[16]; - threefish1024_ctx_t ctx; - - cli_putstr_P(PSTR("\r\nThreefish-1024 performance:")); - - calibrateTimer(); - print_overhead(); - -// memset(key, 0, THREEFISH1024_BLOCKSIZE_B); -// memset(tweak, 0, 16); - - startTimer(1); - threefish1024_init(key, tweak, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tctx-gen time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - startTimer(1); - threefish1024_enc(data, &ctx); - t = stopTimer(); - cli_putstr_P(PSTR("\r\n\tencrypt time: ")); - ultoa((unsigned long)t, str, 10); - cli_putstr(str); - - cli_putstr_P(PSTR("\r\n")); -} - void testrun_performance_threefish(void){ - testrun_performance_threefish256(); - testrun_performance_threefish512(); - testrun_performance_threefish1024(); + bcal_performance_multiple(algolist); } void init_test(void){ @@ -352,13 +240,19 @@ void init_test(void){ const char nessie_str[] PROGMEM = "nessie"; const char test_str[] PROGMEM = "test"; +const char test256_str[] PROGMEM = "test256"; +const char test512_str[] PROGMEM = "test512"; +const char test1024_str[] PROGMEM = "test1024"; const char inittest_str[] PROGMEM = "inittest"; const char performance_str[] PROGMEM = "performance"; const char echo_str[] PROGMEM = "echo"; -cmdlist_entry_t cmdlist[] PROGMEM = { -// { nessie_str, NULL, testrun_nessie_noekeon}, +const cmdlist_entry_t cmdlist[] PROGMEM = { + { nessie_str, NULL, testrun_nessie_threefish}, { test_str, NULL, testrun_stdtest_threefish}, + { test256_str, NULL, testrun_stdtest_threefish256}, + { test512_str, NULL, testrun_stdtest_threefish512}, + { test1024_str, NULL, testrun_stdtest_threefish1024}, { inittest_str, NULL, init_test}, { performance_str, NULL, testrun_performance_threefish}, { echo_str, (void*)1, (void_fpt)echo_ctrl}, @@ -366,14 +260,10 @@ cmdlist_entry_t cmdlist[] PROGMEM = { }; int main (void){ - DEBUG_INIT(); - - cli_rx = uart_getc; - cli_tx = uart_putc; - 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); + main_setup(); + + for(;;){ + welcome_msg(algo_name); + cmd_interface(cmdlist); } }