aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrzej Kurek <andrzej.kurek@arm.com>2020-06-12 06:32:13 -0400
committerAndrzej Kurek <andrzej.kurek@arm.com>2020-06-12 06:32:13 -0400
commit3a0df033643261d3872f8176568814a32103c2f8 (patch)
treef9fe67a560011d961b9cb7c4f35d72c3f2c6d2ba
parent8f52a8a8c06ba767ce0be2cf8d1406b7b24878a2 (diff)
downloadmbed-tls-3a0df033643261d3872f8176568814a32103c2f8.tar.gz
Increase the Hamming distance of uECC_generate_random_int returns
Signed-off-by: Andrzej Kurek <andrzej.kurek@arm.com>
-rw-r--r--include/tinycrypt/ecc.h3
-rw-r--r--tinycrypt/ecc.c10
-rw-r--r--tinycrypt/ecc_dsa.c2
3 files changed, 8 insertions, 7 deletions
diff --git a/include/tinycrypt/ecc.h b/include/tinycrypt/ecc.h
index b6fbc6906..57aa5087d 100644
--- a/include/tinycrypt/ecc.h
+++ b/include/tinycrypt/ecc.h
@@ -155,7 +155,8 @@ extern const uECC_word_t curve_b[NUM_ECC_WORDS];
* @param random OUT -- random integer in the range 0 < random < top
* @param top IN -- upper limit
* @param num_words IN -- number of words
- * @return a random integer in the range 0 < random < top
+ * @return UECC_SUCCESS in case of success
+ * @return UECC_FAILURE upon failure
*/
int uECC_generate_random_int(uECC_word_t *random, const uECC_word_t *top,
wordcount_t num_words);
diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index 57b3228dd..ca91e12f4 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -1080,7 +1080,7 @@ int EccPoint_mult_safer(uECC_word_t * result, const uECC_word_t * point,
/* If an RNG function was specified, get a random initial Z value to
* protect against side-channel attacks such as Template SPA */
if (g_rng_function) {
- if (!uECC_generate_random_int(k2[carry], curve_p, num_words)) {
+ if (uECC_generate_random_int(k2[carry], curve_p, num_words) != UECC_SUCCESS) {
r = UECC_FAILURE;
goto clear_and_out;
}
@@ -1165,21 +1165,21 @@ int uECC_generate_random_int(uECC_word_t *random, const uECC_word_t *top,
bitcount_t num_bits = uECC_vli_numBits(top);
if (!g_rng_function) {
- return 0;
+ return UECC_FAILURE;
}
for (tries = 0; tries < uECC_RNG_MAX_TRIES; ++tries) {
if (g_rng_function((uint8_t *)random, num_words * uECC_WORD_SIZE) != num_words * uECC_WORD_SIZE) {
- return 0;
+ return UECC_FAILURE;
}
random[num_words - 1] &=
mask >> ((bitcount_t)(num_words * uECC_WORD_SIZE * 8 - num_bits));
if (!uECC_vli_isZero(random) &&
uECC_vli_cmp(top, random) == 1) {
- return 1;
+ return UECC_SUCCESS;
}
}
- return 0;
+ return UECC_FAILURE;
}
diff --git a/tinycrypt/ecc_dsa.c b/tinycrypt/ecc_dsa.c
index 70f9c8bc6..bb3ed813b 100644
--- a/tinycrypt/ecc_dsa.c
+++ b/tinycrypt/ecc_dsa.c
@@ -109,7 +109,7 @@ int uECC_sign_with_k(const uint8_t *private_key, const uint8_t *message_hash,
uECC_vli_clear(tmp);
tmp[0] = 1;
}
- else if (!uECC_generate_random_int(tmp, curve_n, num_n_words)) {
+ else if (uECC_generate_random_int(tmp, curve_n, num_n_words) != UECC_SUCCESS) {
return UECC_FAILURE;
}