From 2eca3d367b283003204fcacb42f74b449b0000a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Mon, 4 Nov 2019 14:33:09 +0100 Subject: [PATCH] Hardcode numwords in vli_equal --- include/tinycrypt/ecc.h | 3 +-- tinycrypt/ecc.c | 7 +++---- tinycrypt/ecc_dsa.c | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/include/tinycrypt/ecc.h b/include/tinycrypt/ecc.h index 57c156aae..55e450ee8 100644 --- a/include/tinycrypt/ecc.h +++ b/include/tinycrypt/ecc.h @@ -419,8 +419,7 @@ uECC_word_t uECC_vli_sub(uECC_word_t *result, const uECC_word_t *left, * @param num_words IN -- number of words * @return Returns 0 if left == right, 1 otherwise. */ -uECC_word_t uECC_vli_equal(const uECC_word_t *left, const uECC_word_t *right, - wordcount_t num_words); +uECC_word_t uECC_vli_equal(const uECC_word_t *left, const uECC_word_t *right); /* * @brief Computes (left * right) % mod diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c index c223ff509..0b7b41af3 100644 --- a/tinycrypt/ecc.c +++ b/tinycrypt/ecc.c @@ -176,14 +176,13 @@ cmpresult_t uECC_vli_cmp_unsafe(const uECC_word_t *left, return 0; } -uECC_word_t uECC_vli_equal(const uECC_word_t *left, const uECC_word_t *right, - wordcount_t num_words) +uECC_word_t uECC_vli_equal(const uECC_word_t *left, const uECC_word_t *right) { uECC_word_t diff = 0; wordcount_t i; - for (i = num_words - 1; i >= 0; --i) { + for (i = NUM_ECC_WORDS - 1; i >= 0; --i) { diff |= (left[i] ^ right[i]); } return !(diff == 0); @@ -1066,7 +1065,7 @@ int uECC_valid_point(const uECC_word_t *point, uECC_Curve curve) curve->x_side(tmp2, point, curve); /* tmp2 = x^3 + ax + b */ /* Make sure that y^2 == x^3 + ax + b */ - if (uECC_vli_equal(tmp1, tmp2, num_words) != 0) + if (uECC_vli_equal(tmp1, tmp2) != 0) return -3; return 0; diff --git a/tinycrypt/ecc_dsa.c b/tinycrypt/ecc_dsa.c index 7d4053401..6a937058e 100644 --- a/tinycrypt/ecc_dsa.c +++ b/tinycrypt/ecc_dsa.c @@ -298,7 +298,7 @@ int uECC_verify(const uint8_t *public_key, const uint8_t *message_hash, } /* Accept only if v == r. */ - return (int)(uECC_vli_equal(rx, r, num_words) == 0); + return (int)(uECC_vli_equal(rx, r) == 0); } #else typedef int mbedtls_dummy_tinycrypt_def;