diff --git a/examples/fheuint8.rs b/examples/fheuint8.rs index 85c7a1c..dae00ee 100644 --- a/examples/fheuint8.rs +++ b/examples/fheuint8.rs @@ -11,7 +11,7 @@ fn fhe_circuit(fhe_a: &FheUint8, fhe_b: &FheUint8, fhe_c: &FheUint8) -> FheUint8 } fn main() { - set_parameter_set(ParameterSelector::MultiPartyLessThan16); + set_parameter_set(ParameterSelector::MultiPartyLessThanOrEqualTo16); let no_of_parties = 2; let client_keys = (0..no_of_parties) .into_iter() diff --git a/src/backend/mod.rs b/src/backend/mod.rs index fc7a85f..03e3fdf 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -1,6 +1,6 @@ use num_traits::ToPrimitive; -use crate::{Matrix, Row, RowMut}; +use crate::Row; mod modulus_u64; mod power_of_2; @@ -8,7 +8,6 @@ mod word_size; pub use modulus_u64::ModularOpsU64; pub(crate) use power_of_2::ModulusPowerOf2; -pub use word_size::WordSizeModulus; pub trait Modulus { type Element; diff --git a/src/backend/modulus_u64.rs b/src/backend/modulus_u64.rs index f279c03..31bd28f 100644 --- a/src/backend/modulus_u64.rs +++ b/src/backend/modulus_u64.rs @@ -1,12 +1,10 @@ -use std::marker::PhantomData; - use itertools::izip; -use num_traits::{PrimInt, Signed, ToPrimitive, WrappingAdd, WrappingMul, WrappingSub, Zero}; +use num_traits::WrappingMul; use super::{ ArithmeticLazyOps, ArithmeticOps, GetModulus, ModInit, Modulus, ShoupMatrixFMA, VectorOps, }; -use crate::{utils::ShoupMul, Matrix, RowMut}; +use crate::RowMut; pub struct ModularOpsU64 { q: u64, diff --git a/src/backend/word_size.rs b/src/backend/word_size.rs index 0c2fbac..82f5b5a 100644 --- a/src/backend/word_size.rs +++ b/src/backend/word_size.rs @@ -1,10 +1,7 @@ use itertools::izip; -use num_traits::{PrimInt, Signed, ToPrimitive, WrappingAdd, WrappingMul, WrappingSub, Zero}; +use num_traits::{WrappingAdd, WrappingMul, WrappingSub, Zero}; -use super::{ - ArithmeticLazyOps, ArithmeticOps, GetModulus, ModInit, Modulus, ShoupMatrixFMA, VectorOps, -}; -use crate::{utils::ShoupMul, Matrix, RowMut}; +use super::{ArithmeticOps, GetModulus, ModInit, Modulus, VectorOps}; pub struct WordSizeModulus { modulus: T, diff --git a/src/bool/evaluator.rs b/src/bool/evaluator.rs index f5211d0..d68cd6b 100644 --- a/src/bool/evaluator.rs +++ b/src/bool/evaluator.rs @@ -1299,7 +1299,6 @@ mod tests { use rand_distr::Uniform; use crate::{ - backend::{GetModulus, ModInit, ModularOpsU64, WordSizeModulus}, bool::{ self, CommonReferenceSeededMultiPartyServerKeyShare, PublicKey, SeededMultiPartyServerKey, diff --git a/src/bool/mod.rs b/src/bool/mod.rs index f48ad21..9fb0318 100644 --- a/src/bool/mod.rs +++ b/src/bool/mod.rs @@ -27,12 +27,12 @@ static BOOL_SERVER_KEY: OnceLock>>> static MULTI_PARTY_CRS: OnceLock> = OnceLock::new(); pub enum ParameterSelector { - MultiPartyLessThan16, + MultiPartyLessThanOrEqualTo16, } pub fn set_parameter_set(select: ParameterSelector) { match select { - ParameterSelector::MultiPartyLessThan16 => { + ParameterSelector::MultiPartyLessThanOrEqualTo16 => { BOOL_EVALUATOR.with_borrow_mut(|v| *v = Some(BoolEvaluator::new(SMALL_MP_BOOL_PARAMS))); } } diff --git a/src/lib.rs b/src/lib.rs index a723e4d..a91d638 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,7 @@ use std::{iter::Once, sync::OnceLock}; use itertools::{izip, Itertools}; -use num::UnsignedInteger; use num_traits::{abs, Zero}; -use rand::CryptoRng; -use utils::TryConvertFrom1; mod backend; mod bool; @@ -13,7 +10,6 @@ mod lwe; mod multi_party; mod noise; mod ntt; -mod num; mod pbs; mod random; mod rgsw; diff --git a/src/ntt.rs b/src/ntt.rs index ff76aa3..c180800 100644 --- a/src/ntt.rs +++ b/src/ntt.rs @@ -1,6 +1,6 @@ use itertools::{izip, Itertools}; -use rand::{thread_rng, Rng, RngCore, SeedableRng}; -use rand_chacha::{rand_core::le, ChaCha8Rng}; +use rand::{Rng, RngCore, SeedableRng}; +use rand_chacha::ChaCha8Rng; use crate::{ backend::{ArithmeticOps, ModInit, ModularOpsU64, Modulus}, diff --git a/src/num.rs b/src/num.rs deleted file mode 100644 index 14522ea..0000000 --- a/src/num.rs +++ /dev/null @@ -1,3 +0,0 @@ -use num_traits::{Num, PrimInt, WrappingShl, WrappingShr, Zero}; - -pub trait UnsignedInteger: Zero + Num {} diff --git a/src/pbs.rs b/src/pbs.rs index c8bd43e..7daa68a 100644 --- a/src/pbs.rs +++ b/src/pbs.rs @@ -8,9 +8,7 @@ use crate::{ lwe::lwe_key_switch, ntt::Ntt, random::DefaultSecureRng, - rgsw::{ - galois_auto, galois_auto_shoup, rlwe_by_rgsw, rlwe_by_rgsw_shoup, IsTrivial, RlweCiphertext, - }, + rgsw::{galois_auto_shoup, rlwe_by_rgsw_shoup, IsTrivial, RlweCiphertext}, Matrix, MatrixEntity, MatrixMut, RowMut, }; pub(crate) trait PbsKey { diff --git a/src/random.rs b/src/random.rs index 88db76a..44cbaa0 100644 --- a/src/random.rs +++ b/src/random.rs @@ -2,7 +2,7 @@ use std::cell::RefCell; use itertools::izip; use num_traits::{PrimInt, Zero}; -use rand::{distributions::Uniform, thread_rng, CryptoRng, Rng, RngCore, SeedableRng}; +use rand::{distributions::Uniform, Rng, RngCore, SeedableRng}; use rand_chacha::ChaCha8Rng; use rand_distr::{uniform::SampleUniform, Distribution}; @@ -17,11 +17,6 @@ pub trait NewWithSeed { fn new_with_seed(seed: Self::Seed) -> Self; } -pub trait RandomElement { - /// Sample Random element of type T - fn random(&mut self) -> T; -} - pub trait RandomElementInModulus { /// Sample Random element of type T in range [0, modulus) fn random(&mut self, modulus: &M) -> T; @@ -153,15 +148,6 @@ where } } -impl RandomElement for DefaultSecureRng -where - T: PrimInt + SampleUniform, -{ - fn random(&mut self) -> T { - Uniform::new_inclusive(T::zero(), T::max_value()).sample(&mut self.rng) - } -} - impl RandomElementInModulus for DefaultSecureRng where T: Zero + SampleUniform, diff --git a/src/shortint/mod.rs b/src/shortint/mod.rs index e1f4f85..82a5205 100644 --- a/src/shortint/mod.rs +++ b/src/shortint/mod.rs @@ -316,7 +316,7 @@ mod tests { #[test] fn all_uint8_apis() { - set_parameter_set(crate::ParameterSelector::MultiPartyLessThan16); + set_parameter_set(crate::ParameterSelector::MultiPartyLessThanOrEqualTo16); let (ck, sk) = gen_keys(); sk.set_server_key(); @@ -464,7 +464,7 @@ mod tests { #[test] fn fheuint8_test_multi_party() { - set_parameter_set(crate::ParameterSelector::MultiPartyLessThan16); + set_parameter_set(crate::ParameterSelector::MultiPartyLessThanOrEqualTo16); set_mp_seed([0; 32]); let parties = 8; diff --git a/src/utils.rs b/src/utils.rs index f1c6832..d3e7bdb 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,11 +1,11 @@ use std::{fmt::Debug, usize, vec}; use itertools::{izip, Itertools}; -use num_traits::{FromPrimitive, PrimInt, Signed, Unsigned}; +use num_traits::{FromPrimitive, PrimInt, Signed}; use crate::{ backend::Modulus, - random::{RandomElement, RandomElementInModulus, RandomFill}, + random::{RandomElementInModulus, RandomFill}, Matrix, }; pub trait WithLocal { @@ -118,7 +118,7 @@ fn is_probably_prime(candidate: u64) -> bool { /// - $prime \lt upper_bound$ /// - $\log{prime} = num_bits$ /// - `prime % modulo == 1` -pub fn generate_prime(num_bits: usize, modulo: u64, upper_bound: u64) -> Option { +pub(crate) fn generate_prime(num_bits: usize, modulo: u64, upper_bound: u64) -> Option { let leading_zeros = (64 - num_bits) as u32; let mut tentative_prime = upper_bound - 1;