X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=aes%2Faes_enc-asm.S;h=83c6d554e9e3d4cbdeb406f35c0f242122985be5;hp=5b46a2abbe6c4dd67d79d2465c5a0b6f71e58557;hb=HEAD;hpb=4f50c75ee5a6cc88bf7ea71957ed509e298e6c25 diff --git a/aes/aes_enc-asm.S b/aes/aes_enc-asm.S index 5b46a2a..0923571 100644 --- a/aes/aes_enc-asm.S +++ b/aes/aes_enc-asm.S @@ -1,7 +1,7 @@ /* aes_enc-asm.S */ /* This file is part of the AVR-Crypto-Lib. - Copyright (C) 2008, 2009 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 @@ -18,7 +18,7 @@ */ /** * \file aes_enc-asm.S - * \email daniel.otte@rub.de + * \email bg@nerilex.org * \author Daniel Otte * \date 2009-01-10 * \license GPLv3 or later @@ -54,7 +54,7 @@ aes128_enc: /* - void aes_encrypt_core(aes_cipher_state_t* state, const aes_genctx_t* ks, uint8_t rounds) + void aes_encrypt_core(aes_cipher_state_t *state, const aes_genctx_t *ks, uint8_t rounds) */ T0= 2 T1= 3 @@ -96,8 +96,10 @@ aes_encrypt_core: mov CTR, r20 clt - .irp param,ST00, ST01, ST02, ST03, ST10, ST11, ST12, ST13, ST20, ST21, ST22, ST23, ST30, ST31, ST32, ST33 - ld \param, Z+ + .irp row, 0, 1, 2, 3 + .irp col, 0, 1, 2, 3 + ld ST\row\col, Z+ + .endr .endr ldi xREDUCER, 0x1b /* load reducer */ @@ -105,31 +107,23 @@ aes_encrypt_core: /* key whitening */ 1: - .irp param,ST00, ST01, ST02, ST03, ST10, ST11, ST12, ST13, ST20, ST21, ST22, ST23, ST30, ST31, ST32, ST33 - ld r0, X+ - eor \param, r0 + + .irp row, 0, 1, 2, 3 + .irp col, 0, 1, 2, 3 + ld r0, X+ + eor ST\row\col, r0 + .endr .endr brtc 2f -exit: +exit: pop r31 pop r30 - st Z+, ST00 - st Z+, ST01 - st Z+, ST02 - st Z+, ST03 - st Z+, ST10 - st Z+, ST11 - st Z+, ST12 - st Z+, ST13 - st Z+, ST20 - st Z+, ST21 - st Z+, ST22 - st Z+, ST23 - st Z+, ST30 - st Z+, ST31 - st Z+, ST32 - st Z+, ST33 + .irp row, 0, 1, 2, 3 + .irp col, 0, 1, 2, 3 + st Z+, ST\row\col + .endr + .endr pop r29 pop r28 pop_range 2, 17 @@ -187,145 +181,43 @@ exit: brtc 2f rjmp 1b 2: - /* mixrow 1 */ - mov r0, ST02 - eor r0, ST03 - mov T2, r0 - - mov T0, ST00 - eor ST00, ST01 - eor r0, ST00 - lsl ST00 - brcc 3f - eor ST00, xREDUCER -3: eor ST00, r0 - eor ST00, T0 - - mov T1, ST01 - eor T1, ST02 - lsl T1 - brcc 3f - eor T1, xREDUCER -3: eor T1, r0 - eor ST01, T1 - - lsl T2 - brcc 3f - eor T2, xREDUCER -3: eor T2, r0 - eor ST02, T2 - - eor T0, ST03 - lsl T0 - brcc 3f - eor T0, xREDUCER -3: eor T0, r0 - eor ST03, T0 - - /* mixrow 2 */ - mov r0, ST12 - eor r0, ST13 - mov T2, r0 - - mov T0, ST10 - eor ST10, ST11 - eor r0, ST10 - lsl ST10 - brcc 3f - eor ST10, xREDUCER -3: eor ST10, r0 - eor ST10, T0 - - mov T1, ST11 - eor T1, ST12 - lsl T1 - brcc 3f - eor T1, xREDUCER -3: eor T1, r0 - eor ST11, T1 - - lsl T2 - brcc 3f - eor T2, xREDUCER -3: eor T2, r0 - eor ST12, T2 - - eor T0, ST13 - lsl T0 - brcc 3f - eor T0, xREDUCER -3: eor T0, r0 - eor ST13, T0 - - /* mixrow 3 */ - mov r0, ST22 - eor r0, ST23 - mov T2, r0 - - mov T0, ST20 - eor ST20, ST21 - eor r0, ST20 - lsl ST20 - brcc 3f - eor ST20, xREDUCER -3: eor ST20, r0 - eor ST20, T0 - - mov T1, ST21 - eor T1, ST22 - lsl T1 - brcc 3f - eor T1, xREDUCER -3: eor T1, r0 - eor ST21, T1 - - lsl T2 - brcc 3f - eor T2, xREDUCER -3: eor T2, r0 - eor ST22, T2 - - eor T0, ST23 - lsl T0 - brcc 3f - eor T0, xREDUCER -3: eor T0, r0 - eor ST23, T0 - - /* mixrow 4 */ - mov r0, ST32 - eor r0, ST33 + /* mixrows */ + .irp row, 0, 1, 2, 3 + mov r0, ST\row\()2 + eor r0, ST\row\()3 mov T2, r0 - - mov T0, ST30 - eor ST30, ST31 - eor r0, ST30 - lsl ST30 + + mov T0, ST\row\()0 + eor ST\row\()0, ST\row\()1 + eor r0, ST\row\()0 + lsl ST\row\()0 brcc 3f - eor ST30, xREDUCER -3: eor ST30, r0 - eor ST30, T0 - - mov T1, ST31 - eor T1, ST32 + eor ST\row\()0, xREDUCER +3: eor ST\row\()0, r0 + eor ST\row\()0, T0 + + mov T1, ST\row\()1 + eor T1, ST\row\()2 lsl T1 brcc 3f eor T1, xREDUCER 3: eor T1, r0 - eor ST31, T1 - + eor ST\row\()1, T1 + lsl T2 brcc 3f eor T2, xREDUCER 3: eor T2, r0 - eor ST32, T2 - - eor T0, ST33 + eor ST\row\()2, T2 + + eor T0, ST\row\()3 lsl T0 brcc 3f eor T0, xREDUCER 3: eor T0, r0 - eor ST33, T0 + eor ST\row\()3, T0 + +.endr /* mix colums (rows) done */ /* add key*/