Make `GLWECiphertextToRef/{ToMut}` implement `Infos`
Janmajaya Mall janmajayamall@protonmail.com
Tue, 08 Jul 2025 13:53:43 +0530
3 files changed,
10 insertions(+),
8 deletions(-)
M
core/src/ggsw/ciphertext.rs
→
core/src/ggsw/ciphertext.rs
@@ -20,6 +20,8 @@
impl GGSWCiphertext<Vec<u8>, FFT64> { pub fn alloc(module: &Module<FFT64>, basek: usize, k: usize, rows: usize, digits: usize, rank: usize) -> Self { let size: usize = k.div_ceil(basek); + debug_assert!(digits > 0, "invalid ggsw: `digits` == 0"); + debug_assert!( size > digits, "invalid ggsw: ceil(k/basek): {} <= digits: {}",
M
core/src/glwe/ciphertext.rs
→
core/src/glwe/ciphertext.rs
@@ -79,7 +79,7 @@ self.basek = basek
} } -pub trait GLWECiphertextToRef { +pub trait GLWECiphertextToRef: Infos { fn to_ref(&self) -> GLWECiphertext<&[u8]>; }@@ -93,7 +93,7 @@ }
} } -pub trait GLWECiphertextToMut { +pub trait GLWECiphertextToMut: Infos { fn to_mut(&mut self) -> GLWECiphertext<&mut [u8]>; }
M
core/src/glwe/ops.rs
→
core/src/glwe/ops.rs
@@ -2,11 +2,11 @@ use backend::{FFT64, Module, Scratch, VecZnx, VecZnxOps, ZnxZero};
use crate::{GLWECiphertext, GLWECiphertextToMut, GLWECiphertextToRef, Infos, SetMetaData}; -pub trait GLWEOps: GLWECiphertextToMut + Infos + SetMetaData { +pub trait GLWEOps: GLWECiphertextToMut + SetMetaData { fn add<A, B>(&mut self, module: &Module<FFT64>, a: &A, b: &B) where - A: GLWECiphertextToRef + Infos, - B: GLWECiphertextToRef + Infos, + A: GLWECiphertextToRef, + B: GLWECiphertextToRef, { #[cfg(debug_assertions)] {@@ -75,8 +75,8 @@ }
fn sub<A, B>(&mut self, module: &Module<FFT64>, a: &A, b: &B) where - A: GLWECiphertextToRef + Infos, - B: GLWECiphertextToRef + Infos, + A: GLWECiphertextToRef, + B: GLWECiphertextToRef, { #[cfg(debug_assertions)] {@@ -230,7 +230,7 @@ }
fn normalize<A>(&mut self, module: &Module<FFT64>, a: &A, scratch: &mut Scratch) where - A: GLWECiphertextToRef + Infos, + A: GLWECiphertextToRef, { #[cfg(debug_assertions)] {