Commit 45091c15 authored by poljar's avatar poljar Committed by Hubert Chathi

python: Turn the signature buffer into a bytearray.

This is a workaround for a bug where signature verification would
overwrite the variable holding the signature.

This only happens on python2.
Signed-off-by: poljar's avatarDamir Jelić <[email protected]>
parent 94f664e7
......@@ -81,14 +81,15 @@ class _Utility(object):
byte_key = to_bytes(key)
byte_message = to_bytearray(message)
byte_signature = to_bytes(signature)
byte_signature = to_bytearray(signature)
try:
cls._check_error(
lib.olm_ed25519_verify(cls._utility, byte_key, len(byte_key),
ffi.from_buffer(byte_message),
len(byte_message),
byte_signature, len(byte_signature)))
ffi.from_buffer(byte_signature),
len(byte_signature)))
finally:
# clear out copies of the message, which may be a plaintext
if byte_message is not message:
......
......@@ -98,3 +98,19 @@ class TestClass(object):
with pytest.raises(OlmVerifyError):
ed25519_verify(signing_key, message, signature)
@given(text())
def test_signature_verification_twice(self, message):
alice = Account()
signature = alice.sign(message)
signing_key = alice.identity_keys["ed25519"]
assert signature
assert signing_key
ed25519_verify(signing_key, message, signature)
assert signature == alice.sign(message)
ed25519_verify(signing_key, message, signature)
assert signature == alice.sign(message)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment