Make GLWECiphertextToRef/{ToMut} implement Infos

This commit is contained in:
Janmajaya Mall
2025-07-08 13:53:43 +05:30
parent 463731948d
commit b99f43aa0f
3 changed files with 10 additions and 8 deletions

View File

@@ -20,6 +20,8 @@ pub struct GGSWCiphertext<C, B: Backend> {
impl GGSWCiphertext<Vec<u8>, FFT64> { impl GGSWCiphertext<Vec<u8>, FFT64> {
pub fn alloc(module: &Module<FFT64>, basek: usize, k: usize, rows: usize, digits: usize, rank: usize) -> Self { pub fn alloc(module: &Module<FFT64>, basek: usize, k: usize, rows: usize, digits: usize, rank: usize) -> Self {
let size: usize = k.div_ceil(basek); let size: usize = k.div_ceil(basek);
debug_assert!(digits > 0, "invalid ggsw: `digits` == 0");
debug_assert!( debug_assert!(
size > digits, size > digits,
"invalid ggsw: ceil(k/basek): {} <= digits: {}", "invalid ggsw: ceil(k/basek): {} <= digits: {}",

View File

@@ -79,7 +79,7 @@ impl<DataSelf: AsMut<[u8]> + AsRef<[u8]>> SetMetaData for GLWECiphertext<DataSel
} }
} }
pub trait GLWECiphertextToRef { pub trait GLWECiphertextToRef: Infos {
fn to_ref(&self) -> GLWECiphertext<&[u8]>; fn to_ref(&self) -> GLWECiphertext<&[u8]>;
} }
@@ -93,7 +93,7 @@ impl<D: AsRef<[u8]>> GLWECiphertextToRef for GLWECiphertext<D> {
} }
} }
pub trait GLWECiphertextToMut { pub trait GLWECiphertextToMut: Infos {
fn to_mut(&mut self) -> GLWECiphertext<&mut [u8]>; fn to_mut(&mut self) -> GLWECiphertext<&mut [u8]>;
} }

View File

@@ -2,11 +2,11 @@ use backend::{FFT64, Module, Scratch, VecZnx, VecZnxOps, ZnxZero};
use crate::{GLWECiphertext, GLWECiphertextToMut, GLWECiphertextToRef, Infos, SetMetaData}; 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) fn add<A, B>(&mut self, module: &Module<FFT64>, a: &A, b: &B)
where where
A: GLWECiphertextToRef + Infos, A: GLWECiphertextToRef,
B: GLWECiphertextToRef + Infos, B: GLWECiphertextToRef,
{ {
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
{ {
@@ -75,8 +75,8 @@ pub trait GLWEOps: GLWECiphertextToMut + Infos + SetMetaData {
fn sub<A, B>(&mut self, module: &Module<FFT64>, a: &A, b: &B) fn sub<A, B>(&mut self, module: &Module<FFT64>, a: &A, b: &B)
where where
A: GLWECiphertextToRef + Infos, A: GLWECiphertextToRef,
B: GLWECiphertextToRef + Infos, B: GLWECiphertextToRef,
{ {
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
{ {
@@ -230,7 +230,7 @@ pub trait GLWEOps: GLWECiphertextToMut + Infos + SetMetaData {
fn normalize<A>(&mut self, module: &Module<FFT64>, a: &A, scratch: &mut Scratch) fn normalize<A>(&mut self, module: &Module<FFT64>, a: &A, scratch: &mut Scratch)
where where
A: GLWECiphertextToRef + Infos, A: GLWECiphertextToRef,
{ {
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
{ {