Browse Source

Fix overflowing mults in NTRUHRSS701

kyber
Thom Wiggers 4 years ago
committed by Kris Kwiatkowski
parent
commit
5f02a4e80c
1 changed files with 2 additions and 2 deletions
  1. +2
    -2
      crypto_kem/ntruhrss701/clean/sample.c

+ 2
- 2
crypto_kem/ntruhrss701/clean/sample.c View File

@@ -37,14 +37,14 @@ void PQCLEAN_NTRUHRSS701_CLEAN_sample_iid_plus(poly *r, const unsigned char unif

/* s = <x*r, r>. (r[n-1] = 0) */
for (i = 0; i < NTRU_N - 1; i++) {
s += r->coeffs[i + 1] * r->coeffs[i];
s += (uint16_t)((uint32_t)r->coeffs[i + 1] * (uint32_t)r->coeffs[i]);
}

/* Extract sign of s (sign(0) = 1) */
s = 1 | (-(s >> 15));

for (i = 0; i < NTRU_N; i += 2) {
r->coeffs[i] = s * r->coeffs[i];
r->coeffs[i] = (uint16_t)((uint32_t)s * (uint32_t)r->coeffs[i]);
}

/* Map {0,1,2^16-1} -> {0, 1, 2} */


Loading…
Cancel
Save