chore(shortint): remove compact pk t-uniform parameters set

Add new TUniform under classic/ that is not compact public key.
This commit is contained in:
David Testé
2024-06-14 17:53:23 +02:00
committed by David Testé
parent 833d52c1f1
commit 2bd9f7aab4
21 changed files with 645 additions and 580 deletions

View File

@@ -8,7 +8,7 @@ int main(void) {
// Note that simply changing parameters like this does not yield secure parameters
// Its only done for the example / tests
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
assert(params.encryption_key_choice == ShortintEncryptionKeyChoiceBig);
int status;

View File

@@ -20,7 +20,7 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut rng = thread_rng();
let params =
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
let config = tfhe::ConfigBuilder::with_custom_parameters(params, None);
let client_key = tfhe::ClientKey::generate(config.clone());

View File

@@ -456,7 +456,7 @@ test('hlapi_compact_ciphertext_list', (t) => {
});
test('hlapi_compact_ciphertext_list_with_proof', (t) => {
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64);
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64);
let config = TfheConfigBuilder.default()
.use_custom_parameters(block_params)
.build();

View File

@@ -235,34 +235,34 @@ expose_as_shortint_pbs_parameters!(
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
// CPK TUniform
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
// TUniform
PARAM_MESSAGE_1_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_KS_PBS_TUNIFORM_2M64,
// Aliases to remove eventually
PARAM_MESSAGE_1_CARRY_0,
PARAM_MESSAGE_1_CARRY_1,

View File

@@ -372,7 +372,7 @@ mod tests {
use super::*;
use crate::prelude::*;
#[cfg(feature = "zk-pok-experimental")]
use crate::shortint::parameters::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
#[cfg(feature = "zk-pok-experimental")]
use crate::zk::CompactPkeCrs;
use crate::{set_server_key, FheInt64, FheUint16, FheUint2, FheUint32};

View File

@@ -545,7 +545,7 @@ impl ProvenCompactCiphertextList {
mod tests {
use crate::integer::ciphertext::CompactCiphertextList;
use crate::integer::{ClientKey, CompactPublicKey, RadixCiphertext, ServerKey};
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
use rand::random;

View File

@@ -2,6 +2,7 @@ use crate::core_crypto::commons::generators::DeterministicSeeder;
use crate::core_crypto::commons::math::random::Seed;
use crate::core_crypto::prelude::ActivatedRandomGenerator;
use crate::shortint::parameters::classic::compact_pk::*;
use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::*;
use crate::shortint::parameters::*;
use std::panic::set_hook;
use wasm_bindgen::prelude::*;
@@ -288,34 +289,34 @@ expose_predefined_parameters! {
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
// CPK TUniform
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
// TUniform
PARAM_MESSAGE_1_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_6_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_1_CARRY_7_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_6_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_3_CARRY_5_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_5_CARRY_3_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_1_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_6_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_7_CARRY_1_KS_PBS_TUNIFORM_2M64,
// Aliases to remove eventually
PARAM_MESSAGE_1_CARRY_0,
PARAM_MESSAGE_1_CARRY_1,

View File

@@ -138,7 +138,7 @@ impl ProvenCompactCiphertextList {
#[cfg(test)]
mod tests {
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
use crate::shortint::{ClientKey, CompactPublicKey};
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
use rand::random;

View File

@@ -2,10 +2,8 @@ use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_6
ks_pbs, pbs_ks,
};
use crate::shortint::ClassicPBSParameters;
pub use tuniform::p_fail_2_minus_64::ks_pbs::*;
pub mod gaussian;
pub mod tuniform;
pub const ALL_PARAMETER_VEC_COMPACT_PK: [ClassicPBSParameters; 32] = [
PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS,

View File

@@ -1,2 +1,3 @@
pub mod compact_pk;
pub mod p_fail_2_minus_64;
pub mod gaussian;
pub mod tuniform;

View File

@@ -0,0 +1 @@
pub mod p_fail_2_minus_64;

View File

@@ -1,79 +1,80 @@
// p-fail = 2^-67.379, algorithmic cost ~ 74, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
// security = 132 bits, p-fail = 2^-64.301, algorithmic cost ~ 78, 2-norm = 3
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
pbs_base_log: DecompositionBaseLog(22),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
pbs_base_log: DecompositionBaseLog(25),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(7),
ks_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
max_noise_level: MaxNoiseLevel::new(3),
log2_p_fail: -67.379,
log2_p_fail: -64.301,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-66.873, algorithmic cost ~ 126, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
// security = 132 bits, p-fail = 2^-66.624, algorithmic cost ~ 134, 2-norm = 5
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(1024),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(5),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(3),
ks_level: DecompositionLevelCount(6),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -66.873,
log2_p_fail: -66.624,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-97.6, algorithmic cost ~ 3355, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
// security = 132 bits, p-fail = 2^-64.112, algorithmic cost ~ 3355, 2-norm = 9
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(16384),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(18),
pbs_base_log: DecompositionBaseLog(19),
pbs_level: DecompositionLevelCount(2),
ks_base_log: DecompositionBaseLog(21),
ks_base_log: DecompositionBaseLog(23),
ks_level: DecompositionLevelCount(1),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
max_noise_level: MaxNoiseLevel::new(9),
log2_p_fail: -97.6,
log2_p_fail: -64.112,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
// p-fail = 2^-84.86, algorithmic cost ~ 20133, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
// security = 132 bits, p-fail = 2^-73.197, algorithmic cost ~ 20401, 2-norm = 17
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(2048),
glwe_dimension: GlweDimension(1),
polynomial_size: PolynomialSize(65536),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(12),
pbs_base_log: DecompositionBaseLog(13),
pbs_level: DecompositionLevelCount(3),
ks_base_log: DecompositionBaseLog(24),
ks_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(12),
ks_level: DecompositionLevelCount(2),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
max_noise_level: MaxNoiseLevel::new(17),
log2_p_fail: -84.86,
log2_p_fail: -73.197,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Small,
};
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};

View File

@@ -25,12 +25,17 @@ pub mod multi_bit;
pub mod parameters_wopbs;
pub mod parameters_wopbs_message_carry;
pub mod parameters_wopbs_only;
#[cfg(test)]
pub mod test_parameters;
pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel};
pub use super::PBSOrder;
pub use crate::core_crypto::commons::parameters::EncryptionKeyChoice;
pub use crate::shortint::parameters::classic::compact_pk::*;
use crate::shortint::parameters::classic::p_fail_2_minus_64::{ks_pbs, pbs_ks};
pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::ks_pbs::*;
pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::pbs_ks::*;
pub use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::*;
pub use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::pbs_ks::*;
pub use compact_public_key_only::CompactCiphertextListExpansionKind;
#[cfg(tarpaulin)]
pub use coverage_parameters::*;
@@ -698,85 +703,85 @@ pub fn get_parameters_from_message_and_carry(
// Aliases, to be deprecated in subsequent versions once we e.g. have the "parameter builder"
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS: ClassicPBSParameters =
ks_pbs::PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64;
PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64;
PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64;
PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS: ClassicPBSParameters =
pbs_ks::PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64;
PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64;
pub const PARAM_MESSAGE_1_CARRY_0: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_0_KS_PBS;
pub const PARAM_MESSAGE_1_CARRY_1: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_1_KS_PBS;

View File

@@ -0,0 +1,27 @@
//! #Warning test-only
//!
//! This module provides the structure containing the cryptographic parameters only intended to be
//! used to test some operations.
//! These parameters are *NOT guaranteed to be safe*.
use crate::core_crypto::prelude::*;
use crate::shortint::ciphertext::MaxNoiseLevel;
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters =
ClassicPBSParameters {
lwe_dimension: LweDimension(888),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(2048),
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
pbs_base_log: DecompositionBaseLog(23),
pbs_level: DecompositionLevelCount(1),
ks_base_log: DecompositionBaseLog(4),
ks_level: DecompositionLevelCount(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
max_noise_level: MaxNoiseLevel::new(5),
log2_p_fail: -64.105,
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};

View File

@@ -17,6 +17,7 @@ import init, {
CompactCiphertextList,
ProvenCompactCiphertextList,
Shortint,
ShortintEncryptionKeyChoice,
} from "./pkg/tfhe.js";
const U32_MAX = 4294967295;
@@ -239,8 +240,22 @@ async function compressedCompactPublicKeyTest256BitOnConfig(config) {
}
async function compactPublicKeyZeroKnowledge() {
let block_params = new ShortintParameters(
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
let block_params = Shortint.new_parameters(
888,
2,
2048,
Shortint.try_new_t_uniform(45),
Shortint.try_new_t_uniform(3),
23,
1,
4,
4,
4,
4,
5,
-64.105,
64,
ShortintEncryptionKeyChoice.Big,
);
let config = TfheConfigBuilder.default()
@@ -491,8 +506,23 @@ async function compressedServerKeyBenchMessage2Carry2() {
}
async function compactPublicKeyZeroKnowledgeBench() {
let block_params = new ShortintParameters(
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
// This parameters set reproduce PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64
let block_params = Shortint.new_parameters(
888,
2,
2048,
Shortint.try_new_t_uniform(45),
Shortint.try_new_t_uniform(3),
23,
1,
4,
4,
4,
4,
5,
-64.105,
64,
ShortintEncryptionKeyChoice.Big,
);
let config = TfheConfigBuilder.default()