functional_tests: add spend proof tests

This commit is contained in:
moneromooo-monero 2019-04-29 20:08:47 +00:00
parent a71d91cecf
commit 8e077a5fc0
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
2 changed files with 60 additions and 0 deletions

View file

@ -44,6 +44,7 @@ class ProofsTest():
txid, tx_key, amount = self.transfer()
self.check_tx_key(txid, tx_key, amount)
self.check_tx_proof(txid, amount)
self.check_spend_proof(txid)
self.check_reserve_proof()
def reset(self):
@ -217,6 +218,40 @@ class ProofsTest():
except: ok = True
assert ok or not res.good
def check_spend_proof(self, txid):
daemon = Daemon()
print('Checking spend proof')
self.wallet[0].refresh()
self.wallet[1].refresh()
res = self.wallet[0].get_spend_proof(txid, message = 'foo')
assert len(res.signature) > 0
signature = res.signature
res = self.wallet[1].check_spend_proof(txid, message = 'foo', signature = signature)
assert res.good
res = self.wallet[0].get_spend_proof(txid, message = 'foobar')
assert len(res.signature) > 0
signature2 = res.signature
res = self.wallet[1].check_spend_proof(txid, message = 'foobar', signature = signature2)
assert res.good
ok = False
try: res = self.wallet[1].check_spend_proof('0' * 64, message = 'foo', signature = signature)
except: ok = True
assert ok or not res.good
ok = False
try: res = self.wallet[1].check_spend_proof(txid, message = 'bar', signature = signature)
except: ok = True
assert ok or not res.good
ok = False
try: res = self.wallet[1].check_spend_proof(txid, message = 'foo', signature = signature2)
except: ok = True
assert ok or not res.good
def check_reserve_proof(self):
daemon = Daemon()

View file

@ -622,6 +622,31 @@ class Wallet(object):
}
return self.rpc.send_json_rpc_request(check_tx_proof)
def get_spend_proof(self, txid = '', message = ''):
get_spend_proof = {
'method': 'get_spend_proof',
'params' : {
'txid': txid,
'message': message,
},
'jsonrpc': '2.0',
'id': '0'
}
return self.rpc.send_json_rpc_request(get_spend_proof)
def check_spend_proof(self, txid = '', message = '', signature = ''):
check_spend_proof = {
'method': 'check_spend_proof',
'params' : {
'txid': txid,
'message': message,
'signature': signature,
},
'jsonrpc': '2.0',
'id': '0'
}
return self.rpc.send_json_rpc_request(check_spend_proof)
def get_reserve_proof(self, all_ = True, account_index = 0, amount = 0, message = ''):
get_reserve_proof = {
'method': 'get_reserve_proof',