Skip to content

Commit 923589f

Browse files
committed
fix circuit
1 parent 3aca30c commit 923589f

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

crates/components/key-exchange/src/circuit.rs

+25-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! This module provides the circuits used in the key exchange protocol.
22
3-
use mpz_circuits::{ops::add_mod, Circuit, CircuitBuilder};
3+
use mpz_circuits::{ops::add_mod, Circuit, CircuitBuilder, Feed, Node};
44
use std::sync::Arc;
55

66
/// Circuit for combining additive shares of the PMS, twice
@@ -19,19 +19,41 @@ use std::sync::Arc;
1919
/// 2. EQ: Equality check of PMS_0 and PMS_1
2020
pub(crate) fn build_pms_circuit() -> Arc<Circuit> {
2121
let mut builder = CircuitBuilder::new();
22+
2223
let share_a0 = (0..32 * 8).map(|_| builder.add_input()).collect::<Vec<_>>();
2324
let share_b0 = (0..32 * 8).map(|_| builder.add_input()).collect::<Vec<_>>();
2425
let share_a1 = (0..32 * 8).map(|_| builder.add_input()).collect::<Vec<_>>();
2526
let share_b1 = (0..32 * 8).map(|_| builder.add_input()).collect::<Vec<_>>();
2627

2728
let modulus = (0..32 * 8).map(|_| builder.add_input()).collect::<Vec<_>>();
2829

29-
let pms_0 = add_mod(&mut builder, &share_a0, &share_b0, &modulus);
30+
/// assumes input is provided as big endian
31+
fn to_little_endian(input: &[Node<Feed>]) -> Vec<Node<Feed>> {
32+
let mut be_lsb0_output = vec![];
33+
for node in input.chunks_exact(8).rev() {
34+
for &bit in node.iter() {
35+
be_lsb0_output.push(bit);
36+
}
37+
}
38+
be_lsb0_output
39+
}
40+
41+
let pms_0 = add_mod(
42+
&mut builder,
43+
&to_little_endian(&share_a0),
44+
&to_little_endian(&share_b0),
45+
&to_little_endian(&modulus),
46+
);
3047
for node in pms_0.iter() {
3148
builder.add_output(*node);
3249
}
3350

34-
let pms_1 = add_mod(&mut builder, &share_a1, &share_b1, &modulus);
51+
let pms_1 = add_mod(
52+
&mut builder,
53+
&to_little_endian(&share_a1),
54+
&to_little_endian(&share_b1),
55+
&to_little_endian(&modulus),
56+
);
3557
for node in pms_1.iter() {
3658
builder.add_output(*node);
3759
}

0 commit comments

Comments
 (0)