18 stable releases

new 1.8.2 Apr 14, 2024
1.8.1 Apr 10, 2024
1.8.0 Mar 26, 2024
1.6.0 Feb 27, 2024
1.0.1 Nov 24, 2023

#133 in Cryptography

Download history 73/week @ 2023-12-22 59/week @ 2023-12-29 198/week @ 2024-01-05 129/week @ 2024-01-12 167/week @ 2024-01-19 397/week @ 2024-01-26 270/week @ 2024-02-02 397/week @ 2024-02-09 307/week @ 2024-02-16 338/week @ 2024-02-23 350/week @ 2024-03-01 303/week @ 2024-03-08 166/week @ 2024-03-15 225/week @ 2024-03-22 114/week @ 2024-03-29 208/week @ 2024-04-05

734 downloads per month
Used in ledger_device_ui_sdk

Apache-2.0

235KB
6K SLoC

Ledger wallets SDK for Rust Applications

Crate that allows developing Ledger Nano apps in Rust with a default configuration.

Contains:

  • some safe wrappers over common syscalls
  • IO abstractions
  • signature abstractions

This SDK is incomplete in the sense that wrappers are currently missing, and not all wrappers have a nice Rust abstraction on top, but two apps were made using it:

You can submit an issue or even a pull request if you wish to contribute, we will check what we can do.

Supported devices

Nano S Nano X Nano S Plus
✔️ ✔️ ✔️

Usage

Building requires adding rust-src to your Rust installation, and both Clang and arm-none-eabi-gcc. On Ubuntu, gcc-multilib might also be required.

Using rustc nightly builds is mandatory as some unstable features are required.

If you wish to install the ARM gcc toolchain using your distribution's packages, these commands should work:

# On Debian and Ubuntu
sudo apt install clang gcc-arm-none-eabi gcc-multilib

# On Fedora or Red Hat Entreprise Linux
sudo dnf install clang arm-none-eabi-gcc arm-none-eabi-newlib

# On ArchLinux
sudo pacman -S clang arm-none-eabi-gcc arm-none-eabi-newlib

This SDK provides three custom target files for Nano S, Nano X and Nano S+.

Building for Nano S

cargo build --release -Z build-std=core --target=./nanos.json

Building for Nano X

cargo build --release -Z build-std=core --target=./nanox.json

Building for Nano S+

cargo build --release -Z build-std=core --target=./nanosplus.json

Building with rustc < 1.54

Building before rustc 1.54 should fail with error[E0635]: unknown feature const_fn_trait_bound.

This is solved by activating a specific feature: cargo build --features pre1_54

Contributing

Make sure you've followed the installation steps above. In order for your PR to be accepted, it will have to pass the CI, which performs the following checks:

  • Check if the code builds on nightly
  • Check that clippy does not emit any warnings
  • check that your code follows rustfmt's format (using cargo fmt)

Dependencies

~0.8–3MB
~64K SLoC