Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()