mirror of
https://github.com/solokeys/solo2.git
synced 2026-06-20 13:16:13 -07:00
193 lines
9.7 KiB
TOML
193 lines
9.7 KiB
TOML
[workspace]
|
|
members = [
|
|
"runners/lpc55",
|
|
"runners/lpc55/board",
|
|
"runners/nrf52840dk",
|
|
"runners/pc",
|
|
"components/ndef-app",
|
|
"components/nfc-device",
|
|
"components/fm11nc08",
|
|
"components/nrf-nfc",
|
|
"components/provisioner-app",
|
|
"components/oath-export",
|
|
"components/solo-apps",
|
|
"cli",
|
|
]
|
|
# `cargo run` / `cargo build` / `cargo test` at the workspace root operate on the
|
|
# host CLI. `runners/pc` also ships binaries, so the CLI must be the *sole*
|
|
# default member for `cargo run` to be unambiguous. Build the firmware explicitly
|
|
# with `cargo build -p runner --target thumbv8m.main-none-eabi ...` (or from
|
|
# `runners/lpc55/`); test other host members with `cargo test -p <name>`.
|
|
default-members = [
|
|
"cli",
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
version = "2.2362.0"
|
|
edition = "2021"
|
|
rust-version = "1.94"
|
|
authors = [
|
|
"Nicolas Stalder <n@stalder.io>",
|
|
"Conor Patrick <conor@solokeys.com>",
|
|
"Manuel Domke <manuel@leetronics.de>",
|
|
]
|
|
|
|
[workspace.dependencies]
|
|
# ── Internal workspace members ────────────────────────────────────────────────
|
|
board = { path = "runners/lpc55/board" }
|
|
ndef-app = { path = "components/ndef-app" }
|
|
fm11nc08 = { path = "components/fm11nc08" }
|
|
nfc-device = { path = "components/nfc-device" }
|
|
nrf-nfc = { path = "components/nrf-nfc" }
|
|
provisioner-app = { path = "components/provisioner-app" }
|
|
oath-export = { path = "components/oath-export" }
|
|
solo-apps = { path = "components/solo-apps" }
|
|
|
|
# ── RTIC framework ────────────────────────────────────────────────────────────
|
|
rtic = "2.0.0"
|
|
rtic-monotonics = { version = "2.0.0", features = ["cortex-m-systick"] }
|
|
rtic-sync = "1.4.0"
|
|
systick-monotonic = "1.0.1"
|
|
|
|
# ── Cortex-M / embedded ───────────────────────────────────────────────────────
|
|
cortex-m = { version = "0.7.0", features = ["critical-section-single-core"] }
|
|
lpc55-hal = "0.5.0"
|
|
micromath = "2"
|
|
embedded-time = "0.12"
|
|
embedded-hal = { version = "0.2.5", features = ["unproven"] }
|
|
spi-memory = "0.2"
|
|
|
|
# ── Logging / debug ───────────────────────────────────────────────────────────
|
|
defmt = "1.0.1"
|
|
defmt-rtt = "1.1.0"
|
|
delog = "0.1.1"
|
|
panic-halt = "1.0.0"
|
|
|
|
# ── Core utilities ────────────────────────────────────────────────────────────
|
|
heapless = "0.9"
|
|
nb = "1"
|
|
interchange = "0.3"
|
|
static_cell = "2.1.1"
|
|
ref-swap = "0.1"
|
|
generic-array = "0.14.3"
|
|
rand = "0.8"
|
|
rand_core = "0.6"
|
|
serde = { version = "1", features = ["derive"] }
|
|
paste = "1"
|
|
hex = "0.4"
|
|
serde_bytes = "0.11"
|
|
|
|
# ── USB ───────────────────────────────────────────────────────────────────────
|
|
usb-device = "0.2.3"
|
|
usbd-serial = "0.1.0"
|
|
usbd-ccid = "0.4"
|
|
usbd-ctaphid = { version = "0.4", features = ["log-info"] }
|
|
chacha20 = { version = "0.7", features = ["rng"] }
|
|
|
|
# ── APDU / ISO 7816 stack ─────────────────────────────────────────────────────
|
|
apdu-dispatch = "0.4"
|
|
ctaphid-dispatch = "0.4"
|
|
ctap-types = "=0.6.0-rc.4"
|
|
iso7816 = "0.2"
|
|
serde_cbor = { version = "0.11", default-features = false, features = ["std"] }
|
|
|
|
# ── Storage ───────────────────────────────────────────────────────────────────
|
|
littlefs2 = { version = "0.7", features = ["c-stubs"] }
|
|
|
|
# ── Trussed core ─────────────────────────────────────────────────────────────
|
|
trussed = { version = "0.1", features = ["aes256-gcm"] }
|
|
trussed-core = { version = "0.2", features = ["aes256-gcm"] }
|
|
|
|
# ── Trussed extensions ────────────────────────────────────────────────────────
|
|
trussed-staging = { git = "https://github.com/trussed-dev/trussed-staging.git", tag = "v0.4.0", features = ["hkdf", "fs-info", "manage", "chunked", "hpke", "wrap-key-to-file"] }
|
|
trussed-fs-info = "0.3"
|
|
trussed-hkdf = "0.4"
|
|
trussed-manage = "0.3"
|
|
trussed-chunked = "0.3"
|
|
trussed-hpke = "0.3"
|
|
trussed-wrap-key-to-file = "0.3"
|
|
trussed-auth = "0.5"
|
|
trussed-auth-backend = { git = "https://github.com/trussed-dev/trussed-auth", tag = "backend-v0.1.0" }
|
|
|
|
# ── Applications ─────────────────────────────────────────────────────────────
|
|
admin-app = "0.1"
|
|
fido-authenticator = { version = "=0.4.0-rc.3", features = ["dispatch", "chunked", "credential-id-format-v2"] }
|
|
salty = "0.3"
|
|
secrets-app = { git = "https://github.com/leetronics/trussed-secrets-app", branch = "fix-pin-protection-isolation", features = ["apdu-dispatch", "ctaphid", "log-all"] }
|
|
piv-authenticator = { git = "https://github.com/0x0ece/piv-authenticator", rev = "cd93aee", features = ["apdu-dispatch"] }
|
|
opcard = { git = "https://github.com/Nitrokey/opcard-rs", tag = "v1.7.0", features = ["apdu-dispatch", "delog"] }
|
|
|
|
# ── PC test-only dependencies ─────────────────────────────────────────────────
|
|
serial_test = "3"
|
|
# default-features off + static hidraw: shared by runners/pc and the host cli.
|
|
hidapi = { version = "2", default-features = false, features = ["linux-static-hidraw"] }
|
|
aes = "0.8"
|
|
cbc = "0.1"
|
|
sha2 = "0.10"
|
|
hmac = "0.12"
|
|
cosey = "0.4"
|
|
p256 = { version = "0.13", features = ["ecdh"] }
|
|
|
|
# ── CLI (host) — used only by the `cli` member ───────────────────────────────
|
|
# (hex, sha2, rand_core, p256, iso7816, hidapi are deduped onto the entries above)
|
|
anyhow = "1"
|
|
log = "0.4"
|
|
data-encoding = "2"
|
|
flexiber = { version = "0.1", features = ["std"] }
|
|
getrandom = "0.2"
|
|
hex-literal = "0.4"
|
|
lpc55 = "0.2"
|
|
pcsc = "2"
|
|
serde_json = "1"
|
|
sha-1 = "0.10"
|
|
time = "0.3"
|
|
x509-parser = { version = "0.14", features = ["verify"] }
|
|
dialoguer = "0.10"
|
|
indicatif = "0.18"
|
|
ureq = { version = "2", features = ["json"] }
|
|
webbrowser = "1"
|
|
clap = { version = "4", features = ["cargo", "derive"] }
|
|
clap_complete = "4"
|
|
clap-verbosity-flag = "2"
|
|
ctrlc = "3"
|
|
lazy_static = "1"
|
|
pretty_env_logger = "0.5"
|
|
pkcs8 = { version = "0.10", features = ["alloc"] }
|
|
rcgen = "0.10"
|
|
yasna = "0.6"
|
|
|
|
# ── Release profile ───────────────────────────────────────────────────────────
|
|
[profile.release]
|
|
codegen-units = 1
|
|
lto = true
|
|
opt-level = "z"
|
|
panic = "abort"
|
|
incremental = false
|
|
debug = true
|
|
|
|
[profile.dev]
|
|
panic = "abort"
|
|
|
|
[profile.release.package.salty]
|
|
opt-level = 2
|
|
|
|
# ── Patches ───────────────────────────────────────────────────────────────────
|
|
[patch.crates-io]
|
|
ctap-types = { git = "https://github.com/0x0ece/ctap-types", rev = "1056c78b06fddc1010afebf549434ac097a6db42" }
|
|
trussed = { git = "https://github.com/0x0ece/trussed", rev = "a1b33c46eb16ef7fa5f6324f7c099ff339fe21e7" }
|
|
trussed-core = { git = "https://github.com/0x0ece/trussed", rev = "a1b33c46eb16ef7fa5f6324f7c099ff339fe21e7" }
|
|
fido-authenticator = { git = "https://github.com/0x0ece/fido-authenticator", rev = "015c310541eb2e977e6efa6167a149f3c3b295da" }
|
|
admin-app = { git = "https://github.com/Nitrokey/admin-app.git", tag = "v0.1.0-nitrokey.21" }
|
|
# Force all crates to use littlefs2-core 0.1.2 which has heapless-bytes05 support
|
|
littlefs2-core = { git = "https://github.com/trussed-dev/littlefs2.git", tag = "core-0.1.2" }
|
|
# Extension backends needed by fido-authenticator (FsInfo, Hkdf, etc.)
|
|
trussed-staging = { git = "https://github.com/trussed-dev/trussed-staging.git", tag = "v0.4.0" }
|
|
# Forked lpc55 (host) with the BCD CalVer-minor>999 version fix, used by the cli.
|
|
lpc55 = { git = "https://github.com/0x0ece/lpc55-host", rev = "2a8a24e3df9ab9734f66ed2d7a56bc69101f531c" }
|
|
apdu-dispatch = { git = "https://github.com/0x0ece/apdu-dispatch", rev = "3531b6b" }
|
|
# libcrux-ml-dsa with #[inline(always)] downgraded to #[inline] on the portable
|
|
# path — ~80 KB smaller .text on Cortex-M33 (no perf regression), lets all-apps +
|
|
# ML-DSA-44 fit on the LPC55. Only ml-dsa is patched; sha3/intrinsics unchanged.
|
|
libcrux-ml-dsa = { git = "https://github.com/0x0ece/libcrux", rev = "ee890a77" }
|