phantom-zone/src/bool/mod.rs
src/bool/mod.rsRaw
1pub(crate) mod evaluator;
2mod keys;
3mod mp_api;
4mod ni_mp_api;
5mod noise;
6pub(crate) mod parameters;
7
8pub(crate) use keys::PublicKey;
9
10#[cfg(feature = "non_interactive_mp")]
11pub use ni_mp_api::*;
12
13#[cfg(feature = "interactive_mp")]
14pub use mp_api::*;
15
16pub type ClientKey = keys::ClientKey<[u8; 32], u64>;
17
18pub enum ParameterSelector {
19 MultiPartyLessThanOrEqualTo16,
20 NonInteractiveMultiPartyLessThanOrEqualTo16,
21}
22
23mod common_mp_enc_dec {
24 use super::BoolEvaluator;
25 use crate::{utils::WithLocal, Matrix, MultiPartyDecryptor};
26
27 type Mat = Vec<Vec<u64>>;
28
29 impl<E> MultiPartyDecryptor<bool, <Mat as Matrix>::R> for super::keys::ClientKey<[u8; 32], E> {
30 type DecryptionShare = <Mat as Matrix>::MatElement;
31
32 fn gen_decryption_share(&self, c: &<Mat as Matrix>::R) -> Self::DecryptionShare {
33 BoolEvaluator::with_local(|e| e.multi_party_decryption_share(c, self))
34 }
35
36 fn aggregate_decryption_shares(
37 &self,
38 c: &<Mat as Matrix>::R,
39 shares: &[Self::DecryptionShare],
40 ) -> bool {
41 BoolEvaluator::with_local(|e| e.multi_party_decrypt(shares, c))
42 }
43 }
44}