Skip to content

Emerald HWKey - lib to access Hardware Cryptocurrency Keys

License

Notifications You must be signed in to change notification settings

emeraldpay/emerald-hwkey

Repository files navigation

Emerald HWKey

Test Coveralls Codecov Crates License

Rust library to access Hardware Keys for Cryptocurrency.

Supports:
  • Ledger Nano S

  • Ledger Nano X

Development

Integration Testing with Speculos app

Get App Ledger App emulator from: https://github.com/LedgerHQ/speculos

The Speculos app is initialized with the following seed by default:

glory   promote mansion idle        axis    finger   extra   february
uncover one     trip    resource    lawn    turtle  enact   monster
seven   myth    punch   hobby       comfort wild    raise   skin

Test against a Bitcoin App

Run it in docker as:
docker run --rm -it -p 5000:5000  speculos --display headless apps/btc.elf
Run tests:
EMRLD_HWKEY_TEST=bitcoin cargo test --test speculos_bitcoin --features "speculos" -- --test-threads=1

Test against an Ethereum App

Run Speculos Docker with NanoX app:
docker run --rm -it -v $(pwd)/testdata/ledger-elf:/speculos/apps -p 6000:5000  speculos --model nanox --display headless apps/ethereum-nanox-2.0.2-1.9.18.elf
Run tests:
EMRLD_HWKEY_TEST=ethereum cargo test --test speculos_ethereum --features "speculos" -- --test-threads=1

Integration Testing with Real Hardware

For all the test the following Mnemonic Phrase is used:

blanket large   trumpet mandate call  great unhappy skull
special assist  draw    right   quote stone under   legend
invite  morning hub     believe pulp  piano tuition fruit

You can also verify addresses and get the actual Private Key by using https://iancoleman.io/bip39/#english with that Mnemonic. At least for the Ledger Nano products.

Warning
Never transfer real money to the Test Ledger or any wallet created from the Mnemonic Phrase above. Since the Phrase is public all the money would be stolen immediately.

Ledger + No App

No App must be open on Ledger

EMRLD_HWKEY_TEST=ledger_noapp cargo test --test ledger_noapp -- --test-threads=1

Ledger + Bitcoin App

Bitcoin App must be open on Ledger

EMRLD_HWKEY_TEST=ledger_bitcoin cargo test --test ledger_bitcoin -- --test-threads=1

Ledger + Bitcoin Test App

Bitcoin Test App must be open on Ledger

EMRLD_HWKEY_TEST=ledger_bitcoin_test cargo test --test ledger_bitcoin -- --test-threads=1

Ledger + Ethereum App

Ethereum App must be open on Ledger

EMRLD_HWKEY_TEST=ledger_ethereum cargo test --test ledger_ethereum -- --test-threads=1

Ledger + Ethereum Classic App

Ethereum Classic App must be open on Ledger

EMRLD_HWKEY_TEST=ledger_ethereum_classic cargo test --test ledger_ethereum -- --test-threads=1

License

Copyright 2022 EmeraldPay, Inc

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.