mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-23 14:58:09 +00:00
More unit tests for ethereum signing
This commit is contained in:
parent
39f8d57b7e
commit
195b7e47e1
@ -61,6 +61,79 @@ class TestMsgEthereumSigntx(common.TrezorTest):
|
||||
self.assertEqual(binascii.hexlify(sig_r), '4e90b13c45c6a9bf4aaad0e5427c3e62d76692b36eb727c78d332441b7400404')
|
||||
self.assertEqual(binascii.hexlify(sig_s), '3ff236e7d05f0f9b1ee3d70599bb4200638f28388a8faf6bb36db9e04dc544be')
|
||||
|
||||
def test_ethereum_signtx_message(self):
|
||||
self.setup_mnemonic_nopin_nopassphrase()
|
||||
|
||||
sig_v, sig_r, sig_s = self.client.ethereum_sign_tx(
|
||||
n=[0, 0],
|
||||
nonce=0,
|
||||
gas_price=20000,
|
||||
gas_limit=20000,
|
||||
to=binascii.unhexlify('1d1c328764a41bda0492b66baa30c4a339ff85ef'),
|
||||
value=0,
|
||||
data='ABCDEFGHIJKLMNOP' * 256 + '!!!')
|
||||
self.assertEqual(sig_v, 28)
|
||||
self.assertEqual(binascii.hexlify(sig_r), '070e9dafda4d9e733fa7b6747a75f8a4916459560efb85e3e73cd39f31aa160d')
|
||||
self.assertEqual(binascii.hexlify(sig_s), '7842db33ef15c27049ed52741db41fe3238a6fa3a6a0888fcfb74d6917600e41')
|
||||
|
||||
|
||||
def test_ethereum_signtx_newcontract(self):
|
||||
self.setup_mnemonic_nopin_nopassphrase()
|
||||
|
||||
# contract creation without data should fail.
|
||||
self.assertRaises(Exception, self.client.ethereum_sign_tx,
|
||||
n=[0, 0],
|
||||
nonce=123456,
|
||||
gas_price=20000,
|
||||
gas_limit=20000,
|
||||
to='',
|
||||
value=12345678901234567890)
|
||||
|
||||
sig_v, sig_r, sig_s = self.client.ethereum_sign_tx(
|
||||
n=[0, 0],
|
||||
nonce=0,
|
||||
gas_price=20000,
|
||||
gas_limit=20000,
|
||||
to='',
|
||||
value=12345678901234567890,
|
||||
data='ABCDEFGHIJKLMNOP' * 256 + '!!!')
|
||||
self.assertEqual(sig_v, 28)
|
||||
self.assertEqual(binascii.hexlify(sig_r), 'b401884c10ae435a2e792303b5fc257a09f94403b2883ad8c0ac7a7282f5f1f9')
|
||||
self.assertEqual(binascii.hexlify(sig_s), '4742fc9e6a5fa8db3db15c2d856914a7f3daab21603a6c1ce9e9927482f8352e')
|
||||
|
||||
def test_ethereum_sanity_checks(self):
|
||||
# gas overflow
|
||||
self.assertRaises(Exception, self.client.ethereum_sign_tx,
|
||||
n=[0, 0],
|
||||
nonce=123456,
|
||||
gas_price=0xffffffffffffffffffffffffffffffff,
|
||||
gas_limit=0xffffffffffffffffffffffffffffff,
|
||||
to=binascii.unhexlify('1d1c328764a41bda0492b66baa30c4a339ff85ef'),
|
||||
value=12345678901234567890)
|
||||
|
||||
# no gas price
|
||||
self.assertRaises(Exception, self.client.ethereum_sign_tx,
|
||||
n=[0, 0],
|
||||
nonce=123456,
|
||||
gas_limit=10000,
|
||||
to=binascii.unhexlify('1d1c328764a41bda0492b66baa30c4a339ff85ef'),
|
||||
value=12345678901234567890)
|
||||
|
||||
# no gas limit
|
||||
self.assertRaises(Exception, self.client.ethereum_sign_tx,
|
||||
n=[0, 0],
|
||||
nonce=123456,
|
||||
gas_price=10000,
|
||||
to=binascii.unhexlify('1d1c328764a41bda0492b66baa30c4a339ff85ef'),
|
||||
value=12345678901234567890)
|
||||
|
||||
# no nonce
|
||||
self.assertRaises(Exception, self.client.ethereum_sign_tx,
|
||||
n=[0, 0],
|
||||
gas_price=10000,
|
||||
gas_limit=123456,
|
||||
to=binascii.unhexlify('1d1c328764a41bda0492b66baa30c4a339ff85ef'),
|
||||
value=12345678901234567890)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
Reference in New Issue
Block a user