diff --git a/twister-big.c b/twister-big.c index 9eea966..5139bdc 100644 --- a/twister-big.c +++ b/twister-big.c @@ -6,85 +6,6 @@ #include "twister.h" #include "twister-big.h" -#undef DEBUG -#define DEBUG - -/*********************************************************************/ -/*********************************************************************/ - -#ifdef DEBUG -#include -#include "uart.h" -void print_checksum(twister_big_ctx_t* ctx, PGM_P s){ - uint8_t i; - uart_putstr_P(PSTR("\r\n")); - uart_putstr_P(s); - uart_putstr_P(PSTR("\r\n checksum:\r\n")); - for(i=0; i<8; ++i){ - uart_putstr_P(PSTR(" [ ")); - uart_hexdump(&(ctx->checksum[i][0]), 8); - uart_putstr_P(PSTR("]\r\n")); - } -} - -/*********************************************************************/ - -void print_matrix(void* m, PGM_P s){ - uint8_t i; - uart_putstr_P(PSTR("\r\n")); - uart_putstr_P(s); - uart_putstr_P(PSTR("\r\n matrix:\r\n")); - for(i=0; i<8; ++i){ - uart_putstr_P(PSTR(" [ ")); - uart_hexdump(((uint8_t*)m)+i*8, 8); - uart_putstr_P(PSTR("]\r\n")); - } -} - -/*********************************************************************/ - -#define DEBUG_CHKSUM(a,s) print_checksum((a),PSTR(s)) -#else -#define DEBUG_CHKSUM(a,s) -#endif - - -#ifdef DEBUG -# define DEBUG_PRINT(ctx, msg) debug_print((ctx), PSTR(msg)) -#else -# define DEBUG_PRINT(ctx, msg) -#endif - -#ifdef DEBUG - -/*********************************************************************/ - -void print_twister_state(twister_state_t* ctx){ - uint8_t i; - uart_putstr_P(PSTR("\r\nState:\r\n matrix:\r\n")); - for(i=0; i<8; ++i){ - uart_putstr_P(PSTR("\t[ ")); - uart_hexdump(&(ctx->s[i][0]), 8); - uart_putstr_P(PSTR("]\r\n")); - } - uart_putstr_P(PSTR("counter: ")); - uart_hexdump(&(ctx->counter), 8); - - uart_putstr_P(PSTR("\r\nlength_counter_b: ")); - uart_hexdump(&(ctx->length_counter_b), 8); - uart_putstr_P(PSTR("\r\n")); -} - -/*********************************************************************/ - -void debug_print(twister_state_t* ctx, PGM_P msg){ - uart_putstr_P(PSTR("\r\n")); - uart_putstr_P(msg); - print_twister_state(ctx); -} - -#endif - /*********************************************************************/ static @@ -104,7 +25,6 @@ void checksum_update(twister_big_ctx_t* ctx, uint8_t col){ carry = sum>>8; } -// DEBUG_CHKSUM(ctx, "post run"); } /*********************************************************************/ @@ -192,8 +112,6 @@ void twister_big_lastBlock(twister_big_ctx_t* ctx, void* msg, uint16_t length_b) ctx->state.length_counter_b -= 512 - length_b; twister_mini_round(&(ctx->state), &(ctx->state.length_counter_b)); -// DEBUG_PRINT(&(ctx->state), "pre check-round"); - memcpy(tmp, ctx->state.s, 64); twister_inject_chksum(ctx, 0); twister_inject_chksum(ctx, 1); @@ -212,8 +130,6 @@ void twister_big_lastBlock(twister_big_ctx_t* ctx, void* msg, uint16_t length_b) twister_blank_round(&(ctx->state)); memxor(ctx->state.s, tmp, 64); - -// DEBUG_PRINT(&(ctx->state), "post check-round"); } /*********************************************************************/ diff --git a/twister-stub.c b/twister-stub.c deleted file mode 100644 index d5bd6f6..0000000 --- a/twister-stub.c +++ /dev/null @@ -1,159 +0,0 @@ -/* twister.c */ -/* - This file is part of the Crypto-avr-lib/microcrypt-lib. - Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) - - 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 - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "config.h" -#include -#include -#include -#include "twister.h" -#include "twister_tables.h" -#include "memxor.h" - -#ifndef TWISTER_MUL_TABLE -# include "gf256mul.h" -#endif - -#undef DEBUG - -#ifdef DEBUG -# include "uart.h" -#endif - -#ifdef DEBUG -# define DEBUG_PRINT(ctx, msg) debug_print((ctx), PSTR(msg)) -#else -# define DEBUG_PRINT(ctx, msg) -#endif - -#ifdef DEBUG - -void print_twister_state(twister_state_t* ctx){ - uint8_t i; - uart_putstr_P(PSTR("\r\nState:\r\n matrix:\r\n")); - for(i=0; i<8; ++i){ - uart_putstr_P(PSTR("\t[ ")); - uart_hexdump(&(ctx->s[i][0]), 8); - uart_putstr_P(PSTR("]\r\n")); - } - uart_putstr_P(PSTR("counter: ")); - uart_hexdump(&(ctx->counter), 8); - - uart_putstr_P(PSTR("\r\nlength_counter_b: ")); - uart_hexdump(&(ctx->length_counter_b), 8); - uart_putstr_P(PSTR("\r\n")); -} - -void debug_print(twister_state_t* ctx, PGM_P msg){ - uart_putstr_P(PSTR("\r\n")); - uart_putstr_P(msg); - print_twister_state(ctx); -} - -#endif - -static -void shiftrow(void* row, uint8_t shift){ - *((uint64_t*)row) = *((uint64_t*)row)>>(8*shift) | *((uint64_t*)row)<<(64-8*shift); -} - -#define MDS(a,b) pgm_read_byte(&(twister_mds[(a)][(b)])) - -#ifdef TWISTER_MUL_TABLE -# define MULT(a,b) pgm_read_byte(&(twister_multab[a][b])) -#else -# define MULT(a,b) gf256mul((a),(b), 0x4D) -#endif -void twister_blank_round(twister_state_t* ctx){ - uint8_t i,j,k=0; - uint8_t tmp[8][8]; - DEBUG_PRINT(ctx, "blank init"); - /* add twist counter */ - for(i=0; i<8; ++i){ - ctx->s[i][1] ^= ((uint8_t*)&(ctx->counter))[7-i]; - } - ctx->counter--; -// DEBUG_PRINT(ctx, "counter added"); - /* sub bytes */ - for(i=0; i<8; ++i){ - for(j=0;j<8;++j){ - tmp[i][j] = pgm_read_byte(twister_sbox+ctx->s[i][j]); - } - } - /* shift rows */ -// for(i=1;i<8; ++i){ -// shiftrow(&(tmp[i][0]), i); -// } - /* mix columns */ - for( i=0; i<8; i++ ){ - // multiply with mds matrix - for( j=0; j<8; j++ ){ - k=(i+1)&7; - ctx->s[j][i] = - MULT( MDS(j,0), tmp[0][i] ) ^ - MULT( MDS(j,1), tmp[1][k] ) ^ - MULT( MDS(j,2), tmp[2][(++k)&7] ) ^ - MULT( MDS(j,3), tmp[3][(++k)&7] ) ^ - MULT( MDS(j,4), tmp[4][(++k)&7] ) ^ - MULT( MDS(j,5), tmp[5][(++k)&7] ) ^ - MULT( MDS(j,6), tmp[6][(++k)&7] ) ^ - MULT( MDS(j,7), tmp[7][(++k)&7] ) ; - - } - } - DEBUG_PRINT(ctx, "post MDS"); -} - -void twister_mini_round(twister_state_t* ctx, void* msg){ - /* inject message */ - uint8_t i; - for(i=0; i<8; ++i){ - ctx->s[7][7-i] ^= *((uint8_t*)msg); - msg = (uint8_t*)msg +1; - } - twister_blank_round(ctx); -} -#if 0 -void twister_ctx2hash(void* dest, twister_state_t* ctx, uint16_t hashsize_b){ - uint8_t tmp[8][8]; - uint8_t j; - uint16_t i=hashsize_b; - while(i>=64){ - i-=64; - memcpy(tmp,ctx->s, 64); - twister_blank_round(ctx); - memxor(ctx->s, tmp, 64); - twister_blank_round(ctx); - for(j=0; j<8; ++j){ - *((uint8_t*)dest) = ctx->s[7-j][0] ^ tmp[7-j][0]; - dest = (uint8_t*)dest + 1; - } - } - if(i>=32){ - memcpy(tmp,ctx->s, 64); - twister_blank_round(ctx); - memxor(ctx->s, tmp, 64); - twister_blank_round(ctx); - for(j=0; j<4; ++j){ - *((uint8_t*)dest) = ctx->s[3-j][0] ^ tmp[3-j][0]; - dest = (uint8_t*)dest + 1; - } - } -} - -#endif diff --git a/twister.c b/twister.c index af82c13..9eae239 100644 --- a/twister.c +++ b/twister.c @@ -28,45 +28,7 @@ #ifndef TWISTER_MUL_TABLE # include "gf256mul.h" #endif - -#undef DEBUG - -#ifdef DEBUG -# include "uart.h" -#endif - -#ifdef DEBUG -# define DEBUG_PRINT(ctx, msg) debug_print((ctx), PSTR(msg)) -#else -# define DEBUG_PRINT(ctx, msg) -#endif - -#ifdef DEBUG - -void print_twister_state(twister_state_t* ctx){ - uint8_t i; - uart_putstr_P(PSTR("\r\nState:\r\n matrix:\r\n")); - for(i=0; i<8; ++i){ - uart_putstr_P(PSTR("\t[ ")); - uart_hexdump(&(ctx->s[i][0]), 8); - uart_putstr_P(PSTR("]\r\n")); - } - uart_putstr_P(PSTR("counter: ")); - uart_hexdump(&(ctx->counter), 8); - - uart_putstr_P(PSTR("\r\nlength_counter_b: ")); - uart_hexdump(&(ctx->length_counter_b), 8); - uart_putstr_P(PSTR("\r\n")); -} - -void debug_print(twister_state_t* ctx, PGM_P msg){ - uart_putstr_P(PSTR("\r\n")); - uart_putstr_P(msg); - print_twister_state(ctx); -} - -#endif - + static void shiftrow(void* row, uint8_t shift){ *((uint64_t*)row) = *((uint64_t*)row)>>(8*shift) | *((uint64_t*)row)<<(64-8*shift); @@ -82,13 +44,11 @@ void shiftrow(void* row, uint8_t shift){ void twister_blank_round(twister_state_t* ctx){ uint8_t i,j,k=0; uint8_t tmp[8][8]; - DEBUG_PRINT(ctx, "blank init"); /* add twist counter */ for(i=0; i<8; ++i){ ctx->s[i][1] ^= ((uint8_t*)&(ctx->counter))[7-i]; } ctx->counter--; -// DEBUG_PRINT(ctx, "counter added"); /* sub bytes */ for(i=0; i<8; ++i){ for(j=0;j<8;++j){ @@ -116,7 +76,6 @@ void twister_blank_round(twister_state_t* ctx){ } } - DEBUG_PRINT(ctx, "post MDS"); } void twister_mini_round(twister_state_t* ctx, void* msg){