179 lines
8.9 KiB
Python
179 lines
8.9 KiB
Python
from time import sleep
|
|
|
|
import pytest
|
|
|
|
from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG, parse_sign_response
|
|
from ethereum_client.transaction import EIP712
|
|
import ethereum_client
|
|
|
|
def test_sign_eip_712_hashed_msg(cmd):
|
|
result: list = []
|
|
|
|
bip32_path="44'/60'/0'/0'/0"
|
|
transaction = EIP712(
|
|
domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e",
|
|
msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77"
|
|
)
|
|
|
|
with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex:
|
|
sleep(0.5)
|
|
|
|
if cmd.model == "nanos":
|
|
# Sign typed message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00000.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Domain hash 1/4, 2/4, 3/4, 4/4
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00001.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00002.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00003.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00004.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Message hash 1/4, 2/4, 3/4, 4/4
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00005.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00006.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00007.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00008.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Sign message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00009.png")
|
|
cmd.client.press_and_release('both')
|
|
|
|
if cmd.model == "nanox" or cmd.model == "nanosp":
|
|
# Sign typed message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00000.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Domain hash 1/2, 2/2
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00001.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00002.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Message hash 1/2, 2/2
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00003.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00004.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Sign message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg/00005.png")
|
|
cmd.client.press_and_release('both')
|
|
|
|
v, r, s = result
|
|
|
|
assert v == 0x1B #27
|
|
assert r.hex() == "b1cf3dd6f2902ae9b181e158cc07f6ee6e6c456360b18842ece0b947dec89f07"
|
|
assert s.hex() == "5372a9b1a495b76ccd75347b6f591867859fb73aa05a546b79c81073ddff5e8a"
|
|
|
|
def test_sign_eip_712_hashed_msg_reject(cmd):
|
|
result: list = []
|
|
|
|
bip32_path="44'/60'/0'/0'/0"
|
|
transaction = EIP712(
|
|
domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e",
|
|
msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77"
|
|
)
|
|
|
|
with pytest.raises(ethereum_client.exception.errors.DenyError) as error:
|
|
with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex:
|
|
sleep(0.5)
|
|
|
|
if cmd.model == "nanos":
|
|
# Sign typed message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00000.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Domain hash 1/4, 2/4, 3/4, 4/4
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00001.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00002.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00003.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00004.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Message hash 1/4, 2/4, 3/4, 4/4
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00005.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00006.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00007.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00008.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Sign message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00009.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Cancel signature
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00010.png")
|
|
cmd.client.press_and_release('both')
|
|
|
|
if cmd.model == "nanox" or cmd.model == "nanosp":
|
|
# Sign typed message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00000.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Domain hash 1/2, 2/2
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00001.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00002.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Message hash 1/2, 2/2
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00003.png")
|
|
cmd.client.press_and_release('right')
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00004.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Sign message
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00005.png")
|
|
cmd.client.press_and_release('right')
|
|
|
|
# Cancel signature
|
|
compare_screenshot(cmd, f"screenshots/eip712/{PATH_IMG[cmd.model]}/sign_eip_712_hashed_msg_reject/00006.png")
|
|
cmd.client.press_and_release('both')
|
|
assert error.args[0] == '0x6985'
|
|
|
|
def test_sign_eip_712_bad_domain(cmd):
|
|
result: list = []
|
|
|
|
bip32_path="44'/60'/0'/0'/0"
|
|
transaction = EIP712(
|
|
domain_hash="deadbeef",
|
|
msg_hash="9d96be8a7cca396e711a3ba356bd9878df02a726d753ddb6cda3c507d888bc77"
|
|
)
|
|
|
|
with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error:
|
|
|
|
with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex:
|
|
pass
|
|
|
|
assert error.args[0] == '0x6a80'
|
|
|
|
def test_sign_eip_712_bad_msg(cmd):
|
|
result: list = []
|
|
|
|
bip32_path="44'/60'/0'/0'/0"
|
|
transaction = EIP712(
|
|
domain_hash="c24f499b8c957196651b13edd64aaccc3980009674b2aea0966c8a56ba81278e",
|
|
msg_hash="deadbeef"
|
|
)
|
|
|
|
with pytest.raises(ethereum_client.exception.errors.UnknownDeviceError) as error:
|
|
|
|
with cmd.sign_eip712(bip32_path=bip32_path, transaction=transaction, result=result) as ex:
|
|
pass
|
|
|
|
assert error.args[0] == '0x6a80' |