def test_and_proof_non_interactive_fails_when_wrong_secrets(params, group): p1, p2, secrets = params andp = AndProofStmt(p1, p2) bad_secrets = secrets.copy() u = list(bad_secrets.keys()) bad_secrets[u[0]] = group.order().random() message = "whatever" tr = andp.prove(bad_secrets, message=message) assert not andp.verify(tr, message=message)
def test_and_proof_simulation_2(group): n = 3 secret_values = [Bn(i) for i in range(n)] secrets = [Secret() for _ in range(n)] generators = make_generators(n, group) lhs = group.wsum(secret_values, generators) subproof1 = DLRep(lhs, wsum_secrets(secrets, generators)) subproof2 = DLRep(lhs, wsum_secrets(secrets, generators)) andp = AndProofStmt(subproof1, subproof2) tr = andp.simulate() assert andp.verify_simulation_consistency(tr) assert not andp.verify(tr)
def test_and_proof_non_interactive(params): p1, p2, secrets = params p = AndProofStmt(p1, p2) message = "whatever" tr = p.prove(secrets, message=message) assert p.verify(tr, message=message)