summaryrefslogtreecommitdiff
path: root/chip
diff options
context:
space:
mode:
authorVadim Sukhomlinov <sukhomlinov@google.com>2021-09-29 15:02:49 -0700
committerCommit Bot <commit-bot@chromium.org>2021-10-05 19:08:53 +0000
commit9cd80daff9f6d9df08311a790a79632ab647a162 (patch)
treef454c7c3b3e8b47f0dd7327fc7be7e9f9dd2181d /chip
parentd64c8e2803a570aa3181fe67f2fb0f3241789de1 (diff)
downloadchrome-ec-9cd80daff9f6d9df08311a790a79632ab647a162.tar.gz
cr50: Update AES public APIsfactory-ambassador-14265.B-cr50_stab
To support FIPS mode we need to block access to crypto in case of errors. 1) Added check for FIPS errors into DCRYPTO_aes_init() 2) Return codes updated to enum dcrypto_result 3) Call sites updated to check for return codes BUG=b:197893750 TEST=make BOARD=cr50 CRYPTO_TEST=1; test/tpm_test/tpmtest.py Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> Change-Id: Id614cc346fe22537e9208196bf1322221a253b0c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3194985 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org> Commit-Queue: Vadim Sukhomlinov <sukhomlinov@chromium.org> Tested-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
Diffstat (limited to 'chip')
-rw-r--r--chip/host/dcrypto/aes.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/chip/host/dcrypto/aes.c b/chip/host/dcrypto/aes.c
index cc57168cbb..4556b4b5dd 100644
--- a/chip/host/dcrypto/aes.c
+++ b/chip/host/dcrypto/aes.c
@@ -10,16 +10,17 @@
#include "dcrypto.h"
#include "registers.h"
-int DCRYPTO_aes_ctr(uint8_t *out, const uint8_t *key, uint32_t key_bits,
- const uint8_t *iv, const uint8_t *in, size_t in_len)
+enum dcrypto_result DCRYPTO_aes_ctr(uint8_t *out, const uint8_t *key,
+ uint32_t key_bits, const uint8_t *iv,
+ const uint8_t *in, size_t in_len)
{
EVP_CIPHER_CTX *ctx;
- int ret = 0;
+ enum dcrypto_result ret = DCRYPTO_FAIL;
int out_len = 0;
ctx = EVP_CIPHER_CTX_new();
if (!ctx)
- return 0;
+ return DCRYPTO_FAIL;
if (EVP_EncryptInit_ex(ctx, EVP_aes_256_ctr(), NULL, key, iv) != 1)
goto cleanup;
@@ -29,7 +30,7 @@ int DCRYPTO_aes_ctr(uint8_t *out, const uint8_t *key, uint32_t key_bits,
if (EVP_EncryptFinal(ctx, out + out_len, &out_len) != 1)
goto cleanup;
- ret = 1;
+ ret = DCRYPTO_OK;
cleanup:
EVP_CIPHER_CTX_free(ctx);