X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=aes_enc.c;h=dadf9f45a63d7d875e2bde7441a8741469392278;hb=7701e318e4e2bac7f84dbf6e368f1501814948fc;hp=244dcff5e2da381eb1945479af70cd12a1717c9b;hpb=a75cfaf73ecb62448c0344e2842c61b178d84b7b;p=avr-crypto-lib.git diff --git a/aes_enc.c b/aes_enc.c index 244dcff..dadf9f4 100644 --- a/aes_enc.c +++ b/aes_enc.c @@ -1,6 +1,6 @@ /* aes_enc.c */ /* - This file is part of the Crypto-avr-lib/microcrypt-lib. + This file is part of the AVR-Crypto-Lib. Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) This program is free software: you can redistribute it and/or modify @@ -51,7 +51,7 @@ void aes_shiftcol(void* data, uint8_t shift){ static void aes_enc_round(aes_cipher_state_t* state, const aes_roundkey_t* k){ - uint8_t tmp[16]; + uint8_t tmp[16], t; uint8_t i; /* subBytes */ for(i=0; i<16; ++i){ @@ -63,26 +63,23 @@ void aes_enc_round(aes_cipher_state_t* state, const aes_roundkey_t* k){ aes_shiftcol(tmp+3, 3); /* mixColums */ for(i=0; i<4; ++i){ + t = tmp[4*i+0] ^ tmp[4*i+1] ^ tmp[4*i+2] ^ tmp[4*i+3]; state->s[4*i+0] = - GF256MUL_2(tmp[4*i+0]) - ^ GF256MUL_3(tmp[4*i+1]) - ^ GF256MUL_1(tmp[4*i+2]) - ^ GF256MUL_1(tmp[4*i+3]); + GF256MUL_2(tmp[4*i+0]^tmp[4*i+1]) + ^ tmp[4*i+0] + ^ t; state->s[4*i+1] = - GF256MUL_1(tmp[4*i+0]) - ^ GF256MUL_2(tmp[4*i+1]) - ^ GF256MUL_3(tmp[4*i+2]) - ^ GF256MUL_1(tmp[4*i+3]); + GF256MUL_2(tmp[4*i+1]^tmp[4*i+2]) + ^ tmp[4*i+1] + ^ t; state->s[4*i+2] = - GF256MUL_1(tmp[4*i+0]) - ^ GF256MUL_1(tmp[4*i+1]) - ^ GF256MUL_2(tmp[4*i+2]) - ^ GF256MUL_3(tmp[4*i+3]); + GF256MUL_2(tmp[4*i+2]^tmp[4*i+3]) + ^ tmp[4*i+2] + ^ t; state->s[4*i+3] = - GF256MUL_3(tmp[4*i+0]) - ^ GF256MUL_1(tmp[4*i+1]) - ^ GF256MUL_1(tmp[4*i+2]) - ^ GF256MUL_2(tmp[4*i+3]); + GF256MUL_2(tmp[4*i+3]^tmp[4*i+0]) + ^ tmp[4*i+3] + ^ t; } /* addKey */