X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=test_src%2Fnessie_hash_test.c;h=afcd7aeb79bad0f02ef9524ba1372e196c7aea7b;hp=27df4c1d9cf5044bd99199d0b7016d74d594b1c7;hb=4b5da1dc27a791b5c448274a3db09cd035b33493;hpb=5c68d38237aa51b91a26309c24e8e38c7fbdffbe diff --git a/test_src/nessie_hash_test.c b/test_src/nessie_hash_test.c index 27df4c1..afcd7ae 100644 --- a/test_src/nessie_hash_test.c +++ b/test_src/nessie_hash_test.c @@ -1,7 +1,7 @@ /* nessie_hash_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 @@ -19,7 +19,7 @@ /** * * author: Daniel Otte - * email: daniel.otte@rub.de + * email: bg@nerilex.org * license: GPLv3 * * a suit for running the nessie-tests for hashes @@ -27,11 +27,13 @@ * */ #include #include +#include #include "nessie_hash_test.h" #include "nessie_common.h" #include "dbz_strings.h" nessie_hash_ctx_t nessie_hash_ctx; +uint8_t nessie_hash_quick=0; #define HASHSIZE_B ((nessie_hash_ctx.hashsize_b+7)/8) #define BLOCKSIZE_B (nessie_hash_ctx.blocksize_B) @@ -43,8 +45,8 @@ void ascii_hash_P(PGM_P data, PGM_P desc){ uint16_t sl; uint8_t buffer[BLOCKSIZE_B]; - NESSIE_PUTSTR_P(PSTR("\r\n message=")); - NESSIE_PUTSTR_P(desc); + fputs_P(PSTR("\n message="), stdout); + fputs_P(desc, stdout); nessie_hash_ctx.hash_init(ctx); sl = strlen_P(data); while(sl>=BLOCKSIZE_B){ @@ -69,8 +71,8 @@ void amillion_hash(void){ uint32_t n=1000000LL; uint16_t i=0; - NESSIE_PUTSTR_P(PSTR("\r\n message=")); - NESSIE_PUTSTR_P(PSTR("1 million times \"a\"")); + fputs_P(PSTR("\n message="), stdout); + fputs_P(PSTR("1 million times \"a\""), stdout); memset(block, 'a', nessie_hash_ctx.blocksize_B); nessie_hash_ctx.hash_init(ctx); while(n>=nessie_hash_ctx.blocksize_B){ @@ -90,17 +92,8 @@ void zero_hash(uint16_t n){ uint8_t hash[(nessie_hash_ctx.hashsize_b+7)/8]; uint8_t block[nessie_hash_ctx.blocksize_B]; - NESSIE_PUTSTR_P(PSTR("\r\n message=")); - if(n>=10000) - NESSIE_PUTC('0'+n/10000); - if(n>=1000) - NESSIE_PUTC('0'+(n/1000)%10); - if(n>=100) - NESSIE_PUTC('0'+(n/100)%10); - if(n>=10) - NESSIE_PUTC('0'+(n/10)%10); - NESSIE_PUTC('0'+n%10); - NESSIE_PUTSTR_P(PSTR(" zero bits")); + fputs_P(PSTR("\n message="), stdout); + fprintf_P(stdout, PSTR("%"PRIu16" zero bits")); memset(block, 0, nessie_hash_ctx.blocksize_B); nessie_hash_ctx.hash_init(ctx); @@ -119,28 +112,14 @@ void one_in512_hash(uint16_t pos){ uint8_t hash[(nessie_hash_ctx.hashsize_b+7)/8]; uint8_t block[nessie_hash_ctx.blocksize_B]; uint16_t n=512; - char* tab[8]={"80", "40", "20", "10", - "08", "04", "02", "01" }; + char *tab[8] = { "80", "40", "20", "10", + "08", "04", "02", "01" }; pos&=511; - NESSIE_PUTSTR_P(PSTR("\r\n message=")); - NESSIE_PUTSTR_P(PSTR("512-bit string: ")); - if((pos/8) >=10){ - NESSIE_PUTC('0'+(pos/8/10)%10); - } else { - NESSIE_PUTC(' '); - } - NESSIE_PUTC('0'+(pos/8)%10); - NESSIE_PUTSTR_P(PSTR("*00,")); - NESSIE_PUTSTR(tab[pos&7]); - NESSIE_PUTC(','); - if(63-(pos/8) >=10){ - NESSIE_PUTC('0'+((63-pos/8)/10)%10); - } else { - NESSIE_PUTC(' '); - } - NESSIE_PUTC('0'+(63-pos/8)%10); - NESSIE_PUTSTR_P(PSTR("*00")); + fputs_P(PSTR("\n message="), stdout); + fputs_P(PSTR("512-bit string: "), stdout); + + fprintf_P(stdout, PSTR("%2"PRIu16"*00,%s,%2"PRIu16"*00"), pos / 8, tab[pos & 7], 63 - pos / 8); /* now the real stuff */ memset(block, 0, 512/8); @@ -163,19 +142,10 @@ void tv4_hash(void){ uint16_t n=nessie_hash_ctx.hashsize_b; uint32_t i; - NESSIE_PUTSTR_P(PSTR("\r\n message=")); - if(nessie_hash_ctx.hashsize_b>=10000) - NESSIE_PUTC('0' + (nessie_hash_ctx.hashsize_b/10000)%10); - if(nessie_hash_ctx.hashsize_b>=1000) - NESSIE_PUTC('0' + (nessie_hash_ctx.hashsize_b/1000)%10); - if(nessie_hash_ctx.hashsize_b>=100) - NESSIE_PUTC('0' + (nessie_hash_ctx.hashsize_b/100)%10); - if(nessie_hash_ctx.hashsize_b>=10) - NESSIE_PUTC('0' + (nessie_hash_ctx.hashsize_b/10)%10); - NESSIE_PUTC('0' + nessie_hash_ctx.hashsize_b%10); + fputs_P(PSTR("\r\n message="), stdout); + fprintf_P(stdout, PSTR("%"PRIu16" zero bits"), nessie_hash_ctx.hashsize_b); - NESSIE_PUTSTR_P(PSTR(" zero bits")); - memset(block, 0, 256/8); + memset(block, 0, nessie_hash_ctx.hashsize_b/8); nessie_hash_ctx.hash_init(ctx); while(n>=nessie_hash_ctx.blocksize_B*8){ @@ -185,6 +155,8 @@ void tv4_hash(void){ nessie_hash_ctx.hash_last(ctx, block, n); nessie_hash_ctx.hash_conv(hash, ctx); nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8); + if(nessie_hash_quick) + return; for(i=1; i<100000L; ++i){ /* this assumes BLOCKSIZE >= HASHSIZE */ nessie_hash_ctx.hash_init(ctx); nessie_hash_ctx.hash_last(ctx, hash, nessie_hash_ctx.hashsize_b); @@ -212,7 +184,7 @@ void nessie_hash_run(void){ nessie_print_header(nessie_hash_ctx.name, 0, 0, nessie_hash_ctx.hashsize_b, 0, 0); /* test set 1 */ - char* challange_dbz= PSTR( + const char *challange_dbz= PSTR( "\0" "\"\" (empty string)\0" "a\0" @@ -242,7 +214,8 @@ void nessie_hash_run(void){ ascii_hash_P(challange[2*i], challange[2*i+1]); } nessie_print_set_vector(set, i); - amillion_hash(); + if(!nessie_hash_quick) + amillion_hash(); /* test set 2 */ set=2; nessie_print_setheader(set);