]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - test_src/nessie_common.c
fixing E-Mail-Address & Copyright
[avr-crypto-lib.git] / test_src / nessie_common.c
index 8798dd2b51735464cfcdcaf60db1b609516b593f..0bdcdda4923f106674c7db9988b64f28b360c970 100644 (file)
@@ -1,7 +1,7 @@
 /* nessie_common.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
  * 
  * common function for nessie-tests
 
 #include <string.h>
 #include <stdint.h>
+#include <stdio.h>
 #include <avr/pgmspace.h>
-#include <stdlib.h> /* utoa() */
 #include "nessie_common.h"
 #include "hexdigit_tab.h"
 
+#define nessie_out_file stdout
+
+void nessie_set_output_stream(FILE *out_stream){
+    nessie_out_file = out_stream;
+}
+
+
 #ifdef NESSIE_ALIVE
 void nessie_send_alive(void){
-       NESSIE_PUTC(NESSIE_ALIVE_CHAR);
+       putc(NESSIE_ALIVE_CHAR, nessie_out_file);
 }
 
 void nessie_send_alive_a(uint16_t i){
        if((i&31)==0)
-               NESSIE_PUTC(NESSIE_ALIVE_CHAR);
+               putc(NESSIE_ALIVE_CHAR, nessie_out_file);
 }
 #endif
 
-void nessie_print_block(uint8_tblock, uint16_t blocksize_bit){
+void nessie_print_block(uint8_t *block, uint16_t blocksize_bit){
        uint16_t i;
        for(i=0; i<(blocksize_bit+7)/8; ++i){
-               NESSIE_PUTC(pgm_read_byte(hexdigit_tab_uc_P+((block[i])>>4)));
-               NESSIE_PUTC(pgm_read_byte(hexdigit_tab_uc_P+((block[i])&0xf)));
+               putc(pgm_read_byte(hexdigit_tab_uc_P + ((block[i]) >>   4)), nessie_out_file);
+               putc(pgm_read_byte(hexdigit_tab_uc_P + ((block[i]) &  0xf)), nessie_out_file);
        }                                  
 }
 
 #define SPACES 31
 #define BYTESPERLINE 16
 
-void nessie_print_item(char* name, uint8_t* buffer, uint16_t size_B){
+void nessie_print_item(const char *name, uint8_t *buffer, uint16_t size_B){
        uint8_t name_len;
        uint8_t i;
-       name_len=strlen(name);
-       if(name_len>SPACES-1){
-               NESSIE_PUTSTR_P(PSTR("\r\n!!! formatting error !!!\r\n"));
+       name_len = strlen(name);
+       if(name_len > SPACES - 1){
+               fputs_P(PSTR("\n!!! formatting error !!!\n"), nessie_out_file);
                return;
        }
-       NESSIE_PUTSTR_P(PSTR("\r\n"));
-       for(i=0; i<SPACES-name_len-1; ++i){
-               NESSIE_PUTC(' ');
+       putc('\n', nessie_out_file);
+       for(i = 0; i < SPACES-name_len - 1; ++i){
+               putc(' ', nessie_out_file);
        }
-       NESSIE_PUTSTR(name);
-       NESSIE_PUTC('=');
+       fputs(name, stdout);
+       putc('=', nessie_out_file);
        /* now the data printing begins */
-       if(size_B<=BYTESPERLINE){
+       if(size_B <= BYTESPERLINE){
                /* one line seems sufficient */
-               nessie_print_block(buffer, size_B*8);
+               nessie_print_block(buffer, size_B * 8);
        } else {
                /* we need more lines */
-               nessie_print_block(buffer, BYTESPERLINE*8); /* first line */
+               nessie_print_block(buffer, BYTESPERLINE * 8); /* first line */
                int16_t toprint = size_B - BYTESPERLINE;
                buffer += BYTESPERLINE;
                while(toprint > 0){
-                       NESSIE_PUTSTR_P(PSTR("\r\n"));
-                       for(i=0; i<SPACES; ++i){
-                               NESSIE_PUTC(' ');
+                       putc('\n', nessie_out_file);
+                       for(i = 0; i < SPACES; ++i){
+                               putc(' ', nessie_out_file);
                        }
-                       nessie_print_block(buffer, ((toprint>BYTESPERLINE)?BYTESPERLINE:toprint)*8);
+                       nessie_print_block(buffer, ((toprint > BYTESPERLINE) ? BYTESPERLINE : toprint) * 8);
                        buffer  += BYTESPERLINE;
                        toprint -= BYTESPERLINE;
                }
@@ -92,14 +99,7 @@ void nessie_print_item(char* name, uint8_t* buffer, uint16_t size_B){
 
 
 void nessie_print_set_vector(uint8_t set, uint16_t vector){
-       NESSIE_PUTSTR_P(PSTR("\r\n\r\nSet "));
-       NESSIE_PUTC('0'+set%10);
-       NESSIE_PUTSTR_P(PSTR(", vector#"));
-       NESSIE_PUTC((vector<1000)?' ':'0'+vector/1000);
-       NESSIE_PUTC((vector<100)?' ':'0'+(vector/100)%10);
-       NESSIE_PUTC((vector<10 )?' ':'0'+(vector/10)%10);
-       NESSIE_PUTC('0'+vector%10);
-       NESSIE_PUTC(':');
+       fprintf_P(nessie_out_file, PSTR("\n\nSet %"PRIu8", vector#%4"PRIu16":"), set, vector);
 }
 
 /* example:
@@ -107,9 +107,7 @@ Test vectors -- set 3
 =====================
  */ 
 void nessie_print_setheader(uint8_t set){
-       NESSIE_PUTSTR_P(PSTR("\r\n\r\nTest vectors -- set "));
-       NESSIE_PUTC('0'+set%10);
-       NESSIE_PUTSTR_P(PSTR("\r\n====================="));
+       fprintf_P(nessie_out_file, PSTR("\r\n\r\nTest vectors -- set %"PRIu8"\n====================="), set);
 }
 
 /* example:
@@ -123,64 +121,47 @@ Key size: 256 bits
 Block size: 128 bits
 */
 
-void nessie_print_header(char* name,
+void nessie_print_header(const char *name,
                          uint16_t keysize_b, 
                          uint16_t blocksize_b,
                          uint16_t hashsize_b, 
                          uint16_t macsize_b,
                          uint16_t ivsize_b ){
        uint16_t i;
-       NESSIE_PUTSTR_P(PSTR("\r\n\r\n"
-       "********************************************************************************\r\n"
-       "* AVR-Crypto-Lib - crypto primitives for AVR microcontrolles by Daniel Otte    *\r\n"
-       "********************************************************************************\r\n"
-       "\r\n"));
-       NESSIE_PUTSTR_P(PSTR("Primitive Name: "));
-       NESSIE_PUTSTR(name);
-       NESSIE_PUTSTR_P(PSTR("\r\n"));
+       fputs_P(PSTR("\n\n"
+       "********************************************************************************\n"
+       "* AVR-Crypto-Lib - crypto primitives for AVR microcontrollers by Daniel Otte   *\n"
+       "********************************************************************************\n\n"),
+       nessie_out_file);
+       fprintf_P(nessie_out_file, PSTR("Primitive Name: %s\n"), name);
        /* underline */ 
        for(i=0; i<16+strlen(name); ++i){
-               NESSIE_PUTC('=');
+               putc('=', nessie_out_file);
        }
-       char str[6]; /* must catch numbers up to 65535 + terminatin \0 */
        if(keysize_b){
-               NESSIE_PUTSTR_P(PSTR("\r\nKey size: "));
-               utoa(keysize_b, str, 10);
-               NESSIE_PUTSTR(str);
-               NESSIE_PUTSTR_P(PSTR(" bits"));
+               fprintf_P(nessie_out_file, PSTR("\nKey size: %"PRIu16" bits"), keysize_b);
        }
        if(blocksize_b){
-               NESSIE_PUTSTR_P(PSTR("\r\nBlock size: "));
-               utoa(blocksize_b, str, 10);
-               NESSIE_PUTSTR(str);
-               NESSIE_PUTSTR_P(PSTR(" bits"));
+        fprintf_P(nessie_out_file, PSTR("\nBlock size: %"PRIu16" bits"), blocksize_b);
        }
        if(hashsize_b){
-               NESSIE_PUTSTR_P(PSTR("\r\nHash size: "));
-               utoa(hashsize_b, str, 10);
-               NESSIE_PUTSTR(str);
-               NESSIE_PUTSTR_P(PSTR(" bits"));
+           fprintf_P(nessie_out_file, PSTR("\nHash size: %"PRIu16" bits"), hashsize_b);
+
        }
        if(macsize_b){
-               NESSIE_PUTSTR_P(PSTR("\r\nMac size: "));
-               utoa(macsize_b, str, 10);
-               NESSIE_PUTSTR(str);
-               NESSIE_PUTSTR_P(PSTR(" bits"));
+               fprintf_P(nessie_out_file, PSTR("\nMac size: %"PRIu16" bits"), macsize_b);
        }
        if(ivsize_b){
                if(ivsize_b==(uint16_t)-1){
-                       NESSIE_PUTSTR_P(PSTR("\r\nNo initial value (IV) mode"));
+                       fputs_P(PSTR("\nNo initial value (IV) mode"), stdout);
                }else{
-                       NESSIE_PUTSTR_P(PSTR("\r\nIV size: "));
-                       utoa(ivsize_b, str, 10);
-                       NESSIE_PUTSTR(str);
-                       NESSIE_PUTSTR_P(PSTR(" bits"));
+                   fprintf_P(nessie_out_file, PSTR("\nIV size: %"PRIu16" bits"), ivsize_b);
                }
        }
-       NESSIE_PUTSTR_P(PSTR("\r\n"));
+       putc('\n', nessie_out_file);
 }
 
 void nessie_print_footer(void){
-       NESSIE_PUTSTR_P(PSTR("\r\n\r\n\r\n\r\nEnd of test vectors\r\n\r\n"));
+       puts_P(PSTR("\n\n\n\nEnd of test vectors\n\n"));
 }