Browse Source

add non-standard FHE bool apis

par-agg-key-shares
Janmajaya Mall 9 months ago
parent
commit
b3eb7e2109
3 changed files with 34 additions and 2 deletions
  1. +1
    -0
      Cargo.lock
  2. +1
    -0
      Cargo.toml
  3. +32
    -2
      src/bool/mod.rs

+ 1
- 0
Cargo.lock

@ -352,6 +352,7 @@ dependencies = [
"rand", "rand",
"rand_chacha", "rand_chacha",
"rand_distr", "rand_distr",
"rayon",
] ]
[[package]] [[package]]

+ 1
- 0
Cargo.toml

@ -18,6 +18,7 @@ num-bigint-dig = { version = "0.8.4", features = ["prime"] }
[dev-dependencies] [dev-dependencies]
criterion = "0.5.1" criterion = "0.5.1"
rayon = "1.10.0"
[features] [features]
interactive_mp = [] interactive_mp = []

+ 32
- 2
src/bool/mod.rs

@ -77,6 +77,7 @@ mod impl_bool_frontend {
/// Fhe Bool ciphertext /// Fhe Bool ciphertext
#[derive(Clone)] #[derive(Clone)]
pub struct FheBool<C> { pub struct FheBool<C> {
/// LWE bool ciphertext
pub(crate) data: C, pub(crate) data: C,
} }
@ -101,11 +102,11 @@ mod impl_bool_frontend {
c: &FheBool<C>, c: &FheBool<C>,
shares: &[Self::DecryptionShare], shares: &[Self::DecryptionShare],
) -> bool { ) -> bool {
self.aggregate_decryption_shares(&c.data, shares)
self.aggregate_decryption_shares(&c.data(), shares)
} }
fn gen_decryption_share(&self, c: &FheBool<C>) -> Self::DecryptionShare { fn gen_decryption_share(&self, c: &FheBool<C>) -> Self::DecryptionShare {
self.gen_decryption_share(&c.data)
self.gen_decryption_share(&c.data())
} }
} }
@ -192,6 +193,35 @@ mod impl_bool_frontend {
}) })
} }
} }
impl FheBool {
pub fn nand(&self, rhs: &Self) -> Self {
BoolEvaluator::with_local_mut(|e| {
let key = RuntimeServerKey::global();
FheBool {
data: e.nand(self.data(), rhs.data(), key),
}
})
}
pub fn xnor(&self, rhs: &Self) -> Self {
BoolEvaluator::with_local_mut(|e| {
let key = RuntimeServerKey::global();
FheBool {
data: e.xnor(self.data(), rhs.data(), key),
}
})
}
pub fn nor(&self, rhs: &Self) -> Self {
BoolEvaluator::with_local_mut(|e| {
let key = RuntimeServerKey::global();
FheBool {
data: e.nor(self.data(), rhs.data(), key),
}
})
}
}
} }
} }

Loading…
Cancel
Save