struct PartyId
A party in the MPC protocol
Source: lib.joule:15
struct PartyIdA party in the MPC protocol
Source: lib.joule:15
fn new(id: u32) -> SelfSource: lib.joule:20
fn id(&self) -> u32Source: lib.joule:24
struct ShareA share of a secret value
Source: lib.joule:34
fn value(&self) -> &FieldElementSource: lib.joule:41
fn party(&self) -> &PartyIdSource: lib.joule:45
fn index(&self) -> usizeSource: lib.joule:49
struct FieldElementField element for MPC computations
Source: lib.joule:55
const MODULUS: u128Prime modulus (Mersenne prime 2^127 - 1)
Source: lib.joule:61
fn from_u64(value: u64) -> SelfSource: lib.joule:63
fn from_u128(value: u128) -> SelfSource: lib.joule:67
fn value(&self) -> u128Source: lib.joule:71
fn add(&self, other: &FieldElement) -> FieldElementSource: lib.joule:75
fn sub(&self, other: &FieldElement) -> FieldElementSource: lib.joule:80
fn mul(&self, other: &FieldElement) -> FieldElementSource: lib.joule:89
fn inverse(&self) -> Option<FieldElement>Source: lib.joule:93
fn random() -> FieldElementSource: lib.joule:97
struct ShamirSchemeShamir (t, n) threshold secret sharing Any t parties can reconstruct, t-1 learn nothing
Source: lib.joule:108
fn new(threshold: usize, num_parties: usize) -> Result<Self, MpcError>Create a new Shamir scheme - `threshold`: minimum shares needed to reconstruct - `num_parties`: total number of shares to create
Source: lib.joule:119
fn threshold(&self) -> usizeGet the threshold
Source: lib.joule:129
fn num_parties(&self) -> usizeGet the number of parties
Source: lib.joule:134
fn share(&self, secret: u64) -> Vec<Share>Source: lib.joule:140
fn reconstruct(&self, shares: &[Share]) -> Result<u64, MpcError>Source: lib.joule:147
fn add_shares(a: &Share, b: &Share) -> Result<Share, MpcError>Add two shared values (locally, no communication)
Source: lib.joule:158
fn mul_scalar(share: &Share, scalar: u64) -> ShareMultiply a share by a public constant
Source: lib.joule:163
struct AdditiveSchemeAdditive (n-out-of-n) secret sharing All parties must participate
Source: lib.joule:174
fn new(num_parties: usize) -> SelfSource: lib.joule:179
fn share(&self, secret: u64) -> Vec<Share>Source: lib.joule:185
fn reconstruct(&self, shares: &[Share]) -> Result<u64, MpcError>Source: lib.joule:191
fn add_shares(a: &Share, b: &Share) -> Result<Share, MpcError>Add two additive shares
Source: lib.joule:202
fn sub_shares(a: &Share, b: &Share) -> Result<Share, MpcError>Subtract two additive shares
Source: lib.joule:207
enum GateTypeGate types for circuits
Source: lib.joule:217
struct GateA gate in a boolean circuit
Source: lib.joule:227
fn and(a: usize, b: usize, out: usize) -> SelfSource: lib.joule:234
fn or(a: usize, b: usize, out: usize) -> SelfSource: lib.joule:238
fn xor(a: usize, b: usize, out: usize) -> SelfSource: lib.joule:242
fn not(a: usize, out: usize) -> SelfSource: lib.joule:246
struct BooleanCircuitBoolean circuit for garbling
Source: lib.joule:252
fn new(num_inputs: usize, output_wires: Vec<usize>) -> SelfSource: lib.joule:259
fn add_gate(&mut self, gate: Gate)Source: lib.joule:267
fn evaluate(&self, inputs: &[bool]) -> Vec<bool>Evaluate on plaintext inputs
Source: lib.joule:272
struct GarbledCircuitGarbled circuit (encrypted boolean circuit)
Source: lib.joule:278
struct WireLabelWire label (128-bit secret)
Source: lib.joule:283
struct Garbler;Garbler: creates the garbled circuit
Source: lib.joule:288
fn garble(circuit: &BooleanCircuit) -> (GarbledCircuit, Vec<WireLabelPair>)Source: lib.joule:293
fn encode_inputs(inputs: &[bool], labels: &[WireLabelPair]) -> Vec<WireLabel>Get input labels for garbler's inputs
Source: lib.joule:298
struct WireLabelPairPair of wire labels (for 0 and 1)
Source: lib.joule:304
fn get(&self, bit: bool) -> &WireLabelSource: lib.joule:310
struct Evaluator;Evaluator: evaluates the garbled circuit
Source: lib.joule:316
fn evaluate(Source: lib.joule:321
struct OTSender1-out-of-2 Oblivious Transfer sender
Source: lib.joule:335
fn new() -> SelfSource: lib.joule:340
fn setup(&mut self, n: usize) -> Vec<[u8; 32]>Source: lib.joule:346
fn encrypt(Source: lib.joule:352
struct OTReceiver1-out-of-2 Oblivious Transfer receiver
Source: lib.joule:362
fn new() -> SelfSource: lib.joule:367
fn choose(&mut self, sender_keys: &[[u8; 32]], choices: &[bool]) -> Vec<[u8; 32]>Source: lib.joule:373
fn decrypt(Source: lib.joule:379
struct MpcContextMPC context for a party
Source: lib.joule:393
fn new(my_id: PartyId, num_parties: usize, threshold: usize) -> Result<Self, MpcError>Create an MPC context
Source: lib.joule:401
fn my_id(&self) -> &PartyIdSource: lib.joule:410
fn num_parties(&self) -> usizeSource: lib.joule:414
fn threshold(&self) -> usizeSource: lib.joule:418
struct SecretValueSecret-shared value in an MPC protocol
Source: lib.joule:424
fn from_share(share: Share, context: MpcContext) -> SelfCreate from a local share
Source: lib.joule:431
fn add(&self, other: &SecretValue) -> Result<SecretValue, MpcError>Add two secret values (local operation)
Source: lib.joule:436
fn mul_public(&self, scalar: u64) -> SecretValueMultiply by a public constant (local operation)
Source: lib.joule:442
struct NetworkNetwork connection for MPC protocol
Source: lib.joule:465
enum MpcErrorErrors from MPC operations
Source: lib.joule:503