ENC: fix encryption
It was actually broken, since we did overwrite the out-coefficients instead of adding to them. Fixing this again causes the same problems as described in the inline comment, no matter which implementation we use.
This commit is contained in:
parent
a050b8853a
commit
bdc3aad651
@ -59,23 +59,10 @@ ntru_encrypt_poly(
|
|||||||
fmpz_poly_zero(out);
|
fmpz_poly_zero(out);
|
||||||
poly_starmultiply(pub_key, rnd, out, ctx, ctx->q);
|
poly_starmultiply(pub_key, rnd, out, ctx, ctx->q);
|
||||||
|
|
||||||
/*
|
/* FIXME: causes rare junk chars in some cases,
|
||||||
* using the flint functions
|
* which is perfectly reproducible, so this is not UB */
|
||||||
* fmpz_poly_add(out, out, tmp_poly_msg);
|
fmpz_poly_add(out, out, tmp_poly_msg);
|
||||||
* fmpz_poly_mod_unsigned(out, ctx->q);
|
fmpz_poly_mod_unsigned(out, ctx->q);
|
||||||
* here instead caused very rare glitches in some cases,
|
|
||||||
* TODO: investigate
|
|
||||||
*/
|
|
||||||
for (uint32_t i = 0; i < ctx->N; i++) {
|
|
||||||
fmpz_t e_coeff_i;
|
|
||||||
fmpz *m_coeff_i = fmpz_poly_get_coeff_ptr(tmp_poly_msg, i);
|
|
||||||
fmpz_init(e_coeff_i);
|
|
||||||
|
|
||||||
fmpz_add_n(e_coeff_i, e_coeff_i, m_coeff_i);
|
|
||||||
fmpz_mod_ui(e_coeff_i, e_coeff_i, ctx->q);
|
|
||||||
|
|
||||||
fmpz_poly_set_coeff_fmpz_n(out, i, e_coeff_i);
|
|
||||||
}
|
|
||||||
|
|
||||||
fmpz_poly_clear(tmp_poly_msg);
|
fmpz_poly_clear(tmp_poly_msg);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user