diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h index 22eba11de..b2e732942 100644 --- a/include/mbedtls/config.h +++ b/include/mbedtls/config.h @@ -3028,9 +3028,11 @@ /** * \def MBEDTLS_PLATFORM_FAULT_CALLBACKS * - * Uncomment to provide your own alternate implementation for mbedtls_platform_fault(), - * used in library/platform_util.c to signal a fault injection in either - * mbedtls_platform_memcpy, mbedtls_platform_memset or mbedtls_platform_random_buf. + * Uncomment to provide your own alternate implementation for + * mbedtls_platform_fault(), used in library/platform_util.c and + * tinycrypt/ecc.c to signal a fault injection in either + * mbedtls_platform_memcpy, mbedtls_platform_memset, mbedtls_platform_random_buf, + * or uECC_vli_mmod. * * You will need to provide a header "platform_fault.h" and an implementation at * compile time. diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c index a6c8467e8..1a1643836 100644 --- a/tinycrypt/ecc.c +++ b/tinycrypt/ecc.c @@ -70,6 +70,12 @@ #include #include "mbedtls/platform_util.h" +#if defined(MBEDTLS_PLATFORM_FAULT_CALLBACKS) +#include "platform_fault.h" +#else +static void mbedtls_platform_fault(){} +#endif + #if defined MBEDTLS_OPTIMIZE_TINYCRYPT_ASM #ifndef asm #define asm __asm @@ -1167,6 +1173,12 @@ void uECC_vli_mmod(uECC_word_t *result, uECC_word_t *product, wordcount_t word_shift = shift / uECC_WORD_BITS; wordcount_t bit_shift = shift % uECC_WORD_BITS; uECC_word_t carry = 0; + + if(word_shift > NUM_ECC_WORDS) + { + mbedtls_platform_fault(); + } + uECC_vli_clear(mod_multiple); if (bit_shift > 0) { for(index = 0; index < (uECC_word_t)num_words; ++index) {