3 This file is part of the Crypto-avr-lib/microcrypt-lib.
4 Copyright (C) 2008, 2009 Daniel Otte (daniel.otte@rub.de)
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>.
21 * \email daniel.otte@rub.de
24 * \license GPLv3 or later
28 #include "avr-asm-macros.S"
76 void aes_encrypt_core(aes_cipher_state_t* state, const aes_genctx_t* ks, uint8_t rounds)
102 * param state: r24:r25
106 .global aes_encrypt_core
118 .irp param,ST00, ST01, ST02, ST03, ST10, ST11, ST12, ST13, ST20, ST21, ST22, ST23, ST30, ST31, ST32, ST33
123 .irp param,ST00, ST01, ST02, ST03, ST10, ST11, ST12, ST13, ST20, ST21, ST22, ST23, ST30, ST31, ST32, ST33
135 ldi r30, lo8(aes_sbox)
136 ldi r31, hi8(aes_sbox)
138 /* encryption loop */
140 /* SBOX substitution and shifting */
215 /* mixcols (or rows in our case) */
219 ldi xREDUCER, 0x1b /* load reducer */
417 /* mix colums (rows) done */