X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=bcal%2Fbcal-performance.c;h=c8528f4d99201036a5f08c34f68fa7da0a07c893;hb=b3cf9d2f35e428cae278fffb8a8f5820d40c833b;hp=36cc82317948677733cee2f3b8f58dc61d6ff1c6;hpb=924aa320bef6f192feecdb67d209c790bd49ea49;p=avr-crypto-lib.git diff --git a/bcal/bcal-performance.c b/bcal/bcal-performance.c index 36cc823..c8528f4 100644 --- a/bcal/bcal-performance.c +++ b/bcal/bcal-performance.c @@ -32,60 +32,55 @@ #include "performance_test.h" #include "stack_measuring.h" #include "cli.h" +#include "uart_i.h" #include #include #include +#include #include #define PATTERN_A 0xAA #define PATTERN_B 0x55 - +/* static void printvalue(unsigned long v){ char str[20]; int i; ultoa(v, str, 10); - for(i=0; i<10-strlen(str); ++i){ + for(i = 0; i < 10 - strlen(str); ++i){ cli_putc(' '); } cli_putstr(str); } +*/ -void bcal_performance(const bcdesc_t* bcd){ +void bcal_performance(const bcdesc_t *bcd){ bcdesc_t bc; memcpy_P(&bc, bcd, sizeof(bcdesc_t)); uint8_t ctx[bc.ctxsize_B]; - uint8_t data[(bc.blocksize_b+7)/8]; + uint8_t data[(bc.blocksize_b + 7) / 8]; uint16_t keysize = get_keysize(bc.valid_keysize_desc); - uint8_t key[(keysize+7)/8]; + uint8_t key[(keysize + 7) / 8]; uint64_t t; uint8_t i; - if(bc.type!=BCDESC_TYPE_BLOCKCIPHER) + if(bc.type != BCDESC_TYPE_BLOCKCIPHER) return; calibrateTimer(); print_overhead(); - cli_putstr_P(PSTR("\r\n\r\n === ")); - cli_putstr_P(bc.name); - cli_putstr_P(PSTR(" performance === " - "\r\n type: blockcipher" - "\r\n keysize (bits): ")); - printvalue(keysize); - - cli_putstr_P(PSTR("\r\n ctxsize (bytes): ")); - printvalue(bc.ctxsize_B); - - cli_putstr_P(PSTR("\r\n blocksize (bits): ")); - printvalue(bc.blocksize_b); - - - - t=0; + printf_P(PSTR("\n\n === %S performance === \n" + "\ttype: blockcipher\n" + "\tkeysize (bits): %5"PRIu16"\n" + "\tctxsize (bytes): %5"PRIu16"\n" + "\tblocksize (bits): %5"PRIu16"\n"), + bc.name, keysize, bc.ctxsize_B, bc.blocksize_b); + uart0_flush(); + t = 0; if(bc.init.init1){ - if((bc.flags&BC_INIT_TYPE)==BC_INIT_TYPE_1){ - for(i=0; i<32; ++i){ - startTimer(0); + if((bc.flags & BC_INIT_TYPE) == BC_INIT_TYPE_1){ + for(i = 0; i < 32; ++i){ + startTimer(1); START_TIMER; (bc.init.init1)(key, &ctx); STOP_TIMER; @@ -95,8 +90,8 @@ void bcal_performance(const bcdesc_t* bcd){ } } } else { - for(i=0; i<32; ++i){ - startTimer(0); + for(i = 0; i < 32; ++i){ + startTimer(1); START_TIMER; (bc.init.init2)(key, keysize, &ctx); STOP_TIMER; @@ -106,58 +101,60 @@ void bcal_performance(const bcdesc_t* bcd){ } } } - t>>=5; - cli_putstr_P(PSTR("\r\n init (cycles): ")); - printvalue(t); + t >>= 5; + printf_P(PSTR(" init (cycles): %5"PRIu16"\n"), t); } - t=0; - for(i=0; i<32; ++i){ + + uart0_flush(); + t = 0; + for(i = 0; i < 32; ++i){ startTimer(0); START_TIMER; bc.enc.enc1(data, &ctx); STOP_TIMER; t += stopTimer(); } - t>>=5; - cli_putstr_P(PSTR("\r\n encrypt (cycles): ")); - printvalue(t); + t >>= 5; + printf_P(PSTR(" encrypt (cycles): %5"PRIu16"\n"), t); - t=0; - for(i=0; i<32; ++i){ + uart0_flush(); + t = 0; + for(i = 0; i < 32; ++i){ startTimer(0); START_TIMER; bc.dec.dec1(data, &ctx); STOP_TIMER; t += stopTimer(); } - t>>=5; - cli_putstr_P(PSTR("\r\n decrypt (cycles): ")); - printvalue(t); + t >>= 5; + printf_P(PSTR(" decrypt (cycles): %5"PRIu16"\n"), t); + uart0_flush(); if(bc.free){ + uart0_flush(); bc.free(&ctx); } } -void bcal_stacksize(const bcdesc_t* bcd){ +void bcal_stacksize(const bcdesc_t *bcd){ bcdesc_t bc; stack_measuring_ctx_t smctx; memcpy_P(&bc, bcd, sizeof(bcdesc_t)); uint8_t ctx[bc.ctxsize_B]; - uint8_t data[(bc.blocksize_b+7)/8]; + uint8_t data[(bc.blocksize_b + 7) / 8]; uint16_t keysize = get_keysize(bc.valid_keysize_desc); - uint8_t key[(keysize+7)/8]; - uint16_t t1, t2; + uint8_t key[(keysize + 7)/8]; + uint16_t t1 = 0, t2 = 0; - if(bc.type!=BCDESC_TYPE_BLOCKCIPHER) + if(bc.type != BCDESC_TYPE_BLOCKCIPHER) return; - cli_putstr_P(PSTR("\r\n\r\n === ")); - cli_putstr_P(bc.name); - cli_putstr_P(PSTR(" stack-usage === ")); + printf_P(PSTR("\n === %S stack-usage ===\n"),bc.name); + + uart0_flush(); if(bc.init.init1){ - if((bc.flags&BC_INIT_TYPE)==BC_INIT_TYPE_1){ - cli(); + if((bc.flags & BC_INIT_TYPE) == BC_INIT_TYPE_1){ + cli(); stack_measure_init(&smctx, PATTERN_A); bc.init.init1(&ctx, key); t1 = stack_measure_final(&smctx); @@ -166,18 +163,18 @@ void bcal_stacksize(const bcdesc_t* bcd){ t2 = stack_measure_final(&smctx); sei(); } else { - cli(); + cli(); stack_measure_init(&smctx, PATTERN_A); bc.init.init2(&ctx, keysize, key); t1 = stack_measure_final(&smctx); stack_measure_init(&smctx, PATTERN_B); bc.init.init2(&ctx, keysize, key); - t2 = stack_measure_final(&smctx); - sei(); - } - t1 = (t1>t2)?t1:t2; - cli_putstr_P(PSTR("\r\n init (bytes): ")); - printvalue((unsigned long)t1); + t2 = stack_measure_final(&smctx); + sei(); + } + + t1 = (t1 > t2) ? t1 : t2; + printf_P(PSTR(" init (bytes): %5"PRIu16"\n"), t1); } cli(); stack_measure_init(&smctx, PATTERN_A); @@ -188,9 +185,8 @@ void bcal_stacksize(const bcdesc_t* bcd){ t2 = stack_measure_final(&smctx); sei(); - t1 = (t1>t2)?t1:t2; - cli_putstr_P(PSTR("\r\n encBlock (bytes): ")); - printvalue((unsigned long)t1); + t1 = (t1 > t2) ? t1 : t2; + printf_P(PSTR(" encBlock (bytes): %5"PRIu16"\n"), t1); cli(); stack_measure_init(&smctx, PATTERN_A); @@ -201,21 +197,20 @@ void bcal_stacksize(const bcdesc_t* bcd){ t2 = stack_measure_final(&smctx); sei(); - t1 = (t1>t2)?t1:t2; - cli_putstr_P(PSTR("\r\n decBlock (bytes): ")); - printvalue((unsigned long)t1); + t1 = (t1 > t2) ? t1 : t2; + printf_P(PSTR(" decBlock (bytes): %5"PRIu16"\n"), t1); if(bc.free){ bc.free(&ctx); } } -void bcal_performance_multiple(const bcdesc_t** bcd_list){ - const bcdesc_t* bcd; +void bcal_performance_multiple(const bcdesc_t *const *bcd_list){ + const bcdesc_t *bcd; for(;;){ bcd = (void*)pgm_read_word(bcd_list); if(!bcd){ - cli_putstr_P(PSTR("\r\n\r\n End of performance figures\r\n")); + puts_P(PSTR("\n End of performance figures\n")); return; } bcal_performance(bcd);