From fa1a1fc49b50018b7df4cb7d3f153f4bff7e0551 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bossuat Date: Tue, 27 May 2025 23:40:17 +0200 Subject: [PATCH] added glwe ops on plaintext --- core/src/glwe_plaintext.rs | 41 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/core/src/glwe_plaintext.rs b/core/src/glwe_plaintext.rs index dd4aa2e..82bcac7 100644 --- a/core/src/glwe_plaintext.rs +++ b/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 { pub data: VecZnx, @@ -24,6 +24,16 @@ impl Infos for GLWEPlaintext { } } +impl + AsRef<[u8]>> SetMetaData for GLWEPlaintext { + fn set_k(&mut self, k: usize) { + self.k = k + } + + fn set_basek(&mut self, basek: usize) { + self.basek = basek + } +} + impl GLWEPlaintext> { pub fn alloc(module: &Module, basek: usize, k: usize) -> Self { Self { @@ -33,3 +43,30 @@ impl GLWEPlaintext> { } } } + +impl> GLWECiphertextToRef for GLWEPlaintext { + fn to_ref(&self) -> GLWECiphertext<&[u8]> { + GLWECiphertext { + data: self.data.to_ref(), + basek: self.basek, + k: self.k, + } + } +} + +impl + AsRef<[u8]>> GLWECiphertextToMut for GLWEPlaintext { + fn to_mut(&mut self) -> GLWECiphertext<&mut [u8]> { + GLWECiphertext { + data: self.data.to_mut(), + basek: self.basek, + k: self.k, + } + } +} + +impl GLWEOps for GLWEPlaintext +where + D: AsRef<[u8]> + AsMut<[u8]>, + GLWEPlaintext: GLWECiphertextToMut + Infos + SetMetaData, +{ +}