From 9d7e8a83c9c93b85b00ae7ea1fa8e2a2ce813f10 Mon Sep 17 00:00:00 2001 From: Jacob Barthelmeh Date: Tue, 11 Jul 2017 17:13:32 -0600 Subject: [PATCH] update AES CTR API with ARMv8 port --- wolfcrypt/src/port/arm/armv8-aes.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/wolfcrypt/src/port/arm/armv8-aes.c b/wolfcrypt/src/port/arm/armv8-aes.c index 0dc43e4e4..7a7209c0c 100644 --- a/wolfcrypt/src/port/arm/armv8-aes.c +++ b/wolfcrypt/src/port/arm/armv8-aes.c @@ -887,11 +887,17 @@ void wc_AesFree(Aes* aes) } } - void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) + int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { - byte* tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + byte* tmp; word32 numBlocks; + if (aes == NULL || out == NULL || in == NULL) { + return BAD_FUNC_ARG; + } + + tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + /* consume any unused bytes left in aes->tmp */ while (aes->left && sz) { *(out++) = *(in++) ^ *(tmp++); @@ -1374,7 +1380,7 @@ void wc_AesFree(Aes* aes) default: WOLFSSL_MSG("Bad AES-CTR round value"); - return; + return BAD_FUNC_ARG; } aes->left = 0; @@ -1393,6 +1399,7 @@ void wc_AesFree(Aes* aes) aes->left--; } } + return 0; } #endif /* WOLFSSL_AES_COUNTER */ @@ -3503,11 +3510,17 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, } } - void wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) + int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz) { - byte* tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + byte* tmp; word32 numBlocks; + if (aes == NULL || out == NULL || in == NULL) { + return BAD_FUNC_ARG; + } + + tmp = (byte*)aes->tmp + AES_BLOCK_SIZE - aes->left; + /* consume any unused bytes left in aes->tmp */ while (aes->left && sz) { *(out++) = *(in++) ^ *(tmp++); @@ -3997,7 +4010,7 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, default: WOLFSSL_MSG("Bad AES-CTR round qalue"); - return; + return BAD_FUNC_ARG; } aes->left = 0; @@ -4016,6 +4029,8 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz, aes->left--; } } + + return 0; } #endif /* WOLFSSL_AES_COUNTER */