def test_dlrep_interactive_2(group): g, h = make_generators(2, group) x, y = Secret(), Secret() p = DLRep(10 * g + 15 * h, x * g + y * h) prover = p.get_prover({x: 10, y: 15}) verifier = p.get_verifier() protocol = SigmaProtocol(verifier, prover) assert protocol.verify()
def test_dlrep_interactive_1(group): sk, g = group.order().random(), group.generator() pk = sk * g x = Secret() p = DLRep(pk, x * g) prover = p.get_prover({x: sk}) verifier = p.get_verifier() protocol = SigmaProtocol(verifier, prover) assert protocol.verify()
def test_dlrep_wrong_secrets(group): g = group.generator() g1 = 2 * g g2 = 5 * g x1 = Secret() x2 = Secret() p = DLRep(g, x1 * g1 + x2 * g2) prover = p.get_prover({x1: 10, x2: 15}) verifier = p.get_verifier() protocol = SigmaProtocol(verifier, prover) assert not protocol.verify()
def test_dlrep_wrong_public_elements(group): g, h = make_generators(2, group=group) x, y = Secret(value=3), Secret(value=4) expr = x * g + y * h public_wrong = get_random_point() p = DLRep(public_wrong, expr) prover = p.get_prover() verifier = p.get_verifier() protocol = SigmaProtocol(verifier, prover) assert not protocol.verify()
def test_dlrep_interactive_3(group): """Emulate actual workflow with independent provers and verifiers.""" sk, g = group.order().random(), group.generator() pk = sk * g x = Secret() p1 = DLRep(pk, x * g) prover = p1.get_prover({x: sk}) x = Secret() p2 = DLRep(pk, x * g) verifier = p2.get_verifier() protocol = SigmaProtocol(verifier, prover) assert protocol.verify()