Fix more overflowing muls in Frodomaster
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16 | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM1344AES_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16_t | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM1344SHAKE_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16 | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_ | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM640AES_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16_t | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint1 | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM640SHAKE_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16_ | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_ | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM976AES_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16_t | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint1 | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||
@@ -58,7 +58,7 @@ void PQCLEAN_FRODOKEM976SHAKE_OPT_mul_add_sb_plus_e(uint16_t *out, const uint16_ | |||||
for (i = 0; i < PARAMS_NBAR; i++) { | for (i = 0; i < PARAMS_NBAR; i++) { | ||||
out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; | ||||
for (j = 0; j < PARAMS_N; j++) { | for (j = 0; j < PARAMS_N; j++) { | ||||
out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; | |||||
out[k * PARAMS_NBAR + i] += (uint16_t)(s[k * PARAMS_N + j] * (uint32_t)b[j * PARAMS_NBAR + i]); | |||||
} | } | ||||
out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); | ||||
} | } | ||||