fix: encoding Falcon secret key basis polynomials (#319)
Al-Kindi-0 82364884+Al-Kindi-0@users.noreply.github.com
Wed, 29 May 2024 08:20:28 +0200
1 files changed,
15 insertions(+),
3 deletions(-)
M
src/dsa/rpo_falcon512/keys/secret_key.rs
→
src/dsa/rpo_falcon512/keys/secret_key.rs
@@ -217,15 +217,27 @@
let mut buffer = Vec::with_capacity(1281); buffer.push(header); - let f_i8: Vec<i8> = neg_f.coefficients.iter().map(|&a| -a as i8).collect(); + let f_i8: Vec<i8> = neg_f + .coefficients + .iter() + .map(|&a| FalconFelt::new(-a).balanced_value() as i8) + .collect(); let f_i8_encoded = encode_i8(&f_i8, WIDTH_SMALL_POLY_COEFFICIENT).unwrap(); buffer.extend_from_slice(&f_i8_encoded); - let g_i8: Vec<i8> = g.coefficients.iter().map(|&a| a as i8).collect(); + let g_i8: Vec<i8> = g + .coefficients + .iter() + .map(|&a| FalconFelt::new(a).balanced_value() as i8) + .collect(); let g_i8_encoded = encode_i8(&g_i8, WIDTH_SMALL_POLY_COEFFICIENT).unwrap(); buffer.extend_from_slice(&g_i8_encoded); - let big_f_i8: Vec<i8> = neg_big_f.coefficients.iter().map(|&a| -a as i8).collect(); + let big_f_i8: Vec<i8> = neg_big_f + .coefficients + .iter() + .map(|&a| FalconFelt::new(-a).balanced_value() as i8) + .collect(); let big_f_i8_encoded = encode_i8(&big_f_i8, WIDTH_BIG_POLY_COEFFICIENT).unwrap(); buffer.extend_from_slice(&big_f_i8_encoded); target.write_bytes(&buffer);