remove num.rs and fix mp parameter selector
Janmajaya Mall janmajayamall@protonmail.com
Tue, 11 Jun 2024 17:53:00 +0530
13 files changed,
17 insertions(+),
47 deletions(-)
M
examples/fheuint8.rs
→
examples/fheuint8.rs
@@ -11,7 +11,7 @@ &(fhe_a + fhe_b) * fhe_c
} 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()
M
src/backend/mod.rs
→
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;
M
src/backend/modulus_u64.rs
→
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<T> { q: u64,
M
src/backend/word_size.rs
→
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<T> { modulus: T,
M
src/bool/evaluator.rs
→
src/bool/evaluator.rs
@@ -1299,7 +1299,6 @@ use rand::{thread_rng, Rng};
use rand_distr::Uniform; use crate::{ - backend::{GetModulus, ModInit, ModularOpsU64, WordSizeModulus}, bool::{ self, CommonReferenceSeededMultiPartyServerKeyShare, PublicKey, SeededMultiPartyServerKey,
M
src/bool/mod.rs
→
src/bool/mod.rs
@@ -27,12 +27,12 @@
static MULTI_PARTY_CRS: OnceLock<MultiPartyCrs<[u8; 32]>> = 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))); } }
M
src/lib.rs
→
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;
M
src/ntt.rs
→
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},
D
src/num.rs
@@ -1,3 +0,0 @@
-use num_traits::{Num, PrimInt, WrappingShl, WrappingShr, Zero}; - -pub trait UnsignedInteger: Zero + Num {}
M
src/pbs.rs
→
src/pbs.rs
@@ -8,9 +8,7 @@ decomposer::Decomposer,
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 {
M
src/random.rs
→
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};@@ -15,11 +15,6 @@
pub trait NewWithSeed { type Seed; fn new_with_seed(seed: Self::Seed) -> Self; -} - -pub trait RandomElement<T> { - /// Sample Random element of type T - fn random(&mut self) -> T; } pub trait RandomElementInModulus<T, M> {@@ -150,15 +145,6 @@ )
.for_each(|(from, to)| { *to = from; }); - } -} - -impl<T> RandomElement<T> for DefaultSecureRng -where - T: PrimInt + SampleUniform, -{ - fn random(&mut self) -> T { - Uniform::new_inclusive(T::zero(), T::max_value()).sample(&mut self.rng) } }
M
src/shortint/mod.rs
→
src/shortint/mod.rs
@@ -316,7 +316,7 @@ };
#[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 @@ }
#[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;
M
src/utils.rs
→
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 @@ /// Finds prime that satisfy
/// - $prime \lt upper_bound$ /// - $\log{prime} = num_bits$ /// - `prime % modulo == 1` -pub fn generate_prime(num_bits: usize, modulo: u64, upper_bound: u64) -> Option<u64> { +pub(crate) fn generate_prime(num_bits: usize, modulo: u64, upper_bound: u64) -> Option<u64> { let leading_zeros = (64 - num_bits) as u32; let mut tentative_prime = upper_bound - 1;