Esempio n. 1
0
 def test_get_ecdh_secret(self, client):
     pubkey = PrivateKey().pubkey.serialize(compressed=False)
     payload = Bip32Path.build(DEFAULT_PATH) + pubkey
     client.apdu_exchange(self.INS,
                          payload,
                          sw1=P1.FIRST,
                          sw2=Curve.PRIME256)
Esempio n. 2
0
 def test_sign_too_large(self, client):
     max_size = 8000
     path = Bip32Path.build(DEFAULT_PATH)
     payload = path + b"a" * (max_size - 4)
     with pytest.raises(CommException) as e:
         self._send_payload(client, payload)
     assert e.value.sw in [0x6700, 0x6813]
Esempio n. 3
0
 def test_path_too_long(self, client):
     path = Bip32Path.build(DEFAULT_PATH +
                            "/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0")
     with pytest.raises(CommException) as e:
         client.apdu_exchange(self.INS, path, P1.NO_SIGNATURE,
                              P2.NON_CONFIRM)
     assert e.value.sw == 0x6a80
Esempio n. 4
0
 def test_invalid_hash_len(self, client):
     payload = Bip32Path.build(DEFAULT_PATH) + b"a"
     with pytest.raises(CommException) as e:
         client.apdu_exchange(self.INS,
                              payload,
                              sw1=P1.FIRST,
                              sw2=Curve.PRIME256)
     assert e.value.sw == 0x6700
Esempio n. 5
0
    def test_sign_valid_tx(self, client, raw_tx_path):

        with open(raw_tx_path, "r") as fp:
            tx = fp.read()
            tx = bytes.fromhex(tx)

        path = Bip32Path.build(DEFAULT_PATH)
        payload = path + tx
        self._send_payload(client, payload)
Esempio n. 6
0
    def test_sign_valid_tx(self, client, raw_tx_path):
        if raw_tx_path.endswith("19-really-stupid-tx.raw"):
            pytest.skip(f"skip invalid tx {raw_tx_path}")

        with open(raw_tx_path, "rb") as fp:
            tx = fp.read()

        path = Bip32Path.build(DEFAULT_PATH)
        payload = path + tx
        self._send_payload(client, payload)
Esempio n. 7
0
    def test_sign_ssh_blob(self, client):
        requests = [
            b"0\x00", b"username", b"22", b"333\x00", b"4444", b"55555"
        ]
        payload = Bip32Path.build(DEFAULT_PATH)
        for i, request in enumerate(requests):
            length = len(request)
            if i == 0 or i == 3:
                length -= 1
            payload += length.to_bytes(4, "big")
            payload += request

        data = client.apdu_exchange(self.INS,
                                    payload,
                                    sw1=P1.FIRST,
                                    sw2=Curve.PRIME256)
        assert data.startswith(b"\x30")
Esempio n. 8
0
 def test_sign_direct_hash(self, client):
     payload = Bip32Path.build(DEFAULT_PATH) + b"a" * 32
     client.apdu_exchange(self.INS, payload, P1.FIRST, Curve.PRIME256)
Esempio n. 9
0
 def test_sign_generic_hash(self, client):
     payload = Bip32Path.build(DEFAULT_PATH) + b"a"
     client.apdu_exchange(self.INS, payload, P1.FIRST, Curve.PRIME256)
     client.apdu_exchange(self.INS, b"b", P1.NEXT, Curve.PRIME256)
     client.apdu_exchange(self.INS, b"b", P1.LAST, Curve.PRIME256)
Esempio n. 10
0
 def test_path_too_long(self, client):
     path = Bip32Path.build(DEFAULT_PATH + "/0/0/0/0/0/0")
     with pytest.raises(CommException) as e:
         client.apdu_exchange(self.INS, path, P1.FIRST, Curve.PRIME256)
     assert e.value.sw == 0x6a80
Esempio n. 11
0
 def test_get_public_key(self, client):
     path = Bip32Path.build(DEFAULT_PATH)
     client.apdu_exchange(self.INS, path, P1.FIRST, Curve.PRIME256)
Esempio n. 12
0
 def test_sign_invalid_tx(self, client):
     path = Bip32Path.build(DEFAULT_PATH)
     payload = path + b"a" * (40)
     with pytest.raises(CommException) as e:
         self._send_payload(client, payload)
     assert e.value.sw in [0x6803, 0x6807]
Esempio n. 13
0
 def test_get_public_key(self, client):
     path = Bip32Path.build(DEFAULT_PATH)
     client.apdu_exchange(self.INS, path, P1.NON_CONFIRM,
                          P2.CURVE_SECP256K1)
Esempio n. 14
0
 def test_get_public_key(self, client):
     path = Bip32Path.build(DEFAULT_PATH)
     client.apdu_exchange(self.INS, path, P1.NO_SIGNATURE, P2.NON_CONFIRM)