]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - test_src/nessie_hash_test.c
introducing the tweak on skein
[avr-crypto-lib.git] / test_src / nessie_hash_test.c
index ef5d968ed871185b250f61d01d273221bc741526..04895b0c89e6f36683a40e2adcda97dde093fac2 100644 (file)
@@ -32,6 +32,7 @@
 #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)
@@ -49,12 +50,12 @@ void ascii_hash_P(PGM_P data, PGM_P desc){
        sl = strlen_P(data);
        while(sl>=BLOCKSIZE_B){
                memcpy_P(buffer, data, BLOCKSIZE_B);
-               nessie_hash_ctx.hash_next(buffer, ctx);
+               nessie_hash_ctx.hash_next(ctx, buffer);
                data += BLOCKSIZE_B;
                sl   -= BLOCKSIZE_B;
        }
        memcpy_P(buffer, data, sl);
-       nessie_hash_ctx.hash_last(buffer, sl*8, ctx);
+       nessie_hash_ctx.hash_last(ctx, buffer, sl*8);
        nessie_hash_ctx.hash_conv(hash, ctx);
        nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
 }
@@ -74,11 +75,11 @@ void amillion_hash(void){
        memset(block, 'a', nessie_hash_ctx.blocksize_B);
        nessie_hash_ctx.hash_init(ctx);
        while(n>=nessie_hash_ctx.blocksize_B){
-               nessie_hash_ctx.hash_next(block, ctx);
+               nessie_hash_ctx.hash_next(ctx, block);
                n    -= nessie_hash_ctx.blocksize_B;
                NESSIE_SEND_ALIVE_A(i++);
        }
-       nessie_hash_ctx.hash_last(block, n*8, ctx);
+       nessie_hash_ctx.hash_last(ctx, block, n*8);
        nessie_hash_ctx.hash_conv(hash, ctx);
        nessie_print_item("hash", hash, (nessie_hash_ctx.hashsize_b+7)/8);
 }
@@ -105,10 +106,10 @@ void zero_hash(uint16_t n){
        memset(block, 0, nessie_hash_ctx.blocksize_B); 
        nessie_hash_ctx.hash_init(ctx);
        while(n>=nessie_hash_ctx.blocksize_B*8){
-               nessie_hash_ctx.hash_next(block, ctx);
+               nessie_hash_ctx.hash_next(ctx, block);
                n   -= nessie_hash_ctx.blocksize_B*8;
        }
-       nessie_hash_ctx.hash_last(block, n, ctx);
+       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);
 }
@@ -147,10 +148,10 @@ void one_in512_hash(uint16_t pos){
        block[pos>>3] = 0x80>>(pos&0x7);
        nessie_hash_ctx.hash_init(ctx);
        while(n>=nessie_hash_ctx.blocksize_B*8){
-               nessie_hash_ctx.hash_next(block, ctx);
+               nessie_hash_ctx.hash_next(ctx, block);
                n   -= nessie_hash_ctx.blocksize_B*8;
        }
-       nessie_hash_ctx.hash_last(block, n, ctx);
+       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);
 }
@@ -179,15 +180,17 @@ void tv4_hash(void){
        
        nessie_hash_ctx.hash_init(ctx);
        while(n>=nessie_hash_ctx.blocksize_B*8){
-               nessie_hash_ctx.hash_next(block, ctx);
+               nessie_hash_ctx.hash_next(ctx, block);
                n    -= nessie_hash_ctx.blocksize_B*8;
        }
-       nessie_hash_ctx.hash_last(block, n, ctx);
+       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(hash, nessie_hash_ctx.hashsize_b, ctx);
+               nessie_hash_ctx.hash_last(ctx, hash, nessie_hash_ctx.hashsize_b);
                nessie_hash_ctx.hash_conv(hash, ctx);
                NESSIE_SEND_ALIVE_A(i);
        }
@@ -242,7 +245,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);