run: rustup update
- name: Check fmt
run: cargo fmt --all -- --config format_code_in_doc_comments=true --check
+
+ test_harware_wallet:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ rust:
+ - version: 1.60.0 # STABLE
+ - version: 1.56.1 # MSRV
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ - name: Build simulator image
+ run: docker build -t hwi/ledger_emulator ./ci -f ci/Dockerfile.ledger
+ - name: Run simulator image
+ run: docker run --name simulator --network=host hwi/ledger_emulator &
+ - name: Install Python
+ uses: actions/setup-python@v4
+ with:
+ python-version: '3.9'
+ - name: Install python dependencies
+ run: pip install hwi==2.1.1 protobuf==3.20.1
+ - name: Set default toolchain
+ run: rustup default ${{ matrix.rust.version }}
+ - name: Set profile
+ run: rustup set profile minimal
+ - name: Update toolchain
+ run: rustup update
+ - name: Test
+ run: cargo test --features test-hardware-signer
--- /dev/null
+# Taken from bitcoindevkit/rust-hwi
+FROM ghcr.io/ledgerhq/speculos
+
+RUN apt-get update
+RUN apt-get install wget -y
+RUN wget "https://github.com/LedgerHQ/speculos/blob/master/apps/nanos%23btc%232.1%231c8db8da.elf?raw=true" -O /speculos/btc.elf
+ADD automation.json /speculos/automation.json
+
+ENTRYPOINT ["python", "./speculos.py", "--automation", "file:automation.json", "--display", "headless", "--vnc-port", "41000", "btc.elf"]
--- /dev/null
+{
+ "version": 1,
+ "rules": [
+ {
+ "regexp": "Address \\(\\d/\\d\\)|Message hash \\(\\d/\\d\\)|Confirm|Fees|Review|Amount",
+ "actions": [
+ [ "button", 2, true ],
+ [ "button", 2, false ]
+ ]
+ },
+ {
+ "text": "Sign",
+ "conditions": [
+ [ "seen", false ]
+ ],
+ "actions": [
+ [ "button", 2, true ],
+ [ "button", 2, false ],
+ [ "setbool", "seen", true ]
+ ]
+ },
+ {
+ "regexp": "Approve|Sign|Accept",
+ "actions": [
+ [ "button", 3, true ],
+ [ "button", 3, false ]
+ ]
+ }
+ ]
+}