diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanos/get_pk_700/00000.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanos/get_pk_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00001.png b/tests/ragger/snapshots/nanos/get_pk_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00001.png rename to tests/ragger/snapshots/nanos/get_pk_700/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00002.png b/tests/ragger/snapshots/nanos/get_pk_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00002.png rename to tests/ragger/snapshots/nanos/get_pk_700/00002.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00003.png b/tests/ragger/snapshots/nanos/get_pk_700/00003.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00003.png rename to tests/ragger/snapshots/nanos/get_pk_700/00003.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanos/get_pk_700/00004.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanos/get_pk_700/00004.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00006.png b/tests/ragger/snapshots/nanos/get_pk_700/00005.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00006.png rename to tests/ragger/snapshots/nanos/get_pk_700/00005.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00000.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00000.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00003.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00003.png diff --git a/tests/speculos/screenshots/pubkey/nanos/get_public_key/00004.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00004.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/get_public_key/00004.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00004.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected/00005.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00005.png similarity index 100% rename from tests/ragger/snapshots/nanos/get_pk_rejected/00005.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_60/00005.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected_60/00006.png b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00006.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/ragger/snapshots/nanos/get_pk_rejected_60/00006.png differ diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00000.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00000.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00001.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00001.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00002.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00002.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00002.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00003.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00003.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00003.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00003.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00004.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00004.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00004.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00004.png diff --git a/tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00005.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00005.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanos/reject_get_public_key/00005.png rename to tests/ragger/snapshots/nanos/get_pk_rejected_700/00005.png diff --git a/tests/ragger/snapshots/nanos/get_pk_rejected_700/00006.png b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00006.png new file mode 100644 index 0000000..ce795f3 Binary files /dev/null and b/tests/ragger/snapshots/nanos/get_pk_rejected_700/00006.png differ diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanosp/get_pk_700/00000.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanosp/get_pk_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00001.png b/tests/ragger/snapshots/nanosp/get_pk_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00001.png rename to tests/ragger/snapshots/nanosp/get_pk_700/00001.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanosp/get_pk_700/00002.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanosp/get_pk_700/00002.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_700/00003.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanosp/get_pk_700/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00000.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00000.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00000.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00000.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00002.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00002.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00003.png similarity index 100% rename from tests/ragger/snapshots/nanosp/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_60/00004.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00004.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_60/00004.png diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00000.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00000.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00000.png diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00001.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00001.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00001.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00001.png diff --git a/tests/speculos/screenshots/pubkey/nanox/get_public_key/00002.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/get_public_key/00002.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00002.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00003.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00003.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00003.png rename to tests/ragger/snapshots/nanosp/get_pk_rejected_700/00003.png diff --git a/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00004.png b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00004.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanosp/get_pk_rejected_700/00004.png differ diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00000.png b/tests/ragger/snapshots/nanox/get_pk_700/00000.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00000.png rename to tests/ragger/snapshots/nanox/get_pk_700/00000.png diff --git a/tests/ragger/snapshots/nanox/get_pk_700/00001.png b/tests/ragger/snapshots/nanox/get_pk_700/00001.png new file mode 100644 index 0000000..5b381b6 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_700/00001.png differ diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00002.png b/tests/ragger/snapshots/nanox/get_pk_700/00002.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00002.png rename to tests/ragger/snapshots/nanox/get_pk_700/00002.png diff --git a/tests/ragger/snapshots/nanox/get_pk_700/00003.png b/tests/ragger/snapshots/nanox/get_pk_700/00003.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_700/00003.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_60/00000.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00000.png new file mode 100644 index 0000000..a487005 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00000.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected/00001.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/nanox/get_pk_rejected/00001.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_60/00002.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00002.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00002.png differ diff --git a/tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00003.png similarity index 100% rename from tests/speculos/screenshots/pubkey/nanox/reject_get_public_key/00003.png rename to tests/ragger/snapshots/nanox/get_pk_rejected_60/00003.png diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_60/00004.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00000.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00000.png new file mode 100644 index 0000000..a487005 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00000.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00001.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00001.png new file mode 100644 index 0000000..5b381b6 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00001.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00002.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00002.png new file mode 100644 index 0000000..53ae651 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00002.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00003.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00003.png new file mode 100644 index 0000000..e90cd9d Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00003.png differ diff --git a/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png new file mode 100644 index 0000000..6578872 Binary files /dev/null and b/tests/ragger/snapshots/nanox/get_pk_rejected_700/00004.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00000.png b/tests/ragger/snapshots/stax/get_pk_700/00000.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00000.png rename to tests/ragger/snapshots/stax/get_pk_700/00000.png diff --git a/tests/ragger/snapshots/stax/get_pk_700/00001.png b/tests/ragger/snapshots/stax/get_pk_700/00001.png new file mode 100644 index 0000000..aa683fa Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_700/00001.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_700/00002.png b/tests/ragger/snapshots/stax/get_pk_700/00002.png new file mode 100644 index 0000000..13499fc Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_700/00002.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_60/00000.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00000.png new file mode 100644 index 0000000..7593390 Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_60/00000.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00001.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00001.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00001.png rename to tests/ragger/snapshots/stax/get_pk_rejected_60/00001.png diff --git a/tests/ragger/snapshots/stax/get_pk_rejected/00002.png b/tests/ragger/snapshots/stax/get_pk_rejected_60/00002.png similarity index 100% rename from tests/ragger/snapshots/stax/get_pk_rejected/00002.png rename to tests/ragger/snapshots/stax/get_pk_rejected_60/00002.png diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png new file mode 100644 index 0000000..7593390 Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00000.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png new file mode 100644 index 0000000..aa683fa Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00001.png differ diff --git a/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png b/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png new file mode 100644 index 0000000..b0eba3f Binary files /dev/null and b/tests/ragger/snapshots/stax/get_pk_rejected_700/00002.png differ diff --git a/tests/ragger/test_get_address.py b/tests/ragger/test_get_address.py index bb550d1..c88c116 100644 --- a/tests/ragger/test_get_address.py +++ b/tests/ragger/test_get_address.py @@ -1,4 +1,4 @@ -from typing import Optional +from typing import Optional, Tuple import pytest from ledger_app_clients.ethereum.client import EthAppClient, StatusWord @@ -49,15 +49,24 @@ def get_moves(firmware: Firmware, return moves +@pytest.mark.parametrize( + "path, suffix", + [ + ("m/44'/60'/0'/0/0", "60"), + ("m/44'/700'/1'/0/0", "700") + ], +) def test_get_pk_rejected(firmware: Firmware, backend: BackendInterface, - navigator: Navigator): + navigator: Navigator, + path, + suffix): app_client = EthAppClient(backend) with pytest.raises(ExceptionRAPDU) as e: - with app_client.get_public_addr(): + with app_client.get_public_addr(bip32_path=path): navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, - "get_pk_rejected", + f"get_pk_rejected_{suffix}", get_moves(firmware, reject=True)) assert e.value.status == StatusWord.CONDITION_NOT_SATISFIED @@ -79,3 +88,57 @@ def test_get_pk(firmware: Firmware, assert pk.hex() == ref_pk if with_chaincode: assert chaincode.hex() == ref_chaincode + + +def test_get_pk2(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator): + app_client = EthAppClient(backend) + + path="m/44'/700'/1'/0/0" + with app_client.get_public_addr(bip32_path=path, chaincode=True): + navigator.navigate_and_compare(ROOT_SNAPSHOT_PATH, + "get_pk_700", + get_moves(firmware)) + pk, _, chaincode = ResponseParser.pk_addr(app_client.response().data, True) + ref_pk, ref_chaincode = calculate_public_key_and_chaincode(curve=CurveChoice.Secp256k1, + path=path) + assert pk.hex() == ref_pk + assert chaincode.hex() == ref_chaincode + + +def test_get_public_key(backend: BackendInterface): + app_client = EthAppClient(backend) + + with app_client.get_public_addr(bip32_path="m/44'/60'/1'/0/0", display=False, chaincode=True): + pass + + response = app_client.response() + assert response.status == 0x9000 + + # response = pub_key_len (1) + # pub_key (var) + # eth_addr_len (1) + # eth_addr (var) + # chain_code (var) + buffer, pub_key_len, pub_key = _pop_size_prefixed_buf_from_buf(response.data) + buffer, eth_addr_len, eth_addr = _pop_size_prefixed_buf_from_buf(buffer) + buffer, chain_code = _pop_sized_buf_from_buffer(buffer, 32) + + assert len(response.data) == 2 + pub_key_len + eth_addr_len + 32 + assert pub_key == b'\x04\xea\x02&\x91\xc7\x87\x00\xd2\xc3\xa0\xc7E\xbe\xa4\xf2\xb8\xe5\xe3\x13\x97j\x10B\xf6\xa1Vc\\\xb2\x05\xda\x1a\xcb\xfe\x04*\nZ\x89eyn6"E\x89\x0eT\xbd-\xbex\xec\x1e\x18df\xf2\xe9\xd0\xf5\xd5\xd8\xdf' + assert eth_addr == b'463e4e114AA57F54f2Fd2C3ec03572C6f75d84C2' + assert chain_code == b'\xaf\x89\xcd)\xea${8I\xec\xc80\xc2\xc8\x94\\e1\xd6P\x87\x07?\x9f\xd09\x00\xa0\xea\xa7\x96\xc8' + + +def _pop_sized_buf_from_buffer(buffer: bytes, size: int) -> Tuple[bytes, bytes]: + """Parse buffer and returns: remainder, data[size]""" + + return buffer[size:], buffer[0:size] + + +def _pop_size_prefixed_buf_from_buf(buffer:bytes) -> Tuple[bytes, int, bytes]: + """ Parse buffer and returns: remainder, data_len, data """ + + data_len = buffer[0] + return buffer[1+data_len:], data_len, buffer[1:data_len+1] diff --git a/tests/speculos/test_pubkey_cmd.py b/tests/speculos/test_pubkey_cmd.py deleted file mode 100644 index 451bbf9..0000000 --- a/tests/speculos/test_pubkey_cmd.py +++ /dev/null @@ -1,117 +0,0 @@ -from time import sleep - -import pytest - -import ethereum_client -from ethereum_client.utils import compare_screenshot, save_screenshot, PATH_IMG - - -def test_get_public_key(cmd): - # ETHER COIN without display - result: list = [] - with cmd.get_public_key(bip32_path="44'/60'/1'/0/0", display=False, result=result) as exchange: - pass - - uncompressed_addr_len, eth_addr, chain_code = result - - assert len(uncompressed_addr_len) == 65 - assert len(eth_addr) == 40 - assert len(chain_code) == 32 - - assert uncompressed_addr_len == b'\x04\xea\x02&\x91\xc7\x87\x00\xd2\xc3\xa0\xc7E\xbe\xa4\xf2\xb8\xe5\xe3\x13\x97j\x10B\xf6\xa1Vc\\\xb2\x05\xda\x1a\xcb\xfe\x04*\nZ\x89eyn6"E\x89\x0eT\xbd-\xbex\xec\x1e\x18df\xf2\xe9\xd0\xf5\xd5\xd8\xdf' - assert eth_addr == b'463e4e114AA57F54f2Fd2C3ec03572C6f75d84C2' - assert chain_code == b'\xaf\x89\xcd)\xea${8I\xec\xc80\xc2\xc8\x94\\e1\xd6P\x87\x07?\x9f\xd09\x00\xa0\xea\xa7\x96\xc8' - - # DAI COIN with display - result: list = [] - with cmd.get_public_key(bip32_path="44'/700'/1'/0/0", display=True, result=result) as exchange: - sleep(0.5) - - if cmd.model == "nanos": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00003.png") - cmd.client.press_and_release('right') - - # Approved - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00004.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00001.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/get_public_key/00002.png") - cmd.client.press_and_release('both') - - uncompressed_addr_len, eth_addr, chain_code = result - assert len(uncompressed_addr_len) == 65 - assert len(eth_addr) == 40 - assert len(chain_code) == 32 - - assert uncompressed_addr_len == b'\x04V\x8a\x15\xdc\xed\xc8[\x16\x17\x8d\xaf\xcax\x91v~{\x9c\x06\xba\xaa\xde\xf4\xe7\x9f\x86\x1d~\xed)\xdc\n8\x9c\x84\xf01@E\x13]\xd7~6\x8e\x8e\xabb-\xad\xcdo\xc3Fw\xb7\xc8y\xdbQ/\xc3\xe5\x18' - assert eth_addr == b'Ba9A9aED0a1AbBE1da1155F64e73e57Af7995880' - assert chain_code == b'4\xaa\x95\xf4\x02\x12\x12-T\x155\x86\xed\xc5\x0b\x1d8\x81\xae\xce\xbd\x1a\xbbv\x9a\xc7\xd5\x1a\xd0KT\xe4' - - -def test_reject_get_public_key(cmd): - # DAI COIN with display - result: list = [] - - with pytest.raises(ethereum_client.exception.errors.DenyError) as error: - - with cmd.get_public_key(bip32_path="44'/700'/1'/0/0", display=True, result=result) as exchange: - sleep(0.5) - - if cmd.model == "nanos": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address 1/3, 2/3, 3/3 - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") - cmd.client.press_and_release('right') - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00004.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00005.png") - cmd.client.press_and_release('both') - - if cmd.model == "nanox" or cmd.model == "nanosp": - # Verify address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00000.png") - cmd.client.press_and_release('right') - - # Address - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00001.png") - cmd.client.press_and_release('right') - - # Approve - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00002.png") - cmd.client.press_and_release('right') - - # Reject - compare_screenshot(cmd, f"screenshots/pubkey/{PATH_IMG[cmd.model]}/reject_get_public_key/00003.png") - cmd.client.press_and_release('both') - - assert error.args[0] == '0x6985'