X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=aes_keyschedule.c;h=429cef639fed0c295313e4aabbeae65da09cfbd4;hb=6718048fd9038c98523eae722545bb0279e0bc21;hp=59b7bf43704bba261f8e492bec5f4cd4f2a81f40;hpb=d6a35f05fd2b5ee79d5ad8424434ad1a068be453;p=avr-crypto-lib.git diff --git a/aes_keyschedule.c b/aes_keyschedule.c index 59b7bf4..429cef6 100644 --- a/aes_keyschedule.c +++ b/aes_keyschedule.c @@ -46,39 +46,30 @@ void aes_rotword(void* a){ #include "uart.h" void aes_init(const void* key, uint16_t keysize_b, aes_genctx_t* ctx){ - uint8_t hi,i,nk; + uint8_t hi,i,nk, next_nk; uint8_t rc=1; uint8_t tmp[4]; - nk=keysize_b/32; + nk=keysize_b>>5; /* 4, 6, 8 */ hi=4*(nk+6+1); memcpy(ctx, key, keysize_b/8); - i=keysize_b/32; + next_nk = nk; for(i=nk;ikey[0].ks))[i-1]; - // uart_putstr_P(PSTR("\r\nDBG: tmp = ")); - // uart_hexdump(tmp, 4); - if(i%nk){ - if(nk>6 && i%nk==4){ + if(i!=next_nk){ + if(nk==8 && i%8==4){ tmp[0] = pgm_read_byte(aes_sbox+tmp[0]); tmp[1] = pgm_read_byte(aes_sbox+tmp[1]); tmp[2] = pgm_read_byte(aes_sbox+tmp[2]); tmp[3] = pgm_read_byte(aes_sbox+tmp[3]); - // uart_putstr_P(PSTR("\r\nDBG: after sub = ")); - // uart_hexdump(tmp, 4); } } else { + next_nk += nk; aes_rotword(tmp); - // uart_putstr_P(PSTR("\r\nDBG: after rot = ")); - // uart_hexdump(tmp, 4); tmp[0] = pgm_read_byte(aes_sbox+tmp[0]); tmp[1] = pgm_read_byte(aes_sbox+tmp[1]); tmp[2] = pgm_read_byte(aes_sbox+tmp[2]); tmp[3] = pgm_read_byte(aes_sbox+tmp[3]); - // uart_putstr_P(PSTR("\r\nDBG: after sub = ")); - // uart_hexdump(tmp, 4); tmp[0] ^= rc; - // uart_putstr_P(PSTR("\r\nDBG: after xor RC = ")); - // uart_hexdump(tmp, 4); rc = gf256mul(2,rc,0x1b); } ((uint32_t*)(ctx->key[0].ks))[i] = ((uint32_t*)(ctx->key[0].ks))[i-nk]