Hardcode numwords in vli_sub
diff --git a/tinycrypt/ecc.c b/tinycrypt/ecc.c
index 0b7b41a..47acf2a 100644
--- a/tinycrypt/ecc.c
+++ b/tinycrypt/ecc.c
@@ -196,11 +196,11 @@
/* Computes result = left - right, returning borrow, in constant time.
* Can modify in place. */
uECC_word_t uECC_vli_sub(uECC_word_t *result, const uECC_word_t *left,
- const uECC_word_t *right, wordcount_t num_words)
+ const uECC_word_t *right)
{
uECC_word_t borrow = 0;
wordcount_t i;
- for (i = 0; i < num_words; ++i) {
+ for (i = 0; i < NUM_ECC_WORDS; ++i) {
uECC_word_t diff = left[i] - right[i] - borrow;
uECC_word_t val = (diff > left[i]);
borrow = cond_set(val, borrow, (diff != left[i]));
@@ -230,8 +230,9 @@
wordcount_t num_words)
{
uECC_word_t tmp[NUM_ECC_WORDS];
- uECC_word_t neg = !!uECC_vli_sub(tmp, left, right, num_words);
+ uECC_word_t neg = !!uECC_vli_sub(tmp, left, right);
uECC_word_t equal = uECC_vli_isZero(tmp);
+ (void) num_words;
return (!equal - 2 * neg);
}
@@ -425,10 +426,11 @@
wordcount_t num_words)
{
uECC_word_t carry = uECC_vli_add(result, left, right);
+ (void) num_words;
if (carry || uECC_vli_cmp_unsafe(mod, result) != 1) {
/* result > mod (result = mod + remainder), so subtract mod to get
* remainder. */
- uECC_vli_sub(result, result, mod, num_words);
+ uECC_vli_sub(result, result, mod);
}
}
@@ -436,7 +438,8 @@
const uECC_word_t *right, const uECC_word_t *mod,
wordcount_t num_words)
{
- uECC_word_t l_borrow = uECC_vli_sub(result, left, right, num_words);
+ uECC_word_t l_borrow = uECC_vli_sub(result, left, right);
+ (void) num_words;
if (l_borrow) {
/* In this case, result == -diff == (max int) - diff. Since -x % d == d - x,
* we can get the correct result from result + mod (with overflow). */
@@ -557,20 +560,20 @@
uECC_vli_rshift1(b, num_words);
vli_modInv_update(v, mod, num_words);
} else if (cmpResult > 0) {
- uECC_vli_sub(a, a, b, num_words);
+ uECC_vli_sub(a, a, b);
uECC_vli_rshift1(a, num_words);
if (uECC_vli_cmp_unsafe(u, v) < 0) {
uECC_vli_add(u, u, mod);
}
- uECC_vli_sub(u, u, v, num_words);
+ uECC_vli_sub(u, u, v);
vli_modInv_update(u, mod, num_words);
} else {
- uECC_vli_sub(b, b, a, num_words);
+ uECC_vli_sub(b, b, a);
uECC_vli_rshift1(b, num_words);
if (uECC_vli_cmp_unsafe(v, u) < 0) {
uECC_vli_add(v, v, mod);
}
- uECC_vli_sub(v, v, u, num_words);
+ uECC_vli_sub(v, v, u);
vli_modInv_update(v, mod, num_words);
}
}
@@ -699,7 +702,7 @@
tmp[3] = tmp[4] = tmp[5] = 0;
tmp[6] = product[8];
tmp[7] = product[10];
- carry -= uECC_vli_sub(result, result, tmp, NUM_ECC_WORDS);
+ carry -= uECC_vli_sub(result, result, tmp);
/* d2 */
tmp[0] = product[12];
@@ -709,7 +712,7 @@
tmp[4] = tmp[5] = 0;
tmp[6] = product[9];
tmp[7] = product[11];
- carry -= uECC_vli_sub(result, result, tmp, NUM_ECC_WORDS);
+ carry -= uECC_vli_sub(result, result, tmp);
/* d3 */
tmp[0] = product[13];
@@ -720,7 +723,7 @@
tmp[5] = product[10];
tmp[6] = 0;
tmp[7] = product[12];
- carry -= uECC_vli_sub(result, result, tmp, NUM_ECC_WORDS);
+ carry -= uECC_vli_sub(result, result, tmp);
/* d4 */
tmp[0] = product[14];
@@ -731,7 +734,7 @@
tmp[5] = product[11];
tmp[6] = 0;
tmp[7] = product[13];
- carry -= uECC_vli_sub(result, result, tmp, NUM_ECC_WORDS);
+ carry -= uECC_vli_sub(result, result, tmp);
if (carry < 0) {
do {
@@ -741,7 +744,7 @@
} else {
while (carry ||
uECC_vli_cmp_unsafe(curve_secp256r1.p, result) != 1) {
- carry -= uECC_vli_sub(result, result, curve_secp256r1.p, NUM_ECC_WORDS);
+ carry -= uECC_vli_sub(result, result, curve_secp256r1.p);
}
}
}