From c28943ba13e01e4410e6b62d96b267f1021a97b8 Mon Sep 17 00:00:00 2001 From: d0k3 Date: Tue, 6 Dec 2016 22:50:12 +0100 Subject: [PATCH] Fix key setting after slot 0x03 ... aka the most annyoing bug of all time --- source/crypto/aes.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/crypto/aes.c b/source/crypto/aes.c index e7ee103..b0eb7a6 100644 --- a/source/crypto/aes.c +++ b/source/crypto/aes.c @@ -6,6 +6,7 @@ void setup_aeskeyX(uint8_t keyslot, void* keyx) { uint32_t * _keyx = (uint32_t*)keyx; + *REG_AESCNT = (*REG_AESCNT) | AES_CNT_INPUT_ENDIAN | AES_CNT_INPUT_ORDER; *REG_AESKEYCNT = (*REG_AESKEYCNT >> 6 << 6) | keyslot | 0x80; if (keyslot > 3) { *REG_AESKEYXFIFO = _keyx[0]; @@ -25,6 +26,7 @@ void setup_aeskeyX(uint8_t keyslot, void* keyx) void setup_aeskeyY(uint8_t keyslot, void* keyy) { uint32_t * _keyy = (uint32_t*)keyy; + *REG_AESCNT = (*REG_AESCNT) | AES_CNT_INPUT_ENDIAN | AES_CNT_INPUT_ORDER; *REG_AESKEYCNT = (*REG_AESKEYCNT >> 6 << 6) | keyslot | 0x80; if (keyslot > 3) { *REG_AESKEYYFIFO = _keyy[0]; @@ -44,6 +46,7 @@ void setup_aeskeyY(uint8_t keyslot, void* keyy) void setup_aeskey(uint8_t keyslot, void* key) { uint32_t * _key = (uint32_t*)key; + *REG_AESCNT = (*REG_AESCNT) | AES_CNT_INPUT_ENDIAN | AES_CNT_INPUT_ORDER; *REG_AESKEYCNT = (*REG_AESKEYCNT >> 6 << 6) | keyslot | 0x80; if (keyslot > 3) { *REG_AESKEYFIFO = _key[0];