From c28b6fb7ba8973749b548ccb6720395d49bfd6f6 Mon Sep 17 00:00:00 2001 From: kkrentz Date: Sun, 29 May 2016 04:29:43 -0700 Subject: [PATCH] CC2538: Reboot if the crypto engine fails (error handling is too hard) --- cpu/cc2538/dev/cc2538-aes-128.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cpu/cc2538/dev/cc2538-aes-128.c b/cpu/cc2538/dev/cc2538-aes-128.c index a1031c2c8..aa5b5e8e6 100644 --- a/cpu/cc2538/dev/cc2538-aes-128.c +++ b/cpu/cc2538/dev/cc2538-aes-128.c @@ -40,6 +40,7 @@ #include "contiki.h" #include "dev/ecb.h" #include "dev/cc2538-aes-128.h" +#include "dev/sys-ctrl.h" #include #include @@ -82,6 +83,7 @@ set_key(const uint8_t *key) CC2538_AES_128_KEY_AREA); if(ret != CRYPTO_SUCCESS) { PRINTF("%s: aes_load_keys() error %u\n", MODULE_NAME, ret); + sys_ctrl_reset(); } restore_crypto(crypto_enabled); @@ -99,13 +101,13 @@ encrypt(uint8_t *plaintext_and_result) plaintext_and_result, AES_128_BLOCK_SIZE, NULL); if(ret != CRYPTO_SUCCESS) { PRINTF("%s: ecb_crypt_start() error %u\n", MODULE_NAME, ret); - restore_crypto(crypto_enabled); - return; + sys_ctrl_reset(); } while((res = ecb_crypt_check_status()) == CRYPTO_PENDING); if(res != CRYPTO_SUCCESS) { PRINTF("%s: ecb_crypt_check_status() error %d\n", MODULE_NAME, res); + sys_ctrl_reset(); } restore_crypto(crypto_enabled);