]> git.cryptolib.org Git - avr-crypto-lib.git/commitdiff
camellia seems broken
authorbg <bg@b1d182e4-1ff8-0310-901f-bddb46175740>
Wed, 9 Jul 2008 18:26:30 +0000 (18:26 +0000)
committerbg <bg@b1d182e4-1ff8-0310-901f-bddb46175740>
Wed, 9 Jul 2008 18:26:30 +0000 (18:26 +0000)
25 files changed:
camellia.c
camellia.h
cast5.c
cast5.h
main-camellia-test.c
main-cast5-test.c
main-des-test.c
main-entropium-test.c
main-grain-test.c
main-md5-test.c
main-noekeon-test.c
main-rc5-test.c
main-rc6-test.c
main-seed-test.c
main-serpent-test.c
main-sha1-test.c
main-sha256-test.c
main-shabea-test.c
main-skipjack-test.c
main-tdes-test.c
main-trivium-test.c
mkfiles/camellia.mk
mkfiles/md5.mk
mkfiles/sha1.mk
mkfiles/sha256.mk

index e0e21597d4433c6bb4e22682f7bf60f2c5e5c702..babd15cc8d13cda9873ebd2f1f763560ad5342bc 100644 (file)
@@ -82,7 +82,7 @@ void camellia128_ctx_dump(camellia128_ctx_t *s){
 /*****************************************************************************/
 /* extern prog_uint64_t camellia_sigma[6]; */
 
-void camellia128_init(camellia128_ctx_t* s, uint8_t* key){
+void camellia128_init(uint8_t* key, camellia128_ctx_t* s){
        uint8_t i;
        s->kll = 0; /* ((uint64_t*)key)[0]; */
        
@@ -134,7 +134,7 @@ void camellia_6rounds(camellia128_ctx_t* s, uint64_t* bl, uint64_t* br, uint8_t
 /*****************************************************************************/
 
 
-void camellia128_enc(camellia128_ctx_t* s, void* block){
+void camellia128_enc(void* block, camellia128_ctx_t* s){
 
        #define BL (((uint64_t*)block)[0])
        #define BR (((uint64_t*)block)[1])
@@ -188,7 +188,7 @@ void camellia128_enc(camellia128_ctx_t* s, void* block){
 
 /*****************************************************************************/
 
-void camellia128_dec(camellia128_ctx_t* s, void* block){
+void camellia128_dec(void* block, camellia128_ctx_t* s){
 
        #define BL (((uint64_t*)block)[1])
        #define BR (((uint64_t*)block)[0])
index e27ebe82dcad8a20585b3b6d649d81e8d1eb5205..a636efa67365559fdd1ae7a41fdd9e34ab19c240 100644 (file)
@@ -29,9 +29,9 @@ typedef struct camellia128_ctx_s{
 }camellia128_ctx_t;
 
 
-void camellia128_init(camellia128_ctx_t* s, uint8_t* key);
-void camellia128_enc(camellia128_ctx_t* s, void* block);
-void camellia128_dec(camellia128_ctx_t* s, void* block);
+void camellia128_init(uint8_t* key, camellia128_ctx_t* s);
+void camellia128_enc(void* block, camellia128_ctx_t* s);
+void camellia128_dec(void* block, camellia128_ctx_t* s);
 
 
 #endif /*CAMELLIA_H_*/
diff --git a/cast5.c b/cast5.c
index 51e9e93823988c42fcaccecfe8e8557ec3834bdd..b4736c8ecbc9660282b9bfd33d15330035d31cd5 100644 (file)
--- a/cast5.c
+++ b/cast5.c
@@ -113,17 +113,17 @@ void cast5_init_rM(uint8_t *klo, uint8_t *khi, uint8_t offset, uint8_t *src, boo
  * @param key Pointer to binary key.
  * @param keylength length of keydata in bits.
  */
-void cast5_init(cast5_ctx_t* s, uint8_t* key, uint8_t keylength){
+void cast5_init(uint8_t* key, uint8_t keylength_b, cast5_ctx_t* s){
         /* we migth return if the key is valid and if setup was sucessfull */
        uint32_t x[4], z[4];
        #define BPX ((uint8_t*)&(x[0]))
        #define BPZ ((uint8_t*)&(z[0]))
-       s->shortkey = (keylength<=80);
+       s->shortkey = (keylength_b<=80);
        /* littel endian only! */
        memset(&(x[0]), 0 ,16); /* set x to zero */
-       if(keylength > 128)
-               keylength=128;
-       memcpy(&(x[0]), key, (keylength+7)/8);
+       if(keylength_b > 128)
+               keylength_b=128;
+       memcpy(&(x[0]), key, (keylength_b+7)/8);
        
 
        /* todo: merge a and b and compress the whole stuff */
@@ -275,7 +275,7 @@ uint32_t cast5_f3(uint32_t d, uint32_t m, uint8_t r){
  * @param s Pointer to cast5 roundkeys (context)
  * @param block Pointer to datablock
  */
-void cast5_enc(cast5_ctx_t *s, void* block){
+void cast5_enc(void* block, cast5_ctx_t *s){
        uint32_t l,r, x, y;
        uint8_t i;
        cast5_f_t* f[]={cast5_f1,cast5_f2,cast5_f3};
@@ -304,7 +304,7 @@ void cast5_enc(cast5_ctx_t *s, void* block){
  * @param s Pointer to cast5 roundkeys (context)
  * @param block Pointer to datablock
  */
-void cast5_dec(cast5_ctx_t *s, void* block){
+void cast5_dec(void* block, cast5_ctx_t *s){
        uint32_t l,r, x, y;
        int8_t i, rounds;
        cast5_f_t* f[]={cast5_f1,cast5_f2,cast5_f3};
diff --git a/cast5.h b/cast5.h
index 6fe8488f81ad24829f3af111d80f1aaa35717c49..717c5d7b7a9e1ac7059e115d1b8016581f7bbff0 100644 (file)
--- a/cast5.h
+++ b/cast5.h
@@ -19,7 +19,7 @@
 /* 
  * File:       cast5.h
  * Author:     Daniel Otte
- * Date:       26.07.2006
+ * Date:       2006-07-26
  * License: GPL
  * Description: Implementation of the CAST5 (aka CAST-128) cipher algorithm as described in RFC 2144
  * 
@@ -48,9 +48,9 @@ typedef struct cast5_ctx_st{
        bool            shortkey;
 } cast5_ctx_t;
 
-void cast5_init(cast5_ctx_t* s, uint8_t* key, uint8_t keylength);
-void cast5_enc(cast5_ctx_t *s, void* block);
-void cast5_dec(cast5_ctx_t *s, void* block);
+void cast5_init(uint8_t* key, uint8_t keylength_b, cast5_ctx_t* s);
+void cast5_enc(void* block, cast5_ctx_t *s);
+void cast5_dec(void* block, cast5_ctx_t *s);
 
 
 
index 1c85c2d11aa32e21af1dd6db4989350797c44ad6..cf4ed4ed279018af179ad61e82c2fd442af0739d 100644 (file)
 #include "debug.h"
 
 #include "camellia.h"
+#include "nessie_bc_test.h"
+#include "performance_test.h"
+#include "cli.h"
+
+char* cipher_name = "Camellia";
+
 
 #include <stdint.h>
 #include <string.h>
+#include <stdlib.h>
 #include <avr/pgmspace.h>
 
 
-#ifndef BOOL
-#define BOOL
- #ifndef __BOOL
- #define __BOOL
-  #ifndef __BOOL__
-  #define __BOOL__
-       typedef enum{false=0,true=1} bool;
-  #endif
- #endif
-#endif
-
-
-
 /*****************************************************************************
  *  additional validation-functions                                                                                     *
  *****************************************************************************/
+void camellia128_init_dummy(void* key, uint16_t keysize_b, void* ctx){
+       camellia128_init(key, ctx);
+}
 
-/*****************************************************************************
- *  self tests                                                                                                                          *
- *****************************************************************************/
-void camellia128_ctx_dump(camellia128_ctx_t *s);
-
-void test_encrypt(uint8_t *block, uint8_t *key, uint16_t keylength, bool print){
-       camellia128_ctx_t s;
-       if (print){
-               uart_putstr("\r\nCamellia (enc):\r\n key:\t\t");
-               uart_hexdump(key, keylength/8);
-               uart_putstr("\r\n plaintext:\t");
-               uart_hexdump(block, 16);
-       }
+void testrun_nessie_camellia(void){
+       nessie_bc_ctx.blocksize_B =  16;
+       nessie_bc_ctx.keysize_b   = 128;
+       nessie_bc_ctx.name        = cipher_name;
+       nessie_bc_ctx.ctx_size_B  = sizeof(camellia128_ctx_t);
+       nessie_bc_ctx.cipher_enc  = (nessie_bc_enc_fpt)camellia128_enc;
+       nessie_bc_ctx.cipher_dec  = (nessie_bc_dec_fpt)camellia128_dec;
+       nessie_bc_ctx.cipher_genctx  = (nessie_bc_gen_fpt)camellia128_init_dummy;
        
-       camellia128_init(&s, key);;
-       camellia128_enc(&s, block);
-       if (print){
-               uart_putstr("\r\n ciphertext:\t");
-               uart_hexdump(block, 16);
-       }
-} 
-
-void test_decrypt(uint8_t *block, uint8_t *key, uint16_t keylength, bool print){
-       camellia128_ctx_t s;
-       if (print){
-               uart_putstr("\r\nCamellia (dec):\r\n key:\t\t");
-               uart_hexdump(key, keylength/8);
-               uart_putstr("\r\n ciphertext:\t");
-               uart_hexdump(block, 16);
-       }
-       camellia128_init(&s, key);
-       camellia128_dec(&s, block);
-       if (print){
-               uart_putstr("\r\n plaintext:\t");
-               uart_hexdump(block, 16);
-       }
-} 
-
-void nessie_test_iterate(uint8_t *block, uint8_t *key){
-       uint16_t i;
-       test_encrypt(block, key, 128, true);
-       test_decrypt(block, key, 128, true);
-       uart_putstr("\r\n100 times:");
-       for(i=0; i<99; ++i){
-               test_encrypt(block, key, 128, false);
-       }
-       test_encrypt(block, key, 128, true);
-       uart_putstr("\r\n1000 times:");
-       for(i=0; i<(999-100); ++i){
-               test_encrypt(block, key, 128, false);
-       }
-       test_encrypt(block, key, 128, true);
+       nessie_bc_run();
 }
 
-void nessie_test_iterate_inv(uint8_t *block, uint8_t *key){
-       uint16_t i;
-       test_decrypt(block, key, 128, true);
-       test_encrypt(block, key, 128, true);
-       uart_putstr("\r\n100 times:");
-       for(i=0; i<99; ++i){
-               test_decrypt(block, key, 128, false);
-       }
-       test_encrypt(block, key, 128, true);
-       uart_putstr("\r\n1000 times:");
-       for(i=0; i<(999-100); ++i){
-               test_decrypt(block, key, 128, false);
-       }
-       test_decrypt(block, key, 128, true);
-}
 
-prog_uint8_t ntt_test_values_in[16] = {
-       0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 
-       0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10
-};
-
-prog_uint8_t ntt_test_values_out[16] = {
-       0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, 
-       0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43
-};
-/* memcmp_P() is now implemented in avr-libc
-int memcmp_P(const void *s1, PGM_P s2, size_t n){
-       uint8_t b;
-       while(n--){
-               b = pgm_read_byte_near(s2);
-               if( *((uint8_t*)s1) != b)
-                       return(*((uint8_t*)s1)-b);
-               ++s1; ++s2;
-       }
-       return 0;
-}
-*/
-void testrun_camellia(void){
-       /* we run the NESSIE test for Camellia here see 
-        * https://www.cosic.esat.kuleuven.be/nessie/testvectors/bc/camellia/Camellia-128-128.verified.test-vectors
-        * for the vectors 
-        */
-       unsigned j, setn;
-       uint8_t block[16];
-       uint8_t key[16];
-       memcpy_P(block, ntt_test_values_in, 16);        
-       memcpy_P(key,   ntt_test_values_in, 16);
-       test_encrypt(block, key, 128, true);
-       if(memcmp_P(block, ntt_test_values_out, 16)){
-               uart_putstr("\t[FAILED]\r\n");
-               return;
-       }
-       uart_putstr("\t[OK]");
-       test_decrypt(block, key, 128, true);
-       if(memcmp_P(block, ntt_test_values_in, 16)){
-               uart_putstr("\t[FAILED]\r\n");
-               return;
-       }
-       uart_putstr("\t[OK]");
+void test_performance_cast5(void){
+       uint64_t t;
+       char str[6];
+       uint8_t key[16], data[16];
+       camellia128_ctx_t ctx;
        
-/* test set #1 & #2 */
-       setn=1;
-       for(setn=1; setn<=2; ++setn){
-               for(j=0; j<128; ++j){
-                       uart_putstr("\r\n\r\n### SET: ");
-                       uart_hexdump(&setn,1);
-                       uart_putstr(" Vector: ");
-                       uart_hexdump(&j,1);
-                       
-                       memset(block, 0, 16);
-                       memset(key, 0, 16);
-                       ((setn&0x1)?key:block)[j>>3] = 1<<(((~j)&0x7));
-                       nessie_test_iterate(block, key);
-               }
-       }
-/* test set #3 */      
-       for(j=0; j<256; ++j){
-               uart_putstr("\r\n### SET: ");
-               uart_hexdump(&setn,1);
-               uart_putstr(" Vector: ");
-               uart_hexdump(&j,1);
-               
-               memset(block, j, 16);
-               memset(key, 0, 16);
-               nessie_test_iterate(block, key);
-       }
-       setn++;
-/* test set #4 (some strange values*/
-       setn++;
-/* test ser #5 & #6 (same as 1&2 but enc and dec exchanged)*/  
-       for(setn=5; setn<=6; ++setn){
-               for(j=0; j<128; ++j){
-                       uart_putstr("\r\n\r\n### SET: ");
-                       uart_hexdump(&setn,1);
-                       uart_putstr(" Vector: ");
-                       uart_hexdump(&j,1);
-                       
-                       memset(block, 0, 16);
-                       memset(key, 0, 16);
-                       ((setn&0x1)?key:block)[j>>3] = 1<<(((~j)&0x7));
-                       nessie_test_iterate_inv(block, key);
-               }
-       }
-/* test set #7 */      
-       for(j=0; j<256; ++j){
-               uart_putstr("\r\n### SET: ");
-               uart_hexdump(&setn,1);
-               uart_putstr(" Vector: ");
-               uart_hexdump(&j,1);
-               
-               memset(block, j, 16);
-               memset(key, 0, 16);
-               nessie_test_iterate_inv(block, key);
-       }
-       setn++;
-/* test set #4 (some strange values*/
-       setn++;
+       calibrateTimer();
+       print_overhead();
+       
+       memset(key,  0, 16);
+       memset(data, 0, 16);
+       
+       startTimer(1);
+       camellia128_init(key, &ctx);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       camellia128_enc(data, &ctx);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tencrypt time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       camellia128_dec(data, &ctx);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tdecrypt time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       uart_putstr_P(PSTR("\r\n"));
 }
 
 
 
+/*****************************************************************************
+ *  self tests                                                                                                                          *
+ *****************************************************************************/
+
 /*****************************************************************************
  *  main                                                                                                                                        *
  *****************************************************************************/
@@ -236,16 +115,21 @@ int main (void){
        DEBUG_INIT();
        uart_putstr("\r\n");
 
-       uart_putstr("\r\n\r\nCrypto-VS (Camellia)\r\nloaded and running\r\n");
-restart:
+       uart_putstr_P(PSTR("\r\n\r\nCrypto-VS ("));
+       uart_putstr(cipher_name);
+       uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
+
+       PGM_P    u   = PSTR("nessie\0test\0performance\0");
+       void_fpt v[] = {testrun_nessie_camellia, testrun_nessie_camellia, test_performance_cast5};
+       
        while(1){ 
-               if (!getnextwordn(str,20))  {DEBUG_S("DBG: W1\r\n"); goto error;}
-               if (strcmp(str, "test")) {DEBUG_S("DBG: 1b\r\n"); goto error;}
-                       testrun_camellia();
-               goto restart;           
+               if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
+               if(execcommand_d0_P(str, u, v)<0){
+                       uart_putstr_P(PSTR("\r\nunknown command\r\n"));
+               }
                continue;
        error:
                uart_putstr("ERROR\r\n");
-       } /* while (1) */
+       }
 }
 
index 7a33406569edc2e9eac2cd0f6b9a31dec6be6546..2cfb3d11b4a34fe3386fee51d1c03b887e5520f5 100644 (file)
@@ -40,32 +40,15 @@ char* cipher_name = "cast-128 (cast5)";
 /*****************************************************************************
  *  additional validation-functions                                                                                     *
  *****************************************************************************/
-/*
-       void cast5_init(cast5_ctx_t* s, uint8_t* key, uint8_t keylength);
-       void cast5_enc(cast5_ctx_t *s, void* block);
-       void cast5_dec(cast5_ctx_t *s, void* block);
-*/ 
-
-void cast5_init_dummy(uint8_t* key, uint8_t keylength_b, cast5_ctx_t* ctx){
-       cast5_init(ctx, key, keylength_b);
-}
-
-void cast5_enc_dummy(void* buffer, cast5_ctx_t* ctx){
-       cast5_enc(ctx, buffer);
-}
 
-void cast5_dec_dummy(void* buffer, cast5_ctx_t* ctx){
-       cast5_dec(ctx, buffer);
-}
-
-void test_nessie_cast5(void){
+void testrun_nessie_cast5(void){
        nessie_bc_ctx.blocksize_B =   8;
        nessie_bc_ctx.keysize_b   = 128;
        nessie_bc_ctx.name        = cipher_name;
        nessie_bc_ctx.ctx_size_B  = sizeof(cast5_ctx_t);
-       nessie_bc_ctx.cipher_enc  = (nessie_bc_enc_fpt)cast5_enc_dummy;
-       nessie_bc_ctx.cipher_dec  = (nessie_bc_dec_fpt)cast5_dec_dummy;
-       nessie_bc_ctx.cipher_genctx  = (nessie_bc_gen_fpt)cast5_init_dummy;
+       nessie_bc_ctx.cipher_enc  = (nessie_bc_enc_fpt)cast5_enc;
+       nessie_bc_ctx.cipher_dec  = (nessie_bc_dec_fpt)cast5_dec;
+       nessie_bc_ctx.cipher_genctx  = (nessie_bc_gen_fpt)cast5_init;
        
        nessie_bc_run();
 }
@@ -100,9 +83,8 @@ void test_encrypt(uint8_t *block, uint8_t *key, uint8_t keylength, bool print){
                uart_putstr("\r\n plaintext:\t");
                uart_hexdump(block, 8);
        }
-       cast5_init(&s, key, keylength);
-//     cast5_ctx_dump(&s);
-       cast5_enc(&s, block);
+       cast5_init(key, keylength, &s);
+       cast5_enc(block, &s);
        if (print){
                uart_putstr("\r\n ciphertext:\t");
                uart_hexdump(block, 8);
@@ -117,9 +99,8 @@ void test_decrypt(uint8_t *block, uint8_t *key, uint8_t keylength, bool print){
                uart_putstr("\r\n ciphertext:\t");
                uart_hexdump(block, 8);
        }
-       cast5_init(&s, key, keylength);
-//     cast5_ctx_dump(&s);
-       cast5_dec(&s, block);
+       cast5_init(key, keylength, &s);
+       cast5_dec(block, &s);
        if (print){
                uart_putstr("\r\n plaintext:\t");
                uart_hexdump(block, 8);
@@ -170,28 +151,20 @@ void testrun_cast5(void){
 
 }
 
-void test_performance_cast5(void){
-       uint16_t i,c;
+void testrun_performance_cast5(void){
        uint64_t t;
        char str[6];
        uint8_t key[16], data[16];
        cast5_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 16);
        memset(data, 0, 16);
        
        startTimer(1);
-       cast5_init(&ctx, key, 128);
+       cast5_init(key, 128, &ctx);
        t = stopTimer();
        uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
        ultoa((unsigned long)t, str, 10);
@@ -199,7 +172,7 @@ void test_performance_cast5(void){
        
        
        startTimer(1);
-       cast5_enc(&ctx, data);
+       cast5_enc(data, &ctx);
        t = stopTimer();
        uart_putstr_P(PSTR("\r\n\tencrypt time: "));
        ultoa((unsigned long)t, str, 10);
@@ -207,7 +180,7 @@ void test_performance_cast5(void){
        
        
        startTimer(1);
-       cast5_dec(&ctx, data);
+       cast5_dec(data, &ctx);
        t = stopTimer();
        uart_putstr_P(PSTR("\r\n\tdecrypt time: "));
        ultoa((unsigned long)t, str, 10);
@@ -232,7 +205,7 @@ int main (void){
        uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
 
        PGM_P    u   = PSTR("nessie\0test\0performance\0");
-       void_fpt v[] = {test_nessie_cast5, test_nessie_cast5, test_performance_cast5};
+       void_fpt v[] = {testrun_nessie_cast5, testrun_cast5, testrun_performance_cast5};
        
        while(1){ 
                if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
index 153ffea0de41a3ff564077667a82478e9672daaa..4822c549c1bfe45ad5c017e53fea1a6d35a8400e 100644 (file)
@@ -67,21 +67,13 @@ void testrun_nessie_des(void){
 
 
 void testrun_performance_des(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[8], data[8];
        
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 8);
        memset(data, 0, 8);
index 2d97b48dd5b16cdd2ede1c3f0d7a8aed8a4912bb..3384396a0284d6144c17eee7e528b4c01405e361 100644 (file)
@@ -62,20 +62,12 @@ void testrun_entropium(void){
 
 
 void testrun_performance_entropium(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t data[32];
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        startTimer(1);
        entropium_addEntropy(128, data);
index 1f997eabad061dcb858cda5f347cf7f455250c7e..44f08f8eee951b9557d275cf5b7b47c0df1945d3 100644 (file)
@@ -121,21 +121,13 @@ void testrun_std_grain(void){
 }
 
 void testrun_performance_grain(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[10], iv[8];
        grain_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);       
+       print_overhead();       
        
        memset(key,  0, 10);
        memset(iv,  0, 8);
index 921b4084e43093e0a784f792d9e66e32b57afae1..490ee480a030bbc9ad2b4570b7c1cf681f4c6a27 100644 (file)
 
 #include "md5.h"
 #include "nessie_hash_test.h"
+#include "performance_test.h"
 
 #include <stdint.h>
 #include <string.h>
+#include <stdlib.h>
 #include "cli.h"
 
 char* algo_name = "MD5";
@@ -100,6 +102,43 @@ void testrun_md5(void){
 }
 
 
+void testrun_performance_md5(void){
+       uint64_t t;
+       char str[16];
+       uint8_t data[32];
+       md5_ctx_t ctx;
+       
+       calibrateTimer();
+       print_overhead();
+       
+       memset(data, 0, 32);
+       
+       startTimer(1);
+       md5_init(&ctx);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       md5_nextBlock(&ctx, data);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tone-block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       md5_lastBlock(&ctx, data, 0);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tlast block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       uart_putstr_P(PSTR("\r\n"));
+}
+
 
 /*****************************************************************************
  *  main                                                                                                                                        *
@@ -113,8 +152,8 @@ int main (void){
        uart_putstr("\r\n");
 
        uart_putstr("\r\n\r\nCrypto-VS (MD5)\r\nloaded and running\r\n");
-       PGM_P    u   = PSTR("nessie\0test\0");
-       void_fpt v[] = {testrun_nessie_md5, testrun_md5};
+       PGM_P    u   = PSTR("nessie\0test\0performance\0");
+       void_fpt v[] = {testrun_nessie_md5, testrun_md5, testrun_performance_md5};
 
        while(1){ 
                if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
index fdac8c14506796e6aab08ed6d07858f38f9a0991..9ba191e7260455ddfb710dc7eba82d8e635cbf07 100644 (file)
@@ -167,21 +167,13 @@ void testrun_stdtest_noekeon(void){
 }
 
 void testrun_performance_noekeon(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[16], data[16];
        noekeon_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 16);
        memset(data, 0, 16);
index e1323e0fd8ca22cf1d16155b9fb043b8dc25647d..2c16aeaad2b5cbdca76e263d74e53ba4a429f16d 100644 (file)
@@ -61,21 +61,13 @@ void testrun_nessie_rc5(void){
 
 
 void testrun_performance_rc5(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[16], data[16];
        rc5_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 16);
        memset(data, 0, 16);
index 6ec8fc640b130db72ca35952d067ab795524d6fa..5d7ecdac07e4f607b026134b7574da9ecbb364a3 100644 (file)
@@ -68,21 +68,13 @@ void testrun_nessie_rc6(void){
 
 
 void testrun_performance_rc6(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[16], data[16];
        rc6_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 16);
        memset(data, 0, 16);
index 1dc4259b8be8daa6b280aa936771aac1f8dde9d3..ff4ccab6d01be50c355074de22cc4e95e4a92cc8 100644 (file)
@@ -64,21 +64,13 @@ void testrun_nessie_seed(void){
 
 
 void testrun_performance_seed(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[16], data[16];
        seed_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 16);
        memset(data, 0, 16);
index af3b6305e1df55112cf24d52545084038df824d3..fc860357fc301fdc30cbf77cee526466ed399839 100644 (file)
@@ -64,21 +64,13 @@ void testrun_nessie_serpent(void){
 
 
 void testrun_performance_serpent(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[32], data[16];
        serpent_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 32);
        memset(data, 0, 16);
index 3fb74bdad8a8e9ec68ed1e39399afd25dd6a2e9a..6f07227c03722943f459967fc6c6eae9dbb4e8ff 100644 (file)
 
 #include "sha1.h"
 #include "nessie_hash_test.h"
+#include "performance_test.h"
 
 #include <stdint.h>
 #include <string.h>
+#include <stdlib.h>
 #include "cli.h"
 
 char* algo_name = "SHA-1";
@@ -102,6 +104,42 @@ void testrun_sha1(void){
        uart_putstr("\r\nx");
 }
 
+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();
+       uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       sha1_nextBlock(&ctx, data);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tone-block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       sha1_lastBlock(&ctx, data, 0);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tlast block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       uart_putstr_P(PSTR("\r\n"));
+}
 
 
 /*****************************************************************************
@@ -116,8 +154,8 @@ int main (void){
 
        uart_putstr("\r\n\r\nCrypto-VS (SHA-1)\r\nloaded and running\r\n");
 
-       PGM_P    u   = PSTR("nessie\0test\0");
-       void_fpt v[] = {testrun_nessie_sha1, testrun_sha1};
+       PGM_P    u   = PSTR("nessie\0test\0performance\0");
+       void_fpt v[] = {testrun_nessie_sha1, testrun_sha1, testrun_performance_sha1};
 
        while(1){ 
                if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
index 552356c4a3c1ebfe8d5a4ab8ba089dd1b2e59390..9c3031d2f18faacdbf0ca35da9f2c1bb5a73104f 100644 (file)
 
 #include "sha256.h"
 #include "nessie_hash_test.h"
+#include "performance_test.h"
 
 #include <stdint.h>
 #include <string.h>
+#include <stdlib.h>
 #include "cli.h"
 
 char* algo_name = "SHA-256";
@@ -59,7 +61,42 @@ void testrun_nessie_sha256(void){
        nessie_hash_run();
 }
 
-
+void testrun_performance_sha256(void){
+       uint64_t t;
+       char str[16];
+       uint8_t data[32];
+       sha256_ctx_t ctx;
+       
+       calibrateTimer();
+       print_overhead();
+       
+       memset(data, 0, 32);
+       
+       startTimer(1);
+       sha256_init(&ctx);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tctx-gen time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       sha256_nextBlock(&ctx, data);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tone-block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       
+       startTimer(1);
+       sha256_lastBlock(&ctx, data, 0);
+       t = stopTimer();
+       uart_putstr_P(PSTR("\r\n\tlast block time: "));
+       ultoa((unsigned long)t, str, 10);
+       uart_putstr(str);
+       
+       uart_putstr_P(PSTR("\r\n"));
+}
 
 /*****************************************************************************
  *  main                                                                                                                                        *
@@ -74,8 +111,8 @@ int main (void){
        uart_putstr(algo_name);
        uart_putstr_P(PSTR(")\r\nloaded and running\r\n"));
 
-       PGM_P    u   = PSTR("nessie\0test\0");
-       void_fpt v[] = {testrun_nessie_sha256, testrun_nessie_sha256};
+       PGM_P    u   = PSTR("nessie\0test\0performance\0");
+       void_fpt v[] = {testrun_nessie_sha256, testrun_nessie_sha256, testrun_performance_sha256};
 
        while(1){ 
                if (!getnextwordn(str,20)){DEBUG_S("DBG: W1\r\n"); goto error;}
index 418bcf6fff1da329791f375e4afb92124c281ceb..aadebd0904232ab4623decf50f05f59b0fef59b8 100644 (file)
@@ -71,20 +71,12 @@ void testrun_nessie_shabea(void){
 
 
 void testrun_performance_shabea(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[32], data[32];
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 32);
        memset(data, 0, 32);
index 65f0d1ff39190650747d2ef3a486d99887b08784..a7f1165c697fa97bd0ccac0e9cea178b657ed47a 100644 (file)
@@ -59,20 +59,12 @@ void testrun_nessie_skipjack(void){
 
 
 void testrun_performance_skipjack(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[10], data[8];
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 10);
        memset(data, 0,  8);
index b3933dc0a18aa67330095c5a91591e91a6993e2e..c741237aad51dd0e57afabbafe64032e7cffe405 100644 (file)
@@ -67,21 +67,13 @@ void testrun_nessie_tdes(void){
 
 
 void testrun_performance_tdes(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[8*3], data[8];
        
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);
+       print_overhead();
        
        memset(key,  0, 8*3);
        memset(data, 0, 8);
index 698887e46d27e98bdad7157bb7a9449bbc1cbfbe..4d4e3d2eb3deb081cadc81a909a9d3b04e0c3ff1 100644 (file)
@@ -67,21 +67,13 @@ void testrun_nessie_trivium(void){
 }
 
 void testrun_performance_trivium(void){
-       uint16_t i,c;
        uint64_t t;
        char str[16];
        uint8_t key[10], iv[10];
        trivium_ctx_t ctx;
        
        calibrateTimer();
-       getOverhead(&c, &i);
-       uart_putstr_P(PSTR("\r\n\r\n=== benchmark ==="));
-       utoa(c, str, 10);
-       uart_putstr_P(PSTR("\r\n\tconst overhead:     "));
-       uart_putstr(str);
-       utoa(i, str, 10);
-       uart_putstr_P(PSTR("\r\n\tinterrupt overhead: "));
-       uart_putstr(str);       
+       print_overhead();
        
        memset(key,  0, 10);
        memset(iv,  0, 10);
index 06d99d647e9e2254171affe6ed76fe0150dff995..a34d538bd1e4368cceb8b93bd0e91315bb8651e1 100644 (file)
@@ -7,7 +7,8 @@ BLOCK_CIPHERS += $(ALGO_NAME)
 # main-camellia-test.o debug.o uart.o serial-tools.o camellia.o camellia-asm.o
 $(ALGO_NAME)_OBJ      := camellia.o camellia-asm.o
 $(ALGO_NAME)_TEST_BIN := main-camellia-test.o debug.o uart.o serial-tools.o \
-                         camellia.o camellia-asm.o
+                         camellia.o camellia-asm.o nessie_bc_test.o \
+                        nessie_common.o cli.o performance_test.o
 $(ALGO_NAME)_NESSIE_TEST      := "nessie"
 $(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
 
index 047fb2174f1930aee88f1e785bc1bf7b0688c5ae..b3d3de08ae9eac751023d5d022755216b50662bb 100644 (file)
@@ -6,7 +6,7 @@ HASHES += $(ALGO_NAME)
 
 $(ALGO_NAME)_OBJ      := md5.o
 $(ALGO_NAME)_TEST_BIN := main-md5-test.o debug.o uart.o serial-tools.o md5.o \
-                         nessie_hash_test.o nessie_common.o cli.o
+                         nessie_hash_test.o nessie_common.o cli.o performance_test.o
 $(ALGO_NAME)_NESSIE_TEST      := "nessie"
 $(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
 
index d4c1b5a7705146a5f0ecc478b58c3f6123deb728..dc2eadef3926f3ff0984d15528e8d7cd397e6951 100644 (file)
@@ -6,7 +6,8 @@ HASHES += $(ALGO_NAME)
 
 $(ALGO_NAME)_OBJ      := sha1-asm.o
 $(ALGO_NAME)_TEST_BIN := main-sha1-test.o debug.o uart.o serial-tools.o \
-                         sha1-asm.o nessie_hash_test.o nessie_common.o cli.o 
+                         sha1-asm.o nessie_hash_test.o nessie_common.o cli.o \
+                        performance_test.o
 $(ALGO_NAME)_NESSIE_TEST      := "nessie"
 $(ALGO_NAME)_PEROFRMANCE_TEST := "performance"
 
index c1a3d58a4e1d663ced45809348c311944c44245e..0a2fe1c71994312f79d8d428f115e19155eb60c4 100644 (file)
@@ -6,7 +6,8 @@ HASHES += $(ALGO_NAME)
 
 $(ALGO_NAME)_OBJ      := sha256-asm.o
 $(ALGO_NAME)_TEST_BIN := main-sha256-test.o debug.o uart.o serial-tools.o \
-                         sha256-asm.o nessie_hash_test.o nessie_common.o cli.o
+                         sha256-asm.o nessie_hash_test.o nessie_common.o cli.o \
+                        performance_test.o
 $(ALGO_NAME)_NESSIE_TEST      := "nessie"
 $(ALGO_NAME)_PEROFRMANCE_TEST := "performance"