Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Ledger device SDK for Rust Applications
Crate that allows developing Ledger device applications in Rust.
Contains:
- Safe wrappers over common syscalls and C SDK functions
- IO abstractions (
ioandsephmodules) - Cryptographic abstractions (
ecc,hashandhmacmodules) - Arithmetic (simple and modular) abstraction (
mathmodule) - Persistent data storage (
nvmmodule) - UI/UX libraries (
nbglmodule) - Swap support (
libcallmodule)
Supported devices
| Nano X | Nano S Plus | Stax | Flex |
|---|---|---|---|
| :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
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.
rustup default nightly-2024-12-01rustup component add rust-src- install Clang.
- install an ARM gcc toolchain
If you wish to install the ARM gcc toolchain using your distribution's packages, these commands should work:
# On Debian and Ubuntu
# On Fedora or Red Hat Entreprise Linux
# On ArchLinux
This SDK provides custom target files. One for each supported device.
We also provide a Docker container to build Rust applications for Ledger devices:
Building for Nano X
cargo build --release --target=nanox
Building for Nano S+
cargo build --release --target=nanosplus
Building for Stax
cargo build --release --target=stax
Building for Flex
cargo build --release --target=flex
Examples
Nano S+
Build
cargo build -p ledger_device_sdk --example nbgl_home_and_settings --target nanosplus --profile release --features nano_nbgl
Build + Run
cargo run -p ledger_device_sdk --example nbgl_home_and_settings --target nanosplus --profile release --features nano_nbgl --config ledger_device_sdk/examples/config.toml -- --api-port 5001
Nano X
Build
cargo build -p ledger_device_sdk --example nbgl_home_and_settings --target nanox --profile release --features nano_nbgl
Build + Run
cargo run -p ledger_device_sdk --example nbgl_home_and_settings --target nanox --profile release --features nano_nbgl --config ledger_device_sdk/examples/config.toml -- --api-port 5001
Stax
Build
cargo build -p ledger_device_sdk --example nbgl_home_and_settings --target stax --profile release
Build + Run
cargo run -p ledger_device_sdk --example nbgl_home_and_settings --target stax --profile release --config ledger_device_sdk/examples/config.toml
Flex
Build
cargo build -p ledger_device_sdk --example nbgl_home_and_settings --target flex --profile release
Build + Run
cargo run -p ledger_device_sdk --example nbgl_home_and_settings --target flex --profile release --config ledger_device_sdk/examples/config.toml
Apex P
Build
cargo build -p ledger_device_sdk --example nbgl_home_and_settings --target apex_p --profile release
Build + Run
cargo run -p ledger_device_sdk --example nbgl_home_and_settings --target apex_p --profile release --config ledger_device_sdk/examples/config.toml
Contributing
You can submit an issue or even a pull request if you wish to contribute.
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
clippydoes not emit any warnings - check that your code follows
rustfmt's format (usingcargo fmt)