Esempio n. 1
0
def test():
    """
    No need to test otssign or orspublic
    as they are tested by the OTS test
    """

    m = MerkleTree(progressbar=False)

    for _ in range(m.n_keys):

        msg = getrandom(32)
        sign = m.signature(msg)

        assert MerkleTree.verify(msg, sign, m.public_key)

        false_sign = modify_sign1(sign, m.n_keys)
        assert not MerkleTree.verify(msg, false_sign, m.public_key)

        false_sign = modify_sign4(sign)
        assert not MerkleTree.verify(msg, false_sign, m.public_key)

        assert MerkleTree.verify(msg, sign, m.public_key)

    with pytest.raises(AssertionError) as excinfo:
        msg = getrandom(32)
        sign = m.signature(msg)

    assert excinfo.value.args == ('All keys have been used', )
Esempio n. 2
0
    b'hello world', b'world hello', b'BTC', b'ETH', b'XLM', b'RawEncoder',
    b'encoder', b'sha256'
]
# messages = messages[0:-1]
# messages = messages[0:-4]
# messages = messages[0:-randint(1, 5)]
leaves = [
    sha256(messages[i], encoder=RawEncoder) for i in range(len(messages))
]

print("Messages: ", messages)
print()

print("MerkleTree:")
m = MerkleTree.from_leaves(leaves)  # base=2
# m = MerkleTree.from_messages(messages) # base=2
# m = MerkleTree.from_leaves(leaves, 3) # base=3
# m = MerkleTree.from_messages(messages, 5) # base=5
m.print_hex()
print()

index = randint(0, len(messages) - 1)
print("Proof that message ", messages[index], "(", str(hexlify(leaves[index])),
      ") is part of the tree:")
proof = m.prove(messages[index])
MerkleTree.print_hex_proof(proof)
print()

print("Proof verified" if MerkleTree.verify(messages[index], proof
                                            ) else "Proof failed verification")