arnaucube
arnaucube/poulpyPublic Self-hosted repository
added glwe ops on plaintext
Jean-Philippe Bossuat jeanphilippe.bossuat@gmail.com
Tue, 27 May 2025 23:40:17 +0200
commit

fa1a1fc49b50018b7df4cb7d3f153f4bff7e0551

parent

a295085724578780db3870773774c798adfe5f8b

1 files changed, 39 insertions(+), 2 deletions(-)

jump to
M core/src/glwe_plaintext.rs → core/src/glwe_plaintext.rs

@@ -1,6 +1,6 @@

-use backend::{Backend, Module, VecZnx, VecZnxAlloc}; +use backend::{Backend, Module, VecZnx, VecZnxAlloc, VecZnxToMut, VecZnxToRef}; -use crate::{elem::Infos, utils::derive_size}; +use crate::{elem::{Infos, SetMetaData}, glwe_ciphertext::{GLWECiphertext, GLWECiphertextToMut, GLWECiphertextToRef}, glwe_ops::GLWEOps, utils::derive_size}; pub struct GLWEPlaintext<C> { pub data: VecZnx<C>,

@@ -24,6 +24,16 @@ self.k

} } +impl<DataSelf: AsMut<[u8]> + AsRef<[u8]>> SetMetaData for GLWEPlaintext<DataSelf> { + fn set_k(&mut self, k: usize) { + self.k = k + } + + fn set_basek(&mut self, basek: usize) { + self.basek = basek + } +} + impl GLWEPlaintext<Vec<u8>> { pub fn alloc<B: Backend>(module: &Module<B>, basek: usize, k: usize) -> Self { Self {

@@ -33,3 +43,30 @@ k,

} } } + +impl<D: AsRef<[u8]>> GLWECiphertextToRef for GLWEPlaintext<D> { + fn to_ref(&self) -> GLWECiphertext<&[u8]> { + GLWECiphertext { + data: self.data.to_ref(), + basek: self.basek, + k: self.k, + } + } +} + +impl<D: AsMut<[u8]> + AsRef<[u8]>> GLWECiphertextToMut for GLWEPlaintext<D> { + fn to_mut(&mut self) -> GLWECiphertext<&mut [u8]> { + GLWECiphertext { + data: self.data.to_mut(), + basek: self.basek, + k: self.k, + } + } +} + +impl<D> GLWEOps for GLWEPlaintext<D> +where + D: AsRef<[u8]> + AsMut<[u8]>, + GLWEPlaintext<D>: GLWECiphertextToMut + Infos + SetMetaData, +{ +}