diff --git a/poulpy-schemes/benches/circuit_bootstrapping.rs b/poulpy-schemes/benches/circuit_bootstrapping.rs index 0d90062..f283a32 100644 --- a/poulpy-schemes/benches/circuit_bootstrapping.rs +++ b/poulpy-schemes/benches/circuit_bootstrapping.rs @@ -5,8 +5,8 @@ use poulpy_backend::{FFT64Avx, FFT64Ref, FFT64Spqlios}; use poulpy_core::{ GGSWNoise, GLWEDecrypt, GLWEEncryptSk, GLWEExternalProduct, LWEEncryptSk, ScratchTakeCore, layouts::{ - Dsize, GGSW, GGSWLayout, GGSWPreparedFactory, GLWEAutomorphismKeyLayout, GLWESecret, GLWESecretPreparedFactory, - GLWETensorKeyLayout, LWE, LWELayout, LWESecret, + Dsize, GGLWEToGGSWKeyLayout, GGSW, GGSWLayout, GGSWPreparedFactory, GLWEAutomorphismKeyLayout, GLWESecret, + GLWESecretPreparedFactory, LWE, LWELayout, LWESecret, }, }; use poulpy_hal::{ @@ -161,7 +161,7 @@ where dsize: Dsize(1), rank: 2_u32.into(), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: 1024_u32.into(), base2k: 13_u32.into(), k: 52_u32.into(), diff --git a/poulpy-schemes/examples/circuit_bootstrapping.rs b/poulpy-schemes/examples/circuit_bootstrapping.rs index a7c56bd..55d779f 100644 --- a/poulpy-schemes/examples/circuit_bootstrapping.rs +++ b/poulpy-schemes/examples/circuit_bootstrapping.rs @@ -1,7 +1,7 @@ use poulpy_core::{ GLWENormalize, layouts::{ - GGSW, GGSWLayout, GLWE, GLWEAutomorphismKeyLayout, GLWELayout, GLWEPlaintext, GLWESecret, GLWETensorKeyLayout, LWE, + GGLWEToGGSWKeyLayout, GGSW, GGSWLayout, GLWE, GLWEAutomorphismKeyLayout, GLWELayout, GLWEPlaintext, GLWESecret, LWE, LWEInfos, LWELayout, LWEPlaintext, LWESecret, prepared::{GGSWPrepared, GLWESecretPrepared}, }, @@ -94,7 +94,7 @@ fn main() { dsize: 1_u32.into(), rank: rank.into(), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: n_glwe.into(), base2k: base2k.into(), k: k_tsk.into(), diff --git a/poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs b/poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs index f636fb8..37b89ed 100644 --- a/poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs +++ b/poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs @@ -194,6 +194,17 @@ impl BDDKeyPrepared, BRA, BE> { } } +impl BDDKeyHelper for BDDKeyPrepared { + fn get_cbt_key( + &self, + ) -> ( + &CircuitBootstrappingKeyPrepared, + &GLWEToLWEKeyPrepared, + ) { + (&self.cbt, &self.ks) + } +} + pub trait BDDKeyHelper { fn get_cbt_key( &self, diff --git a/poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs b/poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs index 6a51a97..59fd529 100644 --- a/poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs +++ b/poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs @@ -38,8 +38,8 @@ pub use xor::*; use poulpy_core::{ ScratchTakeCore, layouts::{ - Base2K, Degree, Dnum, Dsize, GGSWLayout, GLWEAutomorphismKeyLayout, GLWELayout, GLWESecret, GLWESecretPrepared, - GLWESecretPreparedFactory, GLWETensorKeyLayout, GLWEToLWEKeyLayout, LWESecret, Rank, TorusPrecision, + Base2K, Degree, Dnum, Dsize, GGLWEToGGSWKeyLayout, GGSWLayout, GLWEAutomorphismKeyLayout, GLWELayout, GLWESecret, + GLWESecretPrepared, GLWESecretPreparedFactory, GLWEToLWEKeyLayout, LWESecret, Rank, TorusPrecision, }, }; @@ -167,7 +167,7 @@ pub(crate) static TEST_BDD_KEY_LAYOUT: BDDKeyLayout = BDDKeyLayout { dnum: Dnum(3), dsize: Dsize(1), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: Degree(TEST_N_GLWE), base2k: Base2K(TEST_BASE2K), k: TorusPrecision(52), diff --git a/poulpy-schemes/src/tfhe/circuit_bootstrapping/key.rs b/poulpy-schemes/src/tfhe/circuit_bootstrapping/key.rs index de57832..33da31e 100644 --- a/poulpy-schemes/src/tfhe/circuit_bootstrapping/key.rs +++ b/poulpy-schemes/src/tfhe/circuit_bootstrapping/key.rs @@ -1,8 +1,8 @@ use poulpy_core::{ Distribution, GGLWEToGGSWKeyEncryptSk, GLWEAutomorphismKeyEncryptSk, GetDistribution, ScratchTakeCore, layouts::{ - GGLWEInfos, GGLWEToGGSWKey, GGSWInfos, GLWEAutomorphismKey, GLWEAutomorphismKeyLayout, GLWEInfos, - GLWESecretPreparedFactory, GLWESecretToRef, GLWETensorKeyLayout, LWEInfos, LWESecretToRef, prepared::GLWESecretPrepared, + GGLWEInfos, GGLWEToGGSWKey, GGLWEToGGSWKeyLayout, GGSWInfos, GLWEAutomorphismKey, GLWEAutomorphismKeyLayout, GLWEInfos, + GLWESecretPreparedFactory, GLWESecretToRef, LWEInfos, LWESecretToRef, prepared::GLWESecretPrepared, }, trace_galois_elements, }; @@ -21,14 +21,14 @@ use crate::tfhe::blind_rotation::{ pub trait CircuitBootstrappingKeyInfos { fn brk_infos(&self) -> BlindRotationKeyLayout; fn atk_infos(&self) -> GLWEAutomorphismKeyLayout; - fn tsk_infos(&self) -> GLWETensorKeyLayout; + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout; } #[derive(Debug, Clone, Copy)] pub struct CircuitBootstrappingKeyLayout { pub layout_brk: BlindRotationKeyLayout, pub layout_atk: GLWEAutomorphismKeyLayout, - pub layout_tsk: GLWETensorKeyLayout, + pub layout_tsk: GGLWEToGGSWKeyLayout, } impl CircuitBootstrappingKeyInfos for CircuitBootstrappingKeyLayout { @@ -40,7 +40,7 @@ impl CircuitBootstrappingKeyInfos for CircuitBootstrappingKeyLayout { self.layout_brk } - fn tsk_infos(&self) -> GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { self.layout_tsk } } @@ -69,7 +69,7 @@ impl CircuitBootstrappingKey, BRA> { { let atk_infos: &GLWEAutomorphismKeyLayout = &infos.atk_infos(); let brk_infos: &BlindRotationKeyLayout = &infos.brk_infos(); - let trk_infos: &GLWETensorKeyLayout = &infos.tsk_infos(); + let trk_infos: &GGLWEToGGSWKeyLayout = &infos.tsk_infos(); let gal_els: Vec = trace_galois_elements(atk_infos.log_n(), 2 * atk_infos.n().as_usize() as i64); Self { @@ -133,7 +133,7 @@ where { let brk_infos: &BlindRotationKeyLayout = &res.brk_infos(); let atk_infos: &GLWEAutomorphismKeyLayout = &res.atk_infos(); - let tsk_infos: &GLWETensorKeyLayout = &res.tsk_infos(); + let tsk_infos: &GGLWEToGGSWKeyLayout = &res.tsk_infos(); assert_eq!(sk_lwe.n(), brk_infos.n_lwe()); assert_eq!(sk_glwe.n(), brk_infos.n_glwe()); @@ -187,8 +187,8 @@ impl CircuitBootstrappingKeyInfos for Circui } } - fn tsk_infos(&self) -> GLWETensorKeyLayout { - GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { + GGLWEToGGSWKeyLayout { n: self.tsk.n(), base2k: self.tsk.base2k(), k: self.tsk.k(), diff --git a/poulpy-schemes/src/tfhe/circuit_bootstrapping/key_prepared.rs b/poulpy-schemes/src/tfhe/circuit_bootstrapping/key_prepared.rs index aff3016..e5fca47 100644 --- a/poulpy-schemes/src/tfhe/circuit_bootstrapping/key_prepared.rs +++ b/poulpy-schemes/src/tfhe/circuit_bootstrapping/key_prepared.rs @@ -1,7 +1,7 @@ use poulpy_core::{ layouts::{ - GGLWEInfos, GGLWEToGGSWKeyPrepared, GGLWEToGGSWKeyPreparedFactory, GGSWInfos, GLWEAutomorphismKeyHelper, - GLWEAutomorphismKeyLayout, GLWEAutomorphismKeyPreparedFactory, GLWEInfos, GLWETensorKeyLayout, + GGLWEInfos, GGLWEToGGSWKeyLayout, GGLWEToGGSWKeyPrepared, GGLWEToGGSWKeyPreparedFactory, GGSWInfos, + GLWEAutomorphismKeyHelper, GLWEAutomorphismKeyLayout, GLWEAutomorphismKeyPreparedFactory, GLWEInfos, GLWETensorKeyPreparedFactory, LWEInfos, prepared::GLWEAutomorphismKeyPrepared, }, trace_galois_elements, @@ -145,8 +145,8 @@ impl CircuitBootstrappingKeyInfo } } - fn tsk_infos(&self) -> GLWETensorKeyLayout { - GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { + GGLWEToGGSWKeyLayout { n: self.tsk.n(), base2k: self.tsk.base2k(), k: self.tsk.k(), diff --git a/poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs b/poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs index 59223ea..a75d211 100644 --- a/poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs +++ b/poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs @@ -17,7 +17,7 @@ use crate::tfhe::{ use poulpy_core::{ GGSWNoise, GLWEDecrypt, GLWEEncryptSk, GLWEExternalProduct, LWEEncryptSk, ScratchTakeCore, layouts::{ - Dsize, GGSWLayout, GGSWPreparedFactory, GLWEAutomorphismKeyLayout, GLWESecretPreparedFactory, GLWETensorKeyLayout, + Dsize, GGLWEToGGSWKeyLayout, GGSWLayout, GGSWPreparedFactory, GLWEAutomorphismKeyLayout, GLWESecretPreparedFactory, LWELayout, }, }; @@ -90,7 +90,7 @@ where rank: rank.into(), dsize: Dsize(1), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: n_glwe.into(), base2k: base2k.into(), k: k_tsk.into(), @@ -271,7 +271,7 @@ where rank: rank.into(), dsize: Dsize(1), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: n_glwe.into(), base2k: base2k.into(), k: k_tsk.into(),