aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2020-08-31 16:49:03 -0500
committerluigi1111 <luigi1111w@gmail.com>2020-08-31 16:49:03 -0500
commit61dd04b68121b4057b4b88356761fbfb3fa73c90 (patch)
treece191c3d6f23869e1250f7d77d0746cfafa645c1 /tests
parentMerge pull request #6787 (diff)
parentBind signature to full address and signing mode (diff)
downloadmonero-61dd04b68121b4057b4b88356761fbfb3fa73c90.tar.xz
Merge pull request #6600
fa06c39 Bind signature to full address and signing mode (SarangNoether) 743608e wallet: allow signing a message with spend or view key (moneromooo-monero)
Diffstat (limited to 'tests')
-rwxr-xr-xtests/functional_tests/sign_message.py17
-rw-r--r--tests/fuzz/signature.cpp4
2 files changed, 14 insertions, 7 deletions
diff --git a/tests/functional_tests/sign_message.py b/tests/functional_tests/sign_message.py
index 7ce2f2c18..dbb7cfd6d 100755
--- a/tests/functional_tests/sign_message.py
+++ b/tests/functional_tests/sign_message.py
@@ -43,8 +43,10 @@ from framework.wallet import Wallet
class MessageSigningTest():
def run_test(self):
self.create()
- self.check_signing(False)
- self.check_signing(True)
+ self.check_signing(False, False)
+ self.check_signing(False, True)
+ self.check_signing(True, False)
+ self.check_signing(True, True)
def create(self):
print('Creating wallets')
@@ -66,8 +68,8 @@ class MessageSigningTest():
assert res.address == self.address[i]
assert res.seed == seeds[i]
- def check_signing(self, subaddress):
- print('Signing/verifing messages with ' + ('subaddress' if subaddress else 'standard address'))
+ def check_signing(self, subaddress, spend_key):
+ print('Signing/verifing messages with ' + ('subaddress' if subaddress else 'standard address') + ' ' + ('spend key' if spend_key else 'view key'))
messages = ['foo', '']
if subaddress:
address = []
@@ -84,17 +86,22 @@ class MessageSigningTest():
account_index = 0
address_index = 0
for message in messages:
- res = self.wallet[0].sign(message, account_index = account_index, address_index = address_index)
+ res = self.wallet[0].sign(message, account_index = account_index, address_index = address_index, signature_type = 'spend' if spend_key else 'view')
signature = res.signature
for i in range(2):
res = self.wallet[i].verify(message, address[0], signature)
assert res.good
+ assert not res.old
+ assert res.version == 2
+ assert res.signature_type == 'spend' if spend_key else 'view'
res = self.wallet[i].verify('different', address[0], signature)
assert not res.good
res = self.wallet[i].verify(message, address[1], signature)
assert not res.good
res = self.wallet[i].verify(message, address[0], signature + 'x')
assert not res.good
+ res = self.wallet[i].verify(message, address[0], signature.replace('SigV2','SigV1'))
+ assert not res.good
if __name__ == '__main__':
MessageSigningTest().run_test()
diff --git a/tests/fuzz/signature.cpp b/tests/fuzz/signature.cpp
index 2a3e65c25..c587ff6cd 100644
--- a/tests/fuzz/signature.cpp
+++ b/tests/fuzz/signature.cpp
@@ -59,6 +59,6 @@ BEGIN_INIT_SIMPLE_FUZZER()
END_INIT_SIMPLE_FUZZER()
BEGIN_SIMPLE_FUZZER()
- bool valid = wallet->verify("test", address, std::string((const char*)buf, len));
- std::cout << "Signature " << (valid ? "valid" : "invalid") << std::endl;
+ tools::wallet2::message_signature_result_t result = wallet->verify("test", address, s);
+ std::cout << "Signature " << (result.valid ? "valid" : "invalid") << std::endl;
END_SIMPLE_FUZZER()