fix gglwe to ggsw key layout type
Pro7ech jeanphilippe.bossuat@gmail.com
Wed, 05 Nov 2025 22:21:26 +0100
7 files changed,
35 insertions(+),
24 deletions(-)
jump to
M
poulpy-schemes/benches/circuit_bootstrapping.rs
→
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 @@ dnum: 3_u32.into(),
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(),
M
poulpy-schemes/examples/circuit_bootstrapping.rs
→
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 @@ dnum: rows_trace.into(),
dsize: 1_u32.into(), rank: rank.into(), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: n_glwe.into(), base2k: base2k.into(), k: k_tsk.into(),
M
poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs
→
poulpy-schemes/src/tfhe/bdd_arithmetic/key.rs
@@ -194,6 +194,17 @@ module.alloc_bdd_key_from_infos(infos)
} } +impl<D: DataRef, BRA: BlindRotationAlgo, BE: Backend> BDDKeyHelper<D, BRA, BE> for BDDKeyPrepared<D, BRA, BE> { + fn get_cbt_key( + &self, + ) -> ( + &CircuitBootstrappingKeyPrepared<D, BRA, BE>, + &GLWEToLWEKeyPrepared<D, BE>, + ) { + (&self.cbt, &self.ks) + } +} + pub trait BDDKeyHelper<D: DataRef, BRA: BlindRotationAlgo, BE: Backend> { fn get_cbt_key( &self,
M
poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs
→
poulpy-schemes/src/tfhe/bdd_arithmetic/tests/test_suite/mod.rs
@@ -38,8 +38,8 @@
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 @@ rank: Rank(TEST_RANK),
dnum: Dnum(3), dsize: Dsize(1), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: Degree(TEST_N_GLWE), base2k: Base2K(TEST_BASE2K), k: TorusPrecision(52),
M
poulpy-schemes/src/tfhe/circuit_bootstrapping/key.rs
→
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 @@
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 @@ fn brk_infos(&self) -> BlindRotationKeyLayout {
self.layout_brk } - fn tsk_infos(&self) -> GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { self.layout_tsk } }@@ -69,7 +69,7 @@ BlindRotationKey<Vec<u8>, BRA>: BlindRotationKeyFactory<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<i64> = trace_galois_elements(atk_infos.log_n(), 2 * atk_infos.n().as_usize() as i64); Self {@@ -133,7 +133,7 @@ S1: GLWESecretToRef + GLWEInfos + GetDistribution,
{ 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 @@ rank: self.brk.rank(),
} } - fn tsk_infos(&self) -> GLWETensorKeyLayout { - GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { + GGLWEToGGSWKeyLayout { n: self.tsk.n(), base2k: self.tsk.base2k(), k: self.tsk.k(),
M
poulpy-schemes/src/tfhe/circuit_bootstrapping/key_prepared.rs
→
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 @@ rank: self.brk.rank(),
} } - fn tsk_infos(&self) -> GLWETensorKeyLayout { - GLWETensorKeyLayout { + fn tsk_infos(&self) -> GGLWEToGGSWKeyLayout { + GGLWEToGGSWKeyLayout { n: self.tsk.n(), base2k: self.tsk.base2k(), k: self.tsk.k(),
M
poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs
→
poulpy-schemes/src/tfhe/circuit_bootstrapping/tests/circuit_bootstrapping.rs
@@ -17,7 +17,7 @@
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 @@ dnum: rows_atk.into(),
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 @@ dnum: rows_atk.into(),
rank: rank.into(), dsize: Dsize(1), }, - layout_tsk: GLWETensorKeyLayout { + layout_tsk: GGLWEToGGSWKeyLayout { n: n_glwe.into(), base2k: base2k.into(), k: k_tsk.into(),