Remove unnecessary mut in PodSigner trait (#340)
The PodSigner trait was taking `&mut self` in the `sign` method, but the signer doesn't need mutation in the Shcnorr implementation. Remove the `mut`. Previously the PodProver trait was also taking `&mut self` in the `prove` method, and we had many tests creating a `mut Prover/mut MockProver`. Remove all those `mut`. Breaking change: `PodSigner` trait method `sign` replaces `&mut self` by `&self`
This commit is contained in:
parent
b5e0d97cb6
commit
63a716ebd7
11 changed files with 136 additions and 146 deletions
|
|
@ -46,14 +46,14 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let game_sk = SecretKey::new_rand();
|
let game_sk = SecretKey::new_rand();
|
||||||
let game_pk = game_sk.public_key();
|
let game_pk = game_sk.public_key();
|
||||||
|
|
||||||
let mut game_signer = Signer(game_sk);
|
let game_signer = Signer(game_sk);
|
||||||
|
|
||||||
// Build 2 signed pods where the game assigns points to a player that has completed a level.
|
// Build 2 signed pods where the game assigns points to a player that has completed a level.
|
||||||
let mut builder = SignedPodBuilder::new(¶ms);
|
let mut builder = SignedPodBuilder::new(¶ms);
|
||||||
builder.insert("player", "Alice");
|
builder.insert("player", "Alice");
|
||||||
builder.insert("level", 1);
|
builder.insert("level", 1);
|
||||||
builder.insert("points", 3512);
|
builder.insert("points", 3512);
|
||||||
let pod_points_lvl_1 = builder.sign(&mut game_signer)?;
|
let pod_points_lvl_1 = builder.sign(&game_signer)?;
|
||||||
pod_points_lvl_1.verify()?;
|
pod_points_lvl_1.verify()?;
|
||||||
println!("# pod_points_lvl_1:\n{}", pod_points_lvl_1);
|
println!("# pod_points_lvl_1:\n{}", pod_points_lvl_1);
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
builder.insert("player", "Alice");
|
builder.insert("player", "Alice");
|
||||||
builder.insert("level", 2);
|
builder.insert("level", 2);
|
||||||
builder.insert("points", 5771);
|
builder.insert("points", 5771);
|
||||||
let pod_points_lvl_2 = builder.sign(&mut game_signer)?;
|
let pod_points_lvl_2 = builder.sign(&game_signer)?;
|
||||||
pod_points_lvl_2.verify()?;
|
pod_points_lvl_2.verify()?;
|
||||||
println!("# pod_points_lvl_2:\n{}", pod_points_lvl_2);
|
println!("# pod_points_lvl_2:\n{}", pod_points_lvl_2);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let pk = sk.public_key();
|
let pk = sk.public_key();
|
||||||
println!("Public key: {}\n", pk);
|
println!("Public key: {}\n", pk);
|
||||||
|
|
||||||
let mut signer = Signer(sk);
|
let signer = Signer(sk);
|
||||||
|
|
||||||
// Build the signed pod
|
// Build the signed pod
|
||||||
let mut builder = SignedPodBuilder::new(¶ms);
|
let mut builder = SignedPodBuilder::new(¶ms);
|
||||||
|
|
@ -35,7 +35,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Sign the pod and verify it
|
// Sign the pod and verify it
|
||||||
let pod = builder.sign(&mut signer)?;
|
let pod = builder.sign(&signer)?;
|
||||||
pod.verify()?;
|
pod.verify()?;
|
||||||
|
|
||||||
println!("{}", pod);
|
println!("{}", pod);
|
||||||
|
|
|
||||||
|
|
@ -219,8 +219,8 @@ pub mod tests {
|
||||||
pod.insert("dateOfBirth", 1169909384);
|
pod.insert("dateOfBirth", 1169909384);
|
||||||
pod.insert("socialSecurityNumber", "G2121210");
|
pod.insert("socialSecurityNumber", "G2121210");
|
||||||
let sk = SecretKey::new_rand();
|
let sk = SecretKey::new_rand();
|
||||||
let mut signer = Signer(sk);
|
let signer = Signer(sk);
|
||||||
let pod = pod.sign(&mut signer).unwrap();
|
let pod = pod.sign(&signer).unwrap();
|
||||||
let signed_pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
let signed_pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
||||||
|
|
||||||
// use the pod in the circuit
|
// use the pod in the circuit
|
||||||
|
|
|
||||||
|
|
@ -739,12 +739,12 @@ pub mod tests {
|
||||||
|
|
||||||
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
||||||
zu_kyc_sign_pod_builders(¶ms);
|
zu_kyc_sign_pod_builders(¶ms);
|
||||||
let mut signer = Signer(SecretKey(BigUint::one()));
|
let signer = Signer(SecretKey(BigUint::one()));
|
||||||
let gov_id_pod = gov_id_builder.sign(&mut signer)?;
|
let gov_id_pod = gov_id_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(2u64.into()));
|
let signer = Signer(SecretKey(2u64.into()));
|
||||||
let pay_stub_pod = pay_stub_builder.sign(&mut signer)?;
|
let pay_stub_pod = pay_stub_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(3u64.into()));
|
let signer = Signer(SecretKey(3u64.into()));
|
||||||
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
|
let sanction_list_pod = sanction_list_builder.sign(&signer)?;
|
||||||
let kyc_builder = zu_kyc_pod_builder(
|
let kyc_builder = zu_kyc_pod_builder(
|
||||||
¶ms,
|
¶ms,
|
||||||
&vd_set,
|
&vd_set,
|
||||||
|
|
@ -753,8 +753,8 @@ pub mod tests {
|
||||||
&sanction_list_pod,
|
&sanction_list_pod,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms)?;
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms)?;
|
||||||
crate::measure_gates_print!();
|
crate::measure_gates_print!();
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||||
|
|
||||||
|
|
@ -778,8 +778,8 @@ pub mod tests {
|
||||||
gov_id_builder.insert("idNumber", "4242424242");
|
gov_id_builder.insert("idNumber", "4242424242");
|
||||||
gov_id_builder.insert("dateOfBirth", 1169909384);
|
gov_id_builder.insert("dateOfBirth", 1169909384);
|
||||||
gov_id_builder.insert("socialSecurityNumber", "G2121210");
|
gov_id_builder.insert("socialSecurityNumber", "G2121210");
|
||||||
let mut signer = Signer(SecretKey(42u64.into()));
|
let signer = Signer(SecretKey(42u64.into()));
|
||||||
let gov_id = gov_id_builder.sign(&mut signer).unwrap();
|
let gov_id = gov_id_builder.sign(&signer).unwrap();
|
||||||
let now_minus_18y: i64 = 1169909388;
|
let now_minus_18y: i64 = 1169909388;
|
||||||
let mut kyc_builder = frontend::MainPodBuilder::new(¶ms, &vd_set);
|
let mut kyc_builder = frontend::MainPodBuilder::new(¶ms, &vd_set);
|
||||||
kyc_builder.add_signed_pod(&gov_id);
|
kyc_builder.add_signed_pod(&gov_id);
|
||||||
|
|
@ -791,8 +791,8 @@ pub mod tests {
|
||||||
println!();
|
println!();
|
||||||
|
|
||||||
// Mock
|
// Mock
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms).unwrap();
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms).unwrap();
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>)
|
let pod = (kyc_pod.pod as Box<dyn Any>)
|
||||||
.downcast::<MockMainPod>()
|
.downcast::<MockMainPod>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
@ -800,8 +800,8 @@ pub mod tests {
|
||||||
println!("{:#}", pod);
|
println!("{:#}", pod);
|
||||||
|
|
||||||
// Real
|
// Real
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms).unwrap();
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms).unwrap();
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||||
pod.verify().unwrap()
|
pod.verify().unwrap()
|
||||||
}
|
}
|
||||||
|
|
@ -832,8 +832,8 @@ pub mod tests {
|
||||||
let pod_builder = frontend::MainPodBuilder::new(¶ms, &vd_set);
|
let pod_builder = frontend::MainPodBuilder::new(¶ms, &vd_set);
|
||||||
|
|
||||||
// Mock
|
// Mock
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let kyc_pod = pod_builder.prove(&mut prover, ¶ms).unwrap();
|
let kyc_pod = pod_builder.prove(&prover, ¶ms).unwrap();
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>)
|
let pod = (kyc_pod.pod as Box<dyn Any>)
|
||||||
.downcast::<MockMainPod>()
|
.downcast::<MockMainPod>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
@ -841,8 +841,8 @@ pub mod tests {
|
||||||
println!("{:#}", pod);
|
println!("{:#}", pod);
|
||||||
|
|
||||||
// Real
|
// Real
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let kyc_pod = pod_builder.prove(&mut prover, ¶ms).unwrap();
|
let kyc_pod = pod_builder.prove(&prover, ¶ms).unwrap();
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||||
pod.verify().unwrap()
|
pod.verify().unwrap()
|
||||||
}
|
}
|
||||||
|
|
@ -853,27 +853,23 @@ pub mod tests {
|
||||||
println!("{:#?}", params);
|
println!("{:#?}", params);
|
||||||
let vd_set = &*DEFAULT_VD_SET;
|
let vd_set = &*DEFAULT_VD_SET;
|
||||||
|
|
||||||
let mut alice = Signer(SecretKey(1u32.into()));
|
let alice = Signer(SecretKey(1u32.into()));
|
||||||
let mut bob = Signer(SecretKey(2u32.into()));
|
let bob = Signer(SecretKey(2u32.into()));
|
||||||
let charlie = Signer(SecretKey(3u32.into()));
|
let charlie = Signer(SecretKey(3u32.into()));
|
||||||
|
|
||||||
// Alice attests that she is ETH friends with Bob and Bob
|
// Alice attests that she is ETH friends with Bob and Bob
|
||||||
// attests that he is ETH friends with Charlie.
|
// attests that he is ETH friends with Charlie.
|
||||||
let alice_attestation =
|
let alice_attestation = attest_eth_friend(¶ms, &alice, Value::from(bob.public_key()));
|
||||||
attest_eth_friend(¶ms, &mut alice, Value::from(bob.public_key()));
|
let bob_attestation = attest_eth_friend(¶ms, &bob, Value::from(charlie.public_key()));
|
||||||
let bob_attestation =
|
|
||||||
attest_eth_friend(¶ms, &mut bob, Value::from(charlie.public_key()));
|
|
||||||
|
|
||||||
let helper = EthDosHelper::new(¶ms, vd_set, false, Value::from(alice.public_key()))?;
|
let helper = EthDosHelper::new(¶ms, vd_set, false, Value::from(alice.public_key()))?;
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let dist_1 = helper
|
let dist_1 = helper.dist_1(&alice_attestation)?.prove(&prover, ¶ms)?;
|
||||||
.dist_1(&alice_attestation)?
|
|
||||||
.prove(&mut prover, ¶ms)?;
|
|
||||||
crate::measure_gates_print!();
|
crate::measure_gates_print!();
|
||||||
dist_1.pod.verify()?;
|
dist_1.pod.verify()?;
|
||||||
let dist_2 = helper
|
let dist_2 = helper
|
||||||
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
||||||
.prove(&mut prover, ¶ms)?;
|
.prove(&prover, ¶ms)?;
|
||||||
Ok(dist_2.pod.verify()?)
|
Ok(dist_2.pod.verify()?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -920,12 +916,12 @@ pub mod tests {
|
||||||
|
|
||||||
let _st3 = pod_builder.priv_op(op!(custom, cpb_and.clone(), st0, st2))?;
|
let _st3 = pod_builder.priv_op(op!(custom, cpb_and.clone(), st0, st2))?;
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let pod = pod_builder.prove(&mut prover, ¶ms)?;
|
let pod = pod_builder.prove(&prover, ¶ms)?;
|
||||||
assert!(pod.pod.verify().is_ok());
|
assert!(pod.pod.verify().is_ok());
|
||||||
|
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let pod = pod_builder.prove(&mut prover, ¶ms)?;
|
let pod = pod_builder.prove(&prover, ¶ms)?;
|
||||||
crate::measure_gates_print!();
|
crate::measure_gates_print!();
|
||||||
|
|
||||||
let pod = (pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
let pod = (pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||||
|
|
@ -948,8 +944,8 @@ pub mod tests {
|
||||||
|
|
||||||
builder.pub_op(op!(set_contains, st, 1))?;
|
builder.pub_op(op!(set_contains, st, 1))?;
|
||||||
|
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let proof = builder.prove(&mut prover, ¶ms).unwrap();
|
let proof = builder.prove(&prover, ¶ms).unwrap();
|
||||||
let pod = (proof.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
let pod = (proof.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||||
Ok(pod.verify()?)
|
Ok(pod.verify()?)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -441,12 +441,12 @@ pub mod tests {
|
||||||
let vd_set = &*MOCK_VD_SET;
|
let vd_set = &*MOCK_VD_SET;
|
||||||
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
||||||
zu_kyc_sign_pod_builders(¶ms);
|
zu_kyc_sign_pod_builders(¶ms);
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let gov_id_pod = gov_id_builder.sign(&mut signer)?;
|
let gov_id_pod = gov_id_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(2u32.into()));
|
let signer = Signer(SecretKey(2u32.into()));
|
||||||
let pay_stub_pod = pay_stub_builder.sign(&mut signer)?;
|
let pay_stub_pod = pay_stub_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(3u32.into()));
|
let signer = Signer(SecretKey(3u32.into()));
|
||||||
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
|
let sanction_list_pod = sanction_list_builder.sign(&signer)?;
|
||||||
let kyc_builder = zu_kyc_pod_builder(
|
let kyc_builder = zu_kyc_pod_builder(
|
||||||
¶ms,
|
¶ms,
|
||||||
&vd_set,
|
&vd_set,
|
||||||
|
|
@ -455,8 +455,8 @@ pub mod tests {
|
||||||
&sanction_list_pod,
|
&sanction_list_pod,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms)?;
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms)?;
|
||||||
let pod = (kyc_pod.pod as Box<dyn Any>)
|
let pod = (kyc_pod.pod as Box<dyn Any>)
|
||||||
.downcast::<MockMainPod>()
|
.downcast::<MockMainPod>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
@ -471,8 +471,8 @@ pub mod tests {
|
||||||
fn test_mock_main_great_boy() -> frontend::Result<()> {
|
fn test_mock_main_great_boy() -> frontend::Result<()> {
|
||||||
let (params, great_boy_builder) = great_boy_pod_full_flow()?;
|
let (params, great_boy_builder) = great_boy_pod_full_flow()?;
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let great_boy_pod = great_boy_builder.prove(&mut prover, ¶ms)?;
|
let great_boy_pod = great_boy_builder.prove(&prover, ¶ms)?;
|
||||||
let pod = (great_boy_pod.pod as Box<dyn Any>)
|
let pod = (great_boy_pod.pod as Box<dyn Any>)
|
||||||
.downcast::<MockMainPod>()
|
.downcast::<MockMainPod>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
@ -488,8 +488,8 @@ pub mod tests {
|
||||||
fn test_mock_main_tickets() -> frontend::Result<()> {
|
fn test_mock_main_tickets() -> frontend::Result<()> {
|
||||||
let params = middleware::Params::default();
|
let params = middleware::Params::default();
|
||||||
let tickets_builder = tickets_pod_full_flow()?;
|
let tickets_builder = tickets_pod_full_flow()?;
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let proof_pod = tickets_builder.prove(&mut prover, ¶ms)?;
|
let proof_pod = tickets_builder.prove(&prover, ¶ms)?;
|
||||||
let pod = (proof_pod.pod as Box<dyn Any>)
|
let pod = (proof_pod.pod as Box<dyn Any>)
|
||||||
.downcast::<MockMainPod>()
|
.downcast::<MockMainPod>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ pub struct Signer(pub SecretKey);
|
||||||
|
|
||||||
impl Signer {
|
impl Signer {
|
||||||
fn sign_with_nonce(
|
fn sign_with_nonce(
|
||||||
&mut self,
|
&self,
|
||||||
params: &Params,
|
params: &Params,
|
||||||
nonce: BigUint,
|
nonce: BigUint,
|
||||||
kvs: &HashMap<Key, Value>,
|
kvs: &HashMap<Key, Value>,
|
||||||
|
|
@ -48,7 +48,7 @@ impl Signer {
|
||||||
dict,
|
dict,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
fn _sign(&mut self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<SignedPod> {
|
fn _sign(&self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<SignedPod> {
|
||||||
let nonce = OsRng.gen_biguint_below(&GROUP_ORDER);
|
let nonce = OsRng.gen_biguint_below(&GROUP_ORDER);
|
||||||
self.sign_with_nonce(params, nonce, kvs)
|
self.sign_with_nonce(params, nonce, kvs)
|
||||||
}
|
}
|
||||||
|
|
@ -59,7 +59,7 @@ impl Signer {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PodSigner for Signer {
|
impl PodSigner for Signer {
|
||||||
fn sign(&mut self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<Box<dyn Pod>> {
|
fn sign(&self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<Box<dyn Pod>> {
|
||||||
Ok(self._sign(params, kvs).map(Box::new)?)
|
Ok(self._sign(params, kvs).map(Box::new)?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -200,8 +200,8 @@ pub mod tests {
|
||||||
pod.insert("socialSecurityNumber", "G2121210");
|
pod.insert("socialSecurityNumber", "G2121210");
|
||||||
|
|
||||||
let sk = SecretKey(123u64.into());
|
let sk = SecretKey(123u64.into());
|
||||||
let mut signer = Signer(sk);
|
let signer = Signer(sk);
|
||||||
let pod = pod.sign(&mut signer).unwrap();
|
let pod = pod.sign(&signer).unwrap();
|
||||||
let pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
let pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
||||||
|
|
||||||
pod.verify()?;
|
pod.verify()?;
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ pub fn zu_kyc_pod_builder(
|
||||||
|
|
||||||
// ETHDoS
|
// ETHDoS
|
||||||
|
|
||||||
pub fn attest_eth_friend(params: &Params, src: &mut impl PodSigner, dst: Value) -> SignedPod {
|
pub fn attest_eth_friend(params: &Params, src: &impl PodSigner, dst: Value) -> SignedPod {
|
||||||
let mut attestation = SignedPodBuilder::new(params);
|
let mut attestation = SignedPodBuilder::new(params);
|
||||||
attestation.insert("attestation", dst);
|
attestation.insert("attestation", dst);
|
||||||
attestation.sign(src).unwrap()
|
attestation.sign(src).unwrap()
|
||||||
|
|
@ -334,13 +334,13 @@ pub fn great_boy_pod_full_flow() -> Result<(Params, MainPodBuilder)> {
|
||||||
};
|
};
|
||||||
let vd_set = &*MOCK_VD_SET;
|
let vd_set = &*MOCK_VD_SET;
|
||||||
|
|
||||||
let mut giggles_signer = Signer(SecretKey(1u32.into()));
|
let giggles_signer = Signer(SecretKey(1u32.into()));
|
||||||
let mut macrosoft_signer = Signer(SecretKey(2u32.into()));
|
let macrosoft_signer = Signer(SecretKey(2u32.into()));
|
||||||
let mut faebook_signer = Signer(SecretKey(3u32.into()));
|
let faebook_signer = Signer(SecretKey(3u32.into()));
|
||||||
let good_boy_issuers =
|
let good_boy_issuers =
|
||||||
[&giggles_signer, ¯osoft_signer, &faebook_signer].map(|s| s.0.public_key());
|
[&giggles_signer, ¯osoft_signer, &faebook_signer].map(|s| s.0.public_key());
|
||||||
let mut bob_signer = Signer(SecretKey(11u32.into()));
|
let bob_signer = Signer(SecretKey(11u32.into()));
|
||||||
let mut charlie_signer = Signer(SecretKey(12u32.into()));
|
let charlie_signer = Signer(SecretKey(12u32.into()));
|
||||||
let alice_signer = Signer(SecretKey(13u32.into()));
|
let alice_signer = Signer(SecretKey(13u32.into()));
|
||||||
let bob = bob_signer.public_key();
|
let bob = bob_signer.public_key();
|
||||||
let charlie = charlie_signer.public_key();
|
let charlie = charlie_signer.public_key();
|
||||||
|
|
@ -351,23 +351,23 @@ pub fn great_boy_pod_full_flow() -> Result<(Params, MainPodBuilder)> {
|
||||||
let mut bob_good_boys = Vec::new();
|
let mut bob_good_boys = Vec::new();
|
||||||
|
|
||||||
let good_boy = good_boy_sign_pod_builder(¶ms, &bob, 36);
|
let good_boy = good_boy_sign_pod_builder(¶ms, &bob, 36);
|
||||||
bob_good_boys.push(good_boy.sign(&mut giggles_signer).unwrap());
|
bob_good_boys.push(good_boy.sign(&giggles_signer).unwrap());
|
||||||
bob_good_boys.push(good_boy.sign(&mut macrosoft_signer).unwrap());
|
bob_good_boys.push(good_boy.sign(¯osoft_signer).unwrap());
|
||||||
|
|
||||||
// Charlie receives two good_boy pods from Macrosoft and Faebook
|
// Charlie receives two good_boy pods from Macrosoft and Faebook
|
||||||
|
|
||||||
let mut charlie_good_boys = Vec::new();
|
let mut charlie_good_boys = Vec::new();
|
||||||
|
|
||||||
let good_boy = good_boy_sign_pod_builder(¶ms, &charlie, 27);
|
let good_boy = good_boy_sign_pod_builder(¶ms, &charlie, 27);
|
||||||
charlie_good_boys.push(good_boy.sign(&mut macrosoft_signer).unwrap());
|
charlie_good_boys.push(good_boy.sign(¯osoft_signer).unwrap());
|
||||||
charlie_good_boys.push(good_boy.sign(&mut faebook_signer).unwrap());
|
charlie_good_boys.push(good_boy.sign(&faebook_signer).unwrap());
|
||||||
|
|
||||||
// Bob and Charlie send Alice a Friend POD
|
// Bob and Charlie send Alice a Friend POD
|
||||||
|
|
||||||
let mut alice_friend_pods = Vec::new();
|
let mut alice_friend_pods = Vec::new();
|
||||||
let friend = friend_sign_pod_builder(¶ms, &alice);
|
let friend = friend_sign_pod_builder(¶ms, &alice);
|
||||||
alice_friend_pods.push(friend.sign(&mut bob_signer).unwrap());
|
alice_friend_pods.push(friend.sign(&bob_signer).unwrap());
|
||||||
alice_friend_pods.push(friend.sign(&mut charlie_signer).unwrap());
|
alice_friend_pods.push(friend.sign(&charlie_signer).unwrap());
|
||||||
|
|
||||||
let good_boy_issuers = Value::from(Set::new(
|
let good_boy_issuers = Value::from(Set::new(
|
||||||
params.max_depth_mt_containers,
|
params.max_depth_mt_containers,
|
||||||
|
|
@ -433,7 +433,7 @@ pub fn tickets_pod_full_flow() -> Result<MainPodBuilder> {
|
||||||
let vd_set = &*MOCK_VD_SET;
|
let vd_set = &*MOCK_VD_SET;
|
||||||
let builder = tickets_sign_pod_builder(¶ms);
|
let builder = tickets_sign_pod_builder(¶ms);
|
||||||
|
|
||||||
let signed_pod = builder.sign(&mut Signer(SecretKey(1u32.into()))).unwrap();
|
let signed_pod = builder.sign(&Signer(SecretKey(1u32.into()))).unwrap();
|
||||||
tickets_pod_builder(
|
tickets_pod_builder(
|
||||||
¶ms,
|
¶ms,
|
||||||
vd_set,
|
vd_set,
|
||||||
|
|
|
||||||
|
|
@ -311,8 +311,8 @@ mod tests {
|
||||||
mp_builder.pub_op(op!(custom, gt_custom_pred, desugared_gt))?;
|
mp_builder.pub_op(op!(custom, gt_custom_pred, desugared_gt))?;
|
||||||
|
|
||||||
// Check that the POD builds
|
// Check that the POD builds
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let proof = mp_builder.prove(&mut prover, ¶ms)?;
|
let proof = mp_builder.prove(&prover, ¶ms)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
@ -360,8 +360,8 @@ mod tests {
|
||||||
let set_contains_custom_pred = CustomPredicateRef::new(batch, 0);
|
let set_contains_custom_pred = CustomPredicateRef::new(batch, 0);
|
||||||
mp_builder.pub_op(op!(custom, set_contains_custom_pred, set_contains))?;
|
mp_builder.pub_op(op!(custom, set_contains_custom_pred, set_contains))?;
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let proof = mp_builder.prove(&mut prover, ¶ms)?;
|
let proof = mp_builder.prove(&prover, ¶ms)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,9 +49,7 @@ impl SignedPodBuilder {
|
||||||
self.kvs.insert(key.into(), value.into());
|
self.kvs.insert(key.into(), value.into());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove mut because Schnorr signature doesn't need any mutability of the signer, the
|
pub fn sign<S: PodSigner>(&self, signer: &S) -> Result<SignedPod> {
|
||||||
// nonces are sourced from OS randomness.
|
|
||||||
pub fn sign<S: PodSigner>(&self, signer: &mut S) -> Result<SignedPod> {
|
|
||||||
// Sign POD with committed KV store.
|
// Sign POD with committed KV store.
|
||||||
let pod = signer.sign(&self.params, &self.kvs)?;
|
let pod = signer.sign(&self.params, &self.kvs)?;
|
||||||
|
|
||||||
|
|
@ -879,18 +877,18 @@ pub mod tests {
|
||||||
println!("{}", gov_id);
|
println!("{}", gov_id);
|
||||||
println!("{}", pay_stub);
|
println!("{}", pay_stub);
|
||||||
|
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let gov_id = gov_id.sign(&mut signer)?;
|
let gov_id = gov_id.sign(&signer)?;
|
||||||
check_kvs(&gov_id)?;
|
check_kvs(&gov_id)?;
|
||||||
println!("{}", gov_id);
|
println!("{}", gov_id);
|
||||||
|
|
||||||
let mut signer = Signer(SecretKey(2u32.into()));
|
let signer = Signer(SecretKey(2u32.into()));
|
||||||
let pay_stub = pay_stub.sign(&mut signer)?;
|
let pay_stub = pay_stub.sign(&signer)?;
|
||||||
check_kvs(&pay_stub)?;
|
check_kvs(&pay_stub)?;
|
||||||
println!("{}", pay_stub);
|
println!("{}", pay_stub);
|
||||||
|
|
||||||
let mut signer = Signer(SecretKey(3u32.into()));
|
let signer = Signer(SecretKey(3u32.into()));
|
||||||
let sanction_list = sanction_list.sign(&mut signer)?;
|
let sanction_list = sanction_list.sign(&signer)?;
|
||||||
check_kvs(&sanction_list)?;
|
check_kvs(&sanction_list)?;
|
||||||
println!("{}", sanction_list);
|
println!("{}", sanction_list);
|
||||||
|
|
||||||
|
|
@ -898,8 +896,8 @@ pub mod tests {
|
||||||
println!("{}", kyc_builder);
|
println!("{}", kyc_builder);
|
||||||
|
|
||||||
// prove kyc with MockProver and print it
|
// prove kyc with MockProver and print it
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let kyc = kyc_builder.prove(&mut prover, ¶ms)?;
|
let kyc = kyc_builder.prove(&prover, ¶ms)?;
|
||||||
|
|
||||||
println!("{}", kyc);
|
println!("{}", kyc);
|
||||||
|
|
||||||
|
|
@ -916,31 +914,29 @@ pub mod tests {
|
||||||
};
|
};
|
||||||
let vd_set = &*MOCK_VD_SET;
|
let vd_set = &*MOCK_VD_SET;
|
||||||
|
|
||||||
let mut alice = Signer(SecretKey(1u32.into()));
|
let alice = Signer(SecretKey(1u32.into()));
|
||||||
let mut bob = Signer(SecretKey(2u32.into()));
|
let bob = Signer(SecretKey(2u32.into()));
|
||||||
let mut charlie = Signer(SecretKey(3u32.into()));
|
let charlie = Signer(SecretKey(3u32.into()));
|
||||||
let david = Signer(SecretKey(4u32.into()));
|
let david = Signer(SecretKey(4u32.into()));
|
||||||
|
|
||||||
let helper = EthDosHelper::new(¶ms, vd_set, true, alice.public_key())?;
|
let helper = EthDosHelper::new(¶ms, vd_set, true, alice.public_key())?;
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
|
|
||||||
let alice_attestation = attest_eth_friend(¶ms, &mut alice, bob.public_key());
|
let alice_attestation = attest_eth_friend(¶ms, &alice, bob.public_key());
|
||||||
let dist_1 = helper
|
let dist_1 = helper.dist_1(&alice_attestation)?.prove(&prover, ¶ms)?;
|
||||||
.dist_1(&alice_attestation)?
|
|
||||||
.prove(&mut prover, ¶ms)?;
|
|
||||||
dist_1.pod.verify()?;
|
dist_1.pod.verify()?;
|
||||||
|
|
||||||
let bob_attestation = attest_eth_friend(¶ms, &mut bob, charlie.public_key());
|
let bob_attestation = attest_eth_friend(¶ms, &bob, charlie.public_key());
|
||||||
let dist_2 = helper
|
let dist_2 = helper
|
||||||
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
||||||
.prove(&mut prover, ¶ms)?;
|
.prove(&prover, ¶ms)?;
|
||||||
dist_2.pod.verify()?;
|
dist_2.pod.verify()?;
|
||||||
|
|
||||||
let charlie_attestation = attest_eth_friend(¶ms, &mut charlie, david.public_key());
|
let charlie_attestation = attest_eth_friend(¶ms, &charlie, david.public_key());
|
||||||
let dist_3 = helper
|
let dist_3 = helper
|
||||||
.dist_n_plus_1(&dist_2, &charlie_attestation)?
|
.dist_n_plus_1(&dist_2, &charlie_attestation)?
|
||||||
.prove(&mut prover, ¶ms)?;
|
.prove(&prover, ¶ms)?;
|
||||||
dist_3.pod.verify()?;
|
dist_3.pod.verify()?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -974,8 +970,8 @@ pub mod tests {
|
||||||
let mut signed_builder = SignedPodBuilder::new(¶ms);
|
let mut signed_builder = SignedPodBuilder::new(¶ms);
|
||||||
signed_builder.insert("a", 1);
|
signed_builder.insert("a", 1);
|
||||||
signed_builder.insert("b", 1);
|
signed_builder.insert("b", 1);
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let signed_pod = signed_builder.sign(&mut signer).unwrap();
|
let signed_pod = signed_builder.sign(&signer).unwrap();
|
||||||
|
|
||||||
let mut builder = MainPodBuilder::new(¶ms, &vd_set);
|
let mut builder = MainPodBuilder::new(¶ms, &vd_set);
|
||||||
builder.add_signed_pod(&signed_pod);
|
builder.add_signed_pod(&signed_pod);
|
||||||
|
|
@ -1011,8 +1007,8 @@ pub mod tests {
|
||||||
);
|
);
|
||||||
builder.op(true, op_eq3).unwrap();
|
builder.op(true, op_eq3).unwrap();
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let pod = builder.prove(&mut prover, ¶ms).unwrap();
|
let pod = builder.prove(&prover, ¶ms).unwrap();
|
||||||
|
|
||||||
println!("{}", pod);
|
println!("{}", pod);
|
||||||
}
|
}
|
||||||
|
|
@ -1025,8 +1021,8 @@ pub mod tests {
|
||||||
let mut builder = SignedPodBuilder::new(¶ms);
|
let mut builder = SignedPodBuilder::new(¶ms);
|
||||||
|
|
||||||
builder.insert("num", 2);
|
builder.insert("num", 2);
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let pod = builder.sign(&mut signer).unwrap();
|
let pod = builder.sign(&signer).unwrap();
|
||||||
|
|
||||||
println!("{}", pod);
|
println!("{}", pod);
|
||||||
|
|
||||||
|
|
@ -1034,8 +1030,8 @@ pub mod tests {
|
||||||
builder.add_signed_pod(&pod);
|
builder.add_signed_pod(&pod);
|
||||||
builder.pub_op(op!(gt, (&pod, "num"), 5)).unwrap();
|
builder.pub_op(op!(gt, (&pod, "num"), 5)).unwrap();
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let false_pod = builder.prove(&mut prover, ¶ms).unwrap();
|
let false_pod = builder.prove(&prover, ¶ms).unwrap();
|
||||||
|
|
||||||
println!("{}", builder);
|
println!("{}", builder);
|
||||||
println!("{}", false_pod);
|
println!("{}", false_pod);
|
||||||
|
|
@ -1057,8 +1053,8 @@ pub mod tests {
|
||||||
let dict_root = Value::from(dict.clone());
|
let dict_root = Value::from(dict.clone());
|
||||||
builder.insert("dict", dict_root);
|
builder.insert("dict", dict_root);
|
||||||
|
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let pod = builder.sign(&mut signer).unwrap();
|
let pod = builder.sign(&signer).unwrap();
|
||||||
|
|
||||||
let mut builder = MainPodBuilder::new(¶ms, &vd_set);
|
let mut builder = MainPodBuilder::new(¶ms, &vd_set);
|
||||||
builder.add_signed_pod(&pod);
|
builder.add_signed_pod(&pod);
|
||||||
|
|
@ -1079,8 +1075,8 @@ pub mod tests {
|
||||||
OperationAux::MerkleProof(dict.prove(&Key::from("a")).unwrap().1),
|
OperationAux::MerkleProof(dict.prove(&Key::from("a")).unwrap().1),
|
||||||
))
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let mut main_prover = MockProver {};
|
let main_prover = MockProver {};
|
||||||
let main_pod = builder.prove(&mut main_prover, ¶ms).unwrap();
|
let main_pod = builder.prove(&main_prover, ¶ms).unwrap();
|
||||||
|
|
||||||
println!("{}", main_pod);
|
println!("{}", main_pod);
|
||||||
|
|
||||||
|
|
@ -1109,8 +1105,8 @@ pub mod tests {
|
||||||
let st = Statement::equal(AnchoredKey::from((SELF, "a")), Value::from(28));
|
let st = Statement::equal(AnchoredKey::from((SELF, "a")), Value::from(28));
|
||||||
builder.insert(false, (st, op_new_entry.clone()));
|
builder.insert(false, (st, op_new_entry.clone()));
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let pod = builder.prove(&mut prover, ¶ms).unwrap();
|
let pod = builder.prove(&prover, ¶ms).unwrap();
|
||||||
pod.pod.verify().unwrap();
|
pod.pod.verify().unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1145,8 +1141,8 @@ pub mod tests {
|
||||||
);
|
);
|
||||||
builder.insert(false, (st, op));
|
builder.insert(false, (st, op));
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let pod = builder.prove(&mut prover, ¶ms).unwrap();
|
let pod = builder.prove(&prover, ¶ms).unwrap();
|
||||||
pod.pod.verify().unwrap();
|
pod.pod.verify().unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -222,8 +222,8 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_signed_pod_serialization() {
|
fn test_signed_pod_serialization() {
|
||||||
let builder = signed_pod_builder();
|
let builder = signed_pod_builder();
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let pod = builder.sign(&mut signer).unwrap();
|
let pod = builder.sign(&signer).unwrap();
|
||||||
|
|
||||||
let serialized = serde_json::to_string_pretty(&pod).unwrap();
|
let serialized = serde_json::to_string_pretty(&pod).unwrap();
|
||||||
println!("serialized: {}", serialized);
|
println!("serialized: {}", serialized);
|
||||||
|
|
@ -240,8 +240,8 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_mock_signed_pod_serialization() {
|
fn test_mock_signed_pod_serialization() {
|
||||||
let builder = signed_pod_builder();
|
let builder = signed_pod_builder();
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let pod = builder.sign(&mut signer).unwrap();
|
let pod = builder.sign(&signer).unwrap();
|
||||||
|
|
||||||
let serialized = serde_json::to_string_pretty(&pod).unwrap();
|
let serialized = serde_json::to_string_pretty(&pod).unwrap();
|
||||||
println!("serialized: {}", serialized);
|
println!("serialized: {}", serialized);
|
||||||
|
|
@ -261,12 +261,12 @@ mod tests {
|
||||||
|
|
||||||
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
||||||
zu_kyc_sign_pod_builders(¶ms);
|
zu_kyc_sign_pod_builders(¶ms);
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let gov_id_pod = gov_id_builder.sign(&mut signer).unwrap();
|
let gov_id_pod = gov_id_builder.sign(&signer).unwrap();
|
||||||
let mut signer = Signer(SecretKey(2u32.into()));
|
let signer = Signer(SecretKey(2u32.into()));
|
||||||
let pay_stub_pod = pay_stub_builder.sign(&mut signer).unwrap();
|
let pay_stub_pod = pay_stub_builder.sign(&signer).unwrap();
|
||||||
let mut signer = Signer(SecretKey(3u32.into()));
|
let signer = Signer(SecretKey(3u32.into()));
|
||||||
let sanction_list_pod = sanction_list_builder.sign(&mut signer).unwrap();
|
let sanction_list_pod = sanction_list_builder.sign(&signer).unwrap();
|
||||||
let kyc_builder = zu_kyc_pod_builder(
|
let kyc_builder = zu_kyc_pod_builder(
|
||||||
¶ms,
|
¶ms,
|
||||||
&vd_set,
|
&vd_set,
|
||||||
|
|
@ -276,8 +276,8 @@ mod tests {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms).unwrap();
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms).unwrap();
|
||||||
Ok(kyc_pod)
|
Ok(kyc_pod)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,12 +292,12 @@ mod tests {
|
||||||
|
|
||||||
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
|
||||||
zu_kyc_sign_pod_builders(¶ms);
|
zu_kyc_sign_pod_builders(¶ms);
|
||||||
let mut signer = Signer(SecretKey(1u32.into()));
|
let signer = Signer(SecretKey(1u32.into()));
|
||||||
let gov_id_pod = gov_id_builder.sign(&mut signer)?;
|
let gov_id_pod = gov_id_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(2u32.into()));
|
let signer = Signer(SecretKey(2u32.into()));
|
||||||
let pay_stub_pod = pay_stub_builder.sign(&mut signer)?;
|
let pay_stub_pod = pay_stub_builder.sign(&signer)?;
|
||||||
let mut signer = Signer(SecretKey(3u32.into()));
|
let signer = Signer(SecretKey(3u32.into()));
|
||||||
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
|
let sanction_list_pod = sanction_list_builder.sign(&signer)?;
|
||||||
let kyc_builder = zu_kyc_pod_builder(
|
let kyc_builder = zu_kyc_pod_builder(
|
||||||
¶ms,
|
¶ms,
|
||||||
&vd_set,
|
&vd_set,
|
||||||
|
|
@ -306,8 +306,8 @@ mod tests {
|
||||||
&sanction_list_pod,
|
&sanction_list_pod,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut prover = Prover {};
|
let prover = Prover {};
|
||||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms)?;
|
let kyc_pod = kyc_builder.prove(&prover, ¶ms)?;
|
||||||
|
|
||||||
Ok(kyc_pod)
|
Ok(kyc_pod)
|
||||||
}
|
}
|
||||||
|
|
@ -348,23 +348,21 @@ mod tests {
|
||||||
};
|
};
|
||||||
let vd_set = &*MOCK_VD_SET;
|
let vd_set = &*MOCK_VD_SET;
|
||||||
|
|
||||||
let mut alice = Signer(SecretKey(1u32.into()));
|
let alice = Signer(SecretKey(1u32.into()));
|
||||||
let mut bob = Signer(SecretKey(2u32.into()));
|
let bob = Signer(SecretKey(2u32.into()));
|
||||||
let charlie = Signer(SecretKey(3u32.into()));
|
let charlie = Signer(SecretKey(3u32.into()));
|
||||||
|
|
||||||
// Alice attests that she is ETH friends with Bob and Bob
|
// Alice attests that she is ETH friends with Bob and Bob
|
||||||
// attests that he is ETH friends with Charlie.
|
// attests that he is ETH friends with Charlie.
|
||||||
let alice_attestation = attest_eth_friend(¶ms, &mut alice, bob.public_key());
|
let alice_attestation = attest_eth_friend(¶ms, &alice, bob.public_key());
|
||||||
let bob_attestation = attest_eth_friend(¶ms, &mut bob, charlie.public_key());
|
let bob_attestation = attest_eth_friend(¶ms, &bob, charlie.public_key());
|
||||||
|
|
||||||
let helper = EthDosHelper::new(¶ms, vd_set, true, alice.public_key())?;
|
let helper = EthDosHelper::new(¶ms, vd_set, true, alice.public_key())?;
|
||||||
let mut prover = MockProver {};
|
let prover = MockProver {};
|
||||||
let dist_1 = helper
|
let dist_1 = helper.dist_1(&alice_attestation)?.prove(&prover, ¶ms)?;
|
||||||
.dist_1(&alice_attestation)?
|
|
||||||
.prove(&mut prover, ¶ms)?;
|
|
||||||
let dist_2 = helper
|
let dist_2 = helper
|
||||||
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
.dist_n_plus_1(&dist_1, &bob_attestation)?
|
||||||
.prove(&mut prover, ¶ms)?;
|
.prove(&prover, ¶ms)?;
|
||||||
|
|
||||||
Ok(dist_2)
|
Ok(dist_2)
|
||||||
}
|
}
|
||||||
|
|
@ -380,7 +378,7 @@ mod tests {
|
||||||
|
|
||||||
let kyc_pod = build_mock_zukyc_pod().unwrap();
|
let kyc_pod = build_mock_zukyc_pod().unwrap();
|
||||||
let signed_pod = signed_pod_builder()
|
let signed_pod = signed_pod_builder()
|
||||||
.sign(&mut Signer(SecretKey(1u32.into())))
|
.sign(&Signer(SecretKey(1u32.into())))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let ethdos_pod = build_ethdos_pod().unwrap();
|
let ethdos_pod = build_ethdos_pod().unwrap();
|
||||||
let mainpod_schema_value = serde_json::to_value(&mainpod_schema).unwrap();
|
let mainpod_schema_value = serde_json::to_value(&mainpod_schema).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -874,7 +874,7 @@ dyn_clone::clone_trait_object!(RecursivePod);
|
||||||
|
|
||||||
pub trait PodSigner {
|
pub trait PodSigner {
|
||||||
fn sign(
|
fn sign(
|
||||||
&mut self,
|
&self,
|
||||||
params: &Params,
|
params: &Params,
|
||||||
kvs: &HashMap<Key, Value>,
|
kvs: &HashMap<Key, Value>,
|
||||||
) -> Result<Box<dyn Pod>, BackendError>;
|
) -> Result<Box<dyn Pod>, BackendError>;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue