def test_signature_str(): sk = SecretKey.random() pk = sk.public_key() signer = Signer(sk) signature = signer.sign(b'peace at dawn') s = str(signature) assert 'Signature' in s
def test_sign_and_verify(execution_number): sk = SecretKey.random() pk = sk.public_key() signer = Signer(sk) message = b"peace at dawn" + str(execution_number).encode() signature = signer.sign(message) assert signature.verify(pk, message)
def test_signature_is_hashable(): sk = SecretKey.random() pk = sk.public_key() signer = Signer(sk) message = b'peace at dawn' message2 = b'no peace at dawn' signature = signer.sign(message) signature2 = signer.sign(message2) assert hash(signature) != hash(signature2) signature_restored = Signature.from_bytes(bytes(signature)) assert signature == signature_restored assert hash(signature) == hash(signature_restored) # Different hash, since signing involves some randomness signature3 = signer.sign(message) assert hash(signature) != hash(signature3)
def test_sign_serialize_and_verify(execution_number): sk = SecretKey.random() pk = sk.public_key() signer = Signer(sk) message = b"peace at dawn" + str(execution_number).encode() signature = signer.sign(message) signature_bytes = bytes(signature) signature_restored = Signature.from_bytes(signature_bytes) assert signature_restored.verify(pk, message)
def test_verification_fail(): sk = SecretKey.random() pk = sk.public_key() signer = Signer(sk) message = b"peace at dawn" signature = signer.sign(message) # wrong message wrong_message = b"no peace at dawn" assert not signature.verify(pk, wrong_message) # bad signature signature_bytes = bytes(signature) signature_bytes = b'\x00' + signature_bytes[1:] signature_restored = Signature.from_bytes(signature_bytes) assert not signature_restored.verify(pk, message)