diff --git a/tinycrypt/ecc_dh.c b/tinycrypt/ecc_dh.c index 54b9a8ab4..853c50dca 100644 --- a/tinycrypt/ecc_dh.c +++ b/tinycrypt/ecc_dh.c @@ -169,6 +169,12 @@ int uECC_shared_secret(const uint8_t *public_key, const uint8_t *private_key, wordcount_t num_bytes = curve->num_bytes; int r; + /* Protect against invalid curve attacks */ + if (uECC_valid_public_key(public_key, curve) != 0) { + r = 0; + goto clear_and_out; + } + /* Converting buffers to correct bit order: */ uECC_vli_bytesToNative(_private, private_key,