diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..e7336ef0 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,8 @@ +[target.'cfg(all(target_arch = "arm", target_os = "none"))'] +runner = "probe-rs run --chip LPC55S69JBD100" +rustflags = [ + "-C", "linker=flip-link", + "-C", "link-arg=-Tlink.x", + "-C", "link-arg=-Tdefmt.x", + "-Dwarnings", +] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a442de3d..d966c6ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: - board-solo2 # - board-okdoe1 rust: - - stable + - "1.94" defaults: run: working-directory: runners/lpc55 @@ -73,7 +73,7 @@ jobs: path: runners/lpc55/target/thumbv8m.main-none-eabi/release/runner - name: Build Provisioner run: | - cargo build --release --features ${{ matrix.board }},provisioner-app,admin-app,trussed/clients-2,provisioner-app/test-attestation + cargo build --release --features ${{ matrix.board }},provisioner-app,admin-app,provisioner-app/test-attestation - name: Upload Provisioner uses: actions/upload-artifact@v4 continue-on-error: true @@ -91,7 +91,7 @@ jobs: # TODO: some build issue currently # - macos-latest rust: - - stable + - "1.94" defaults: run: working-directory: runners/pc @@ -117,3 +117,36 @@ jobs: override: true - name: Build run: cargo build --release + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Install Linux build dependencies + shell: bash + run: | + apt-get update && apt-get install sudo + sudo apt update -y -qq && sudo apt install -y -qq llvm libc6-dev-i386 libclang-dev build-essential clang + - uses: fiam/arm-none-eabi-gcc@v1.0.4 + with: + release: "9-2020-q2" + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: "1.94" + target: thumbv8m.main-none-eabi + override: true + components: rustfmt, clippy + - name: cargo fmt --check + run: cargo fmt --all --check + - name: cargo clippy (host) + run: cargo clippy --all-targets -- -D warnings + - name: cargo clippy (lpc55, board-lpcxpresso55) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-lpcxpresso55 + - name: cargo clippy (lpc55, board-solo2) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-solo2 + - name: cargo clippy (lpc55, provisioner) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-lpcxpresso55,provisioner-app,admin-app,provisioner-app/test-attestation diff --git a/runners/lpc55/Cargo.lock b/Cargo.lock similarity index 70% rename from runners/lpc55/Cargo.lock rename to Cargo.lock index 1dbdc1f0..a43210b0 100644 --- a/runners/lpc55/Cargo.lock +++ b/Cargo.lock @@ -5,36 +5,44 @@ version = 3 [[package]] name = "admin-app" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d9f4831720ac3f95d708922b71cbec0d085548affb935f4af35395af28366c" +source = "git+https://github.com/Nitrokey/admin-app.git?tag=v0.1.0-nitrokey.21#261c47d791f7862a8fd1b52d485860ff82216478" dependencies = [ - "apdu-dispatch", - "ctaphid-dispatch", + "apdu-app", + "cbor-smol", + "ctaphid-app", "delog", - "iso7816", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.4.1", + "iso7816 0.2.0", + "littlefs2-core", + "serde", + "strum_macros", "trussed", + "trussed-core", + "trussed-manage", ] [[package]] name = "aead" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "generic-array 0.14.9", + "crypto-common", + "generic-array 0.14.7", "heapless 0.7.17", ] [[package]] name = "aes" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures", - "opaque-debug", ] [[package]] @@ -48,11 +56,12 @@ dependencies = [ [[package]] name = "apdu-app" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce391931a2cc4597eaf0d464db9d4d5e1939ccc8dd6eda0f86cda117e914c02d" +checksum = "cfe0bbbf8e3c1034ec9b1d1f9f50ab634e65a8249972f2a34ada1cf115efb0a9" dependencies = [ - "iso7816", + "heapless 0.9.2", + "iso7816 0.2.0", ] [[package]] @@ -63,20 +72,21 @@ checksum = "898c4ae30eeab17a209d5576cf7b312fdbee4d1cb739333c1308908fc841a5fb" dependencies = [ "delog", "heapless 0.7.17", - "interchange", - "iso7816", + "interchange 0.2.2", + "iso7816 0.1.4", ] [[package]] -name = "as-slice" -version = "0.1.5" +name = "apdu-dispatch" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" +checksum = "c3c9f7729cfb0991e556f650a1478e1e8bd8db7fc57ff2dec4a3a67669d406ff" dependencies = [ - "generic-array 0.12.4", - "generic-array 0.13.3", - "generic-array 0.14.9", - "stable_deref_trait", + "apdu-app", + "delog", + "heapless 0.9.2", + "interchange 0.3.2", + "iso7816 0.2.0", ] [[package]] @@ -111,21 +121,20 @@ checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" [[package]] name = "bindgen" -version = "0.56.0" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da379dbebc0b76ef63ca68d8fc6e71c0f13e59432e0987e508c1820e6ab5239" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.11.0", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", + "itertools", "proc-macro2", "quote", "regex", "rustc-hash", - "shlex 0.1.1", + "shlex", + "syn 2.0.117", ] [[package]] @@ -142,9 +151,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" [[package]] name = "block-buffer" @@ -152,24 +161,26 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", ] [[package]] -name = "block-modes" -version = "0.8.1" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "block-padding", - "cipher", + "generic-array 0.14.7", ] [[package]] name = "block-padding" -version = "0.2.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" +dependencies = [ + "generic-array 0.14.7", +] [[package]] name = "board" @@ -178,7 +189,7 @@ dependencies = [ "admin-app", "defmt", "fm11nc08", - "lpc55-hal 0.4.1", + "lpc55-hal", "micromath", "nb 1.1.0", "rtic", @@ -192,15 +203,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "cbor-smol" -version = "0.4.1" +name = "cbc" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f2529cc8240fcc91e8642754ce85e5360c2ee7f4435a76aa150e4ed746a5da4" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" dependencies = [ - "delog", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "serde", + "cipher 0.4.4", ] [[package]] @@ -210,26 +218,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6dd31f7069836e87169bc5910212571b873cebe389c7c7f2d8b1fb3e55c80d" dependencies = [ "delog", - "heapless 0.7.17", - "heapless-bytes 0.3.0", + "heapless 0.9.2", + "heapless-bytes 0.5.0", "serde_core", ] [[package]] name = "cc" -version = "1.2.55" +version = "1.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" dependencies = [ "find-msvc-tools", - "shlex 1.3.0", + "shlex", ] [[package]] name = "cexpr" -version = "0.4.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ "nom", ] @@ -247,21 +255,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f08493fa7707effc63254c66c6ea908675912493cd67952eda23c09fae2610b1" dependencies = [ "cfg-if", - "cipher", + "cipher 0.3.0", "cpufeatures", "rand_core", - "zeroize", +] + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures", ] [[package]] name = "chacha20poly1305" -version = "0.8.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6547abe025f4027edacd9edaa357aded014eecec42a5070d9b885c3c334aba2" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ "aead", - "chacha20", - "cipher", + "chacha20 0.9.1", + "cipher 0.4.4", "poly1305", "zeroize", ] @@ -272,7 +290,18 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", ] [[package]] @@ -301,43 +330,31 @@ dependencies = [ [[package]] name = "cortex-m-rt" -version = "0.6.15" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "454f278bf469e2de0a4d22ea019d169d8944f86957c8207a39e3f66c32be2fc6" +checksum = "801d4dec46b34c299ccf6b036717ae0fce602faa4f4fe816d9013b9a7c9f5ba6" dependencies = [ "cortex-m-rt-macros", - "r0", ] [[package]] name = "cortex-m-rt-macros" -version = "0.6.15" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3aa52243e26f5922fa522b0814019e0c98fc567e2756d715dce7ad7a81f49" +checksum = "e37549a379a9e0e6e576fd208ee60394ccb8be963889eebba3ffe0980364f472" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] name = "cosey" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae70ebe61c8f9b022729efe68ed35d9330631edd39d873de975083deb4c74f8" +checksum = "540d9a2a9f2d35a876fedb35f4c0b51c7a69f71f042252cf34fc159708f962d4" dependencies = [ - "heapless-bytes 0.2.0", - "serde", - "serde_repr", -] - -[[package]] -name = "cosey" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75494895fa1a9713ca725ddf2db084ee84fb0c20938fdd7c89293febe732d30a" -dependencies = [ - "heapless-bytes 0.3.0", + "heapless-bytes 0.5.0", "serde", "serde_repr", ] @@ -359,65 +376,77 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crypto-bigint" -version = "0.2.11" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" +checksum = "8658c15c5d921ddf980f7fe25b1e82f4b7a4083b2c4985fea4922edb8e43e07d" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", "rand_core", "subtle", "zeroize", ] [[package]] -name = "crypto-mac" -version = "0.11.1" +name = "crypto-common" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "generic-array 0.14.9", - "subtle", + "generic-array 0.14.7", + "typenum", ] [[package]] -name = "cstr_core" -version = "0.2.6" +name = "crypto-mac" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd98742e4fdca832d40cab219dc2e3048de17d873248f83f17df47c1bea70956" +checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" dependencies = [ - "cty", - "memchr", + "generic-array 0.14.7", + "subtle", ] [[package]] name = "ctap-types" -version = "0.1.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4fa005ff525537460e1fd70a1ff4f417ae4a6ed14887f3e4720221e20f7562" +checksum = "ab74c7ac39f3bde2a13960ab8257975a35cfcc3d45420ca59b21b55dcbadc6f9" dependencies = [ "bitflags 1.3.2", - "cbor-smol 0.4.1", - "cosey 0.3.2", + "cbor-smol", + "cosey", "delog", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "interchange", - "iso7816", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "iso7816 0.2.0", "serde", "serde-indexed", + "serde_bytes", "serde_repr", ] +[[package]] +name = "ctaphid-app" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc7bdd7194322583c6f3ec411713cb555da3ab9b97414a322639ca4adc728c7" +dependencies = [ + "heapless-bytes 0.5.0", + "trussed-core", +] + [[package]] name = "ctaphid-dispatch" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9e775f67c3a82a134a9e23e0771d3fb3808612ab03843cd31a9b0312004bdde" +checksum = "147f7046a868d513bfa57c04417a585cc9d5de126556cf6814318d5393901b87" dependencies = [ + "ctaphid-app", "delog", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "interchange", + "heapless-bytes 0.5.0", + "interchange 0.3.2", + "ref-swap", + "trussed-core", ] [[package]] @@ -446,7 +475,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -477,16 +506,6 @@ dependencies = [ "log", ] -[[package]] -name = "der" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce93ba4502a73722aa4b955d97f4b1bd26f4f8da74315399ca58fb88fe2bdaae" -dependencies = [ - "der_derive 0.2.2", - "typenum", -] - [[package]] name = "der" version = "0.4.5" @@ -494,19 +513,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" dependencies = [ "crypto-bigint", - "der_derive 0.4.1", -] - -[[package]] -name = "der_derive" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4fbbc8e9e0db3a9068cffa43dcf0e314eb9feff083b7afa6eaa9e698412bb23" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", + "der_derive", ] [[package]] @@ -523,13 +530,11 @@ dependencies = [ [[package]] name = "des" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac41dd49fb554432020d52c875fc290e110113f864c6b1b525cd62c7e7747a5d" +checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" dependencies = [ - "byteorder", - "cipher", - "opaque-debug", + "cipher 0.4.4", ] [[package]] @@ -538,7 +543,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.9", + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", ] [[package]] @@ -547,30 +563,36 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" dependencies = [ - "der 0.4.5", + "der", "elliptic-curve", - "hmac", - "signature", + "hmac 0.11.0", + "signature 1.3.2", ] [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "signature", + "signature 2.2.0", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "elliptic-curve" -version = "0.10.6" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beca177dcb8eb540133e7680baff45e7cc4d93bf22002676cec549f82343721b" +checksum = "83e5c176479da93a0983f0a6fdc3c1b8e7d5be0d7fe3fe05a99f15b96582b9a8" dependencies = [ "crypto-bigint", "ff", - "generic-array 0.14.9", + "generic-array 0.14.7", "group", "rand_core", "subtle", @@ -622,6 +644,19 @@ dependencies = [ "num", ] +[[package]] +name = "encrypted_container" +version = "0.1.0" +source = "git+https://github.com/leetronics/trussed-secrets-app?branch=fix-pin-protection-isolation#30106e147559a72e849aa9ec17690e5167d04f8a" +dependencies = [ + "cbor-smol", + "delog", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "serde", + "trussed-core", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -640,22 +675,27 @@ dependencies = [ [[package]] name = "fido-authenticator" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda469ecf5b58ba898e1a6e68f99529b568e24490f45ced8222240d10d7c6508" +checksum = "5a71f10c27a05873e7020d4c54eb8318236f35c60821b6d65b0a59b9ee8d821c" dependencies = [ - "apdu-dispatch", + "apdu-app", + "cbor-smol", + "cosey", "ctap-types", - "ctaphid-dispatch", + "ctaphid-app", "delog", - "heapless 0.7.17", - "interchange", - "iso7816", - "littlefs2 0.3.2", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "iso7816 0.2.0", + "littlefs2-core", "serde", "serde-indexed", - "serde_cbor", - "trussed", + "serde_bytes", + "sha2 0.10.9", + "trussed-core", + "trussed-fs-info", + "trussed-hkdf", ] [[package]] @@ -675,6 +715,17 @@ dependencies = [ "heapless 0.7.17", ] +[[package]] +name = "flexiber" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0dde85f89d92790f7052d357fa120881128e61431a70558bbc0355cc0a5dca4" +dependencies = [ + "delog", + "flexiber_derive", + "heapless 0.9.2", +] + [[package]] name = "flexiber_derive" version = "0.1.3" @@ -683,7 +734,7 @@ checksum = "e9985657bc39bae5cb7f4e686b46c67b1ea37390d82fe4bab56d7cd1933429d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", "synstructure 0.13.2", ] @@ -709,26 +760,25 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", "futures-task", "pin-project-lite", - "pin-utils", ] [[package]] @@ -739,45 +789,50 @@ checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" [[package]] name = "generator" -version = "0.8.8" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" dependencies = [ "cc", - "cfg-if", "libc", "log", "rustversion", - "windows-link", - "windows-result", + "windows", ] [[package]] -name = "generic-array" -version = "0.12.4" +name = "generator" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" dependencies = [ - "typenum", + "cc", + "cfg-if", + "libc", + "log", + "rustversion", + "windows-link", + "windows-result", ] [[package]] name = "generic-array" -version = "0.13.3" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", + "version_check", ] [[package]] name = "generic-array" -version = "0.14.9" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +checksum = "eaf57c49a95fd1fe24b90b3033bee6dc7e8f1288d51494cb44e627c295e38542" dependencies = [ + "rustversion", "typenum", - "version_check", ] [[package]] @@ -797,21 +852,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "half" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" - -[[package]] -name = "hash32" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" -dependencies = [ - "byteorder", -] - [[package]] name = "hash32" version = "0.2.1" @@ -830,30 +870,12 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -[[package]] -name = "heapless" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422" -dependencies = [ - "as-slice", - "generic-array 0.14.9", - "hash32 0.1.1", - "stable_deref_trait", -] - [[package]] name = "heapless" version = "0.7.17" @@ -885,38 +907,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af2455f757db2b292a9b1768c4b70186d443bcb3b316252d6b540aec1cd89ed" dependencies = [ "hash32 0.3.1", + "serde_core", "stable_deref_trait", ] [[package]] name = "heapless-bytes" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729797499905912c3e4d6d20d5981720da157a27b834531d721905fb8a9b48a" +checksum = "7285eba272c6af3e9f15fb9e1c1b6e7d35aa70580ffe0d47af017e97dfb6f48b" dependencies = [ - "heapless 0.6.1", + "heapless 0.7.17", "serde", "typenum", ] [[package]] name = "heapless-bytes" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7285eba272c6af3e9f15fb9e1c1b6e7d35aa70580ffe0d47af017e97dfb6f48b" +checksum = "774f9dbf3f3a66edc65579e68b9f564ad5ec52e770a755af46b87d40909b8024" dependencies = [ - "heapless 0.7.17", - "serde", - "serde_cbor", - "typenum", + "heapless 0.9.2", + "serde_core", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hex-literal" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac 0.12.1", +] + [[package]] name = "hmac" version = "0.11.0" @@ -924,27 +966,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ "crypto-mac", - "digest", + "digest 0.9.0", ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "autocfg", - "hashbrown 0.12.3", + "digest 0.10.7", ] [[package]] name = "indexmap" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "block-padding", + "generic-array 0.14.7", ] [[package]] @@ -953,6 +1004,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "310d743c23f798f10d5ba2f77fdd3eff06aaf2d8f8b9d78beba7fb1167f4ccbf" +[[package]] +name = "interchange" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc2a6b02f14a47afb0dbccdf96ae4f527ab32b05f78918d9da92e336bcbc222" +dependencies = [ + "loom 0.5.6", +] + [[package]] name = "iso7816" version = "0.1.4" @@ -963,22 +1023,34 @@ dependencies = [ ] [[package]] -name = "lazy_static" -version = "1.5.0" +name = "iso7816" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "4b574e1a9ae668e3167a82fe2c62fe629ca60383da01c6f70acb0fb642d9c55f" +dependencies = [ + "heapless 0.9.2", +] [[package]] -name = "lazycell" -version = "1.3.0" +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.180" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libloading" @@ -992,53 +1064,36 @@ dependencies = [ [[package]] name = "littlefs2" -version = "0.3.2" -dependencies = [ - "bitflags 1.3.2", - "cstr_core", - "cty", - "delog", - "generic-array 0.14.9", - "heapless 0.7.17", - "littlefs2-sys", - "serde", -] - -[[package]] -name = "littlefs2" -version = "0.4.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c72bdf63e7ad35f391e60c48e4c32560038f1d3a0dd97f90a2891ce09160bf" +checksum = "6c8022e5141ceff5b7b12897113f54fc9dac5ad36402c787941c97272b9241eb" dependencies = [ - "bitflags 1.3.2", - "cstr_core", - "cty", + "bitflags 2.11.0", "delog", - "generic-array 0.14.9", - "heapless 0.7.17", + "generic-array 0.14.7", + "heapless 0.9.2", + "littlefs2-core", "littlefs2-sys", - "serde", ] [[package]] name = "littlefs2-core" version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd2d1cad5532f5e11b0fd871b8a981885efd3fdaec0427c0d637322ae09efbf" +source = "git+https://github.com/trussed-dev/littlefs2.git?tag=core-0.1.2#4eec5f2fcd4d9f7d49532b822de012995d695327" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.11.0", + "heapless-bytes 0.5.0", "serde", ] [[package]] name = "littlefs2-sys" -version = "0.1.7" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c25e4f545f6ca5415c6325066260e764674d7893dcf0017a52a2ef456ba915f5" +checksum = "ae112b732df34c1420471e1ff21c562dfdf81219efb5960dd15b3947097e784a" dependencies = [ "bindgen", "cc", - "cty", ] [[package]] @@ -1058,54 +1113,44 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "loom" -version = "0.7.2" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" dependencies = [ "cfg-if", - "generator", - "pin-utils", + "generator 0.7.5", "scoped-tls", "tracing", "tracing-subscriber", ] [[package]] -name = "lpc55-hal" -version = "0.3.1" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e9bba980b3a2de5813c8db696806c59bdb5f57956c8137ebe1e10b2e988a53" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ - "block-buffer", - "cipher", - "cortex-m", - "digest", - "embedded-hal 0.2.7", - "embedded-time", - "generic-array 0.14.9", - "littlefs2 0.4.0", - "lpc55-pac", - "lpc55-rtic", - "nb 1.1.0", - "rand_core", - "usb-device", - "vcell", - "void", + "cfg-if", + "generator 0.8.8", + "pin-utils", + "scoped-tls", + "tracing", + "tracing-subscriber", ] [[package]] name = "lpc55-hal" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ca5d2ad4d3068ed67b8d5b2f59eb64d4194e5d59c096657901c7b09e30069f" +checksum = "41e86e4e491dd3f8e07e7ba6de4aace716459ddefebd05743b2cb67b6a566d3c" dependencies = [ - "block-buffer", - "cipher", + "block-buffer 0.10.4", + "cipher 0.4.4", "cortex-m", - "digest", + "digest 0.10.7", "embedded-hal 0.2.7", "embedded-time", - "generic-array 0.14.9", + "generic-array 1.3.5", "lpc55-pac", "nb 1.1.0", "rand_core", @@ -1116,41 +1161,15 @@ dependencies = [ [[package]] name = "lpc55-pac" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1b5b32d313af526145882f5115a55177f479e9328ca667a84aaaa1ae6d65d3" +checksum = "3a4952baed9d9e7e82a6bbc87333f939b90eb41df3e6c0be5e35d0ec61005f91" dependencies = [ "cortex-m", "cortex-m-rt", "vcell", ] -[[package]] -name = "lpc55-rtic" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4472b3ed70fa24afef24fa55fd0ebd77fbc781a4c649bb48ca6b1b9fa6b90073" -dependencies = [ - "cortex-m", - "cortex-m-rt", - "heapless 0.6.1", - "lpc55-rtic-macros", - "rtic-core 0.3.1", - "version_check", -] - -[[package]] -name = "lpc55-rtic-macros" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4958d6458bf70ef0789830bb2ed28e9a8d95d500e7cad2b1e9bd3a3169c680" -dependencies = [ - "proc-macro2", - "quote", - "rtic-syntax", - "syn 1.0.109", -] - [[package]] name = "matchers" version = "0.2.0" @@ -1162,20 +1181,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" - -[[package]] -name = "micro-ecc-sys" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b861c7e7eba25ec3fe0fde221a46bf38bd1ad200a5404b6f7e45c99b74a00fa" -dependencies = [ - "bindgen", - "cc", - "cty", -] +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "micromath" @@ -1183,6 +1191,12 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "nb" version = "0.1.3" @@ -1202,45 +1216,32 @@ checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" name = "ndef-app" version = "0.1.0" dependencies = [ - "apdu-dispatch", - "heapless 0.7.17", - "iso7816", + "apdu-dispatch 0.4.0", + "heapless 0.9.2", + "iso7816 0.2.0", ] [[package]] name = "nfc-device" version = "0.0.1" dependencies = [ - "apdu-dispatch", + "apdu-dispatch 0.4.0", "defmt", "embedded-time", - "heapless 0.7.17", - "interchange", - "iso7816", + "heapless 0.9.2", + "interchange 0.3.2", + "iso7816 0.2.0", "nb 1.1.0", ] -[[package]] -name = "nisty" -version = "0.1.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a50765b4bf261cc343bc5eede18fcd48d1fbe0e5e9352f43a9d0423ddae3ef30" -dependencies = [ - "cosey 0.2.0", - "der 0.2.10", - "heapless-bytes 0.2.0", - "micro-ecc-sys", - "sha2", -] - [[package]] name = "nom" -version = "5.1.3" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", - "version_check", + "minimal-lexical", ] [[package]] @@ -1320,23 +1321,23 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11470bb97635a0d1943211c7b9cd473ecee002342480e8fc7347beba27f38243" dependencies = [ - "apdu-dispatch", + "apdu-dispatch 0.1.2", "delog", - "flexiber", + "flexiber 0.1.3", "heapless 0.7.17", "heapless-bytes 0.3.0", - "hex-literal", - "interchange", - "iso7816", + "hex-literal 0.3.4", + "interchange 0.2.2", + "iso7816 0.1.4", "serde", "trussed", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "opaque-debug" @@ -1344,6 +1345,31 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "opcard" +version = "1.7.0" +source = "git+https://github.com/Nitrokey/opcard-rs?tag=v1.7.0#2b94d6aa0d1d533e01997b61332b229247e41c49" +dependencies = [ + "apdu-app", + "bitflags 2.11.0", + "cbor-smol", + "cfg-if", + "delog", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.4.1", + "iso7816 0.2.0", + "littlefs2-core", + "log", + "serde", + "serde_repr", + "subtle", + "trussed-auth", + "trussed-chunked", + "trussed-core", + "trussed-wrap-key-to-file", +] + [[package]] name = "p256" version = "0.9.0" @@ -1352,7 +1378,7 @@ checksum = "d053368e1bae4c8a672953397bd1bd7183dde1c72b0b7612a15719173148d186" dependencies = [ "ecdsa", "elliptic-curve", - "sha2", + "sha2 0.9.9", ] [[package]] @@ -1361,13 +1387,13 @@ version = "0.1.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "647353e42d97cbbc7018cb27c0258a7f5ec1db69a0ac336bd954f468a66af38a" dependencies = [ - "der 0.4.5", + "der", "ecdsa", "elliptic-curve", "p256", "p256-cortex-m4-sys", "rand_core", - "sha2", + "sha2 0.9.9", "zeroize", ] @@ -1387,17 +1413,11 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a513e167849a384b7f9b746e517604398518590a9142f4846a32e3c2a4de7b11" -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -1407,17 +1427,17 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piv-authenticator" -version = "0.5.3" -source = "git+https://github.com/solokeys/piv-authenticator#a4a4204e7089a6a5a99907877576cc40c75825ab" +version = "0.6.0" +source = "git+https://github.com/trussed-dev/piv-authenticator?tag=v0.6.0#be6918199642d53ae1af75f181e0b5577449d7a2" dependencies = [ "apdu-app", - "cbor-smol 0.5.1", + "cbor-smol", "cfg-if", - "flexiber", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "hex-literal", - "iso7816", + "flexiber 0.2.0", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.3.4", + "iso7816 0.2.0", "littlefs2-core", "log", "serde", @@ -1432,9 +1452,9 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", "opaque-debug", @@ -1464,6 +1484,15 @@ version = "0.1.5-pre" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c68cb38ed13fd7bc9dd5db8f165b7c8d9c1a315104083a2b10f11354c2af97f" +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -1483,7 +1512,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -1499,31 +1528,35 @@ dependencies = [ name = "provisioner-app" version = "0.1.0" dependencies = [ - "apdu-dispatch", + "apdu-dispatch 0.4.0", "defmt", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "littlefs2 0.3.2", - "lpc55-hal 0.3.1", - "nisty", + "heapless 0.9.2", + "iso7816 0.2.0", + "littlefs2", + "lpc55-hal", + "p256", "salty", "trussed", ] [[package]] name = "quote" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] [[package]] -name = "r0" -version = "0.2.2" +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] [[package]] name = "rand_core" @@ -1531,11 +1564,17 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +[[package]] +name = "ref-swap" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c30c54dffee5b40af088d5d50aa3455c91a0127164b51f0215efc4cb28fb3c" + [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -1545,9 +1584,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -1556,9 +1595,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "rtic" @@ -1570,7 +1609,7 @@ dependencies = [ "cortex-m", "critical-section", "portable-atomic", - "rtic-core 1.0.0", + "rtic-core", "rtic-macros", ] @@ -1584,12 +1623,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "rtic-core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd58a6949de8ff797a346a28d9f13f7b8f54fa61bb5e3cb0985a4efb497a5ef" - [[package]] name = "rtic-core" version = "1.0.0" @@ -1602,11 +1635,11 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f387b12bd6c01d2c9d4776dddeefaf0ae51b9497c83c0186b1693f6821ff3c4a" dependencies = [ - "indexmap 2.13.0", + "indexmap", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -1639,22 +1672,11 @@ dependencies = [ "embedded-hal-async", "embedded-hal-bus", "heapless 0.8.0", - "loom", + "loom 0.7.2", "portable-atomic", "rtic-common", ] -[[package]] -name = "rtic-syntax" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8152fcaa845720d61e6cc570548b89144c2c307f18a480bbd97e55e9f6eeff04" -dependencies = [ - "indexmap 1.9.3", - "proc-macro2", - "syn 1.0.109", -] - [[package]] name = "rtic-time" version = "2.0.1" @@ -1671,10 +1693,10 @@ dependencies = [ [[package]] name = "runner" -version = "2.964.0" +version = "2.2281.0" dependencies = [ "admin-app", - "apdu-dispatch", + "apdu-dispatch 0.4.0", "board", "cortex-m", "ctap-types", @@ -1685,21 +1707,34 @@ dependencies = [ "fido-authenticator", "fm11nc08", "heapless 0.9.2", - "interchange", - "littlefs2 0.3.2", + "interchange 0.3.2", + "littlefs2", "nb 1.1.0", "ndef-app", "nfc-device", "oath-authenticator", + "opcard", "panic-halt", "piv-authenticator", "provisioner-app", + "ref-swap", "rtic", "rtic-monotonics", "rtic-sync", + "secrets-app", "static_cell", "systick-monotonic", "trussed", + "trussed-auth", + "trussed-auth-backend", + "trussed-chunked", + "trussed-core", + "trussed-fs-info", + "trussed-hkdf", + "trussed-hpke", + "trussed-manage", + "trussed-staging", + "trussed-wrap-key-to-file", "usb-device", "usbd-ccid", "usbd-ctaphid", @@ -1738,11 +1773,10 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "salty" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77cdd38ed8bfe51e53ee991aae0791b94349d0a05cfdecd283835a8a965d4c37" +checksum = "b947325a585e90733e0e9ec097228f40b637cc346f9bd68f84d5c6297d0fcfef" dependencies = [ - "cosey 0.3.2", "ed25519", "subtle", "zeroize", @@ -1760,6 +1794,29 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "secrets-app" +version = "0.15.0" +source = "git+https://github.com/leetronics/trussed-secrets-app?branch=fix-pin-protection-isolation#30106e147559a72e849aa9ec17690e5167d04f8a" +dependencies = [ + "apdu-app", + "bitflags 2.11.0", + "block-padding", + "cbor-smol", + "ctaphid-app", + "delog", + "encrypted_container", + "flexiber 0.2.0", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.3.4", + "iso7816 0.2.0", + "littlefs2-core", + "serde", + "trussed-auth", + "trussed-core", +] + [[package]] name = "semver" version = "0.9.0" @@ -1808,17 +1865,17 @@ checksum = "fca2da10b1f1623f47130256065e05e94fd7a98dbd26a780a4c5de831b21e5c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] -name = "serde_cbor" -version = "0.11.2" +name = "serde_bytes" +version = "0.11.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" dependencies = [ - "half", "serde", + "serde_core", ] [[package]] @@ -1838,7 +1895,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -1849,20 +1906,18 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] name = "sha-1" -version = "0.9.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ - "block-buffer", "cfg-if", "cpufeatures", - "digest", - "opaque-debug", + "digest 0.10.7", ] [[package]] @@ -1871,13 +1926,24 @@ version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest", + "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -1887,12 +1953,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shlex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" - [[package]] name = "shlex" version = "1.3.0" @@ -1905,16 +1965,47 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" dependencies = [ - "digest", + "digest 0.9.0", "rand_core", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + [[package]] name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +[[package]] +name = "solo-pc" +version = "2.2281.0" +dependencies = [ + "admin-app", + "apdu-dispatch 0.4.0", + "chacha20 0.7.3", + "ctap-types", + "ctaphid-dispatch", + "delog", + "embedded-hal 0.2.7", + "fido-authenticator", + "generic-array 0.14.7", + "interchange 0.3.2", + "littlefs2", + "nb 1.1.0", + "ndef-app", + "nfc-device", + "piv-authenticator", + "trussed", + "trussed-core", + "usbd-ccid", + "usbd-ctaphid", +] + [[package]] name = "spin" version = "0.9.8" @@ -1939,11 +2030,24 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.117", +] + [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -1958,9 +2062,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.114" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -1987,7 +2091,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2018,7 +2122,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] [[package]] @@ -2037,9 +2141,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "tracing-core" version = "0.1.36" @@ -2063,9 +2179,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", @@ -2082,55 +2198,74 @@ dependencies = [ [[package]] name = "trussed" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7173399ed80afefa978da6c601d9712d1de03f7c6e2b9d4630addfcc0598f5e" +source = "git+https://github.com/trussed-dev/trussed.git?rev=0f8df68be879acdde1f8cf428c11e5d29692a47b#0f8df68be879acdde1f8cf428c11e5d29692a47b" dependencies = [ "aes", - "bitflags 1.3.2", - "block-modes", - "cbor-smol 0.4.1", + "bitflags 2.11.0", + "cbc", + "cbor-smol", "cfg-if", - "chacha20", + "chacha20 0.9.1", "chacha20poly1305", - "cosey 0.3.2", + "cosey", "delog", "des", - "embedded-hal 0.2.7", - "flexiber", - "generic-array 0.14.9", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "hex-literal", - "hmac", - "interchange", - "littlefs2 0.3.2", + "flexiber 0.2.0", + "generic-array 0.14.7", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.4.1", + "hmac 0.12.1", + "interchange 0.3.2", + "littlefs2", + "littlefs2-core", "nb 1.1.0", "p256-cortex-m4", "postcard", + "rand_chacha", "rand_core", "salty", "serde", - "serde-indexed", "sha-1", - "sha2", + "sha2 0.10.9", + "trussed-core", "zeroize", ] [[package]] name = "trussed-auth" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3110004319491b9210f50c3653a574d354e27a3de73ae5a3dfc2e686027702e7" +checksum = "36b4123667b5c36495d1f650732338c64fd645d9a9f27cada941d5f00ce2b631" +dependencies = [ + "serde", + "trussed-core", +] + +[[package]] +name = "trussed-auth-backend" +version = "0.1.0" +source = "git+https://github.com/trussed-dev/trussed-auth?tag=backend-v0.1.0#faeb596778be5739afc86c34e45634f57f0f28ff" dependencies = [ + "chacha20poly1305", + "hkdf", + "hmac 0.12.1", + "littlefs2-core", + "rand_core", "serde", + "serde-byte-array", + "sha2 0.10.9", + "subtle", + "trussed", + "trussed-auth", "trussed-core", ] [[package]] name = "trussed-chunked" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9268d9d812440965ce31684e0115ceafa2636b7a8cc04dc117594567c53ff75e" +checksum = "5773ec78597cb55f609c45ce1cf9566cd20d4749aba53a9a9408a47707289ff3" dependencies = [ "serde", "serde-byte-array", @@ -2139,11 +2274,11 @@ dependencies = [ [[package]] name = "trussed-core" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afddad280ae8a5235e1b06408cca909ce9454cdd89f941b94b024c580732b3ce" +checksum = "3ac4d4507be66aa1a5ba6921bed58d37af1e0118772e0a4955df58aa3cb4f5e8" dependencies = [ - "heapless-bytes 0.3.0", + "heapless-bytes 0.5.0", "littlefs2-core", "postcard", "rand_core", @@ -2151,22 +2286,82 @@ dependencies = [ "serde-indexed", ] +[[package]] +name = "trussed-fs-info" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f29e12a051798fc37e531379862a23ac62a1ca38e2357684cd04fc69dc4f1d9" +dependencies = [ + "serde", + "serde-byte-array", + "trussed-core", +] + +[[package]] +name = "trussed-hkdf" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31644e234cbfa703017f13d98b643851d814c45f90d969ce0bbbb3cb28879edc" +dependencies = [ + "serde", + "trussed-core", +] + [[package]] name = "trussed-hpke" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d382b3bb98a71862e7db71437204d3e9f1542e42d30c1f18515ba07db4d970a" +checksum = "eb285be4d1ddc4a69c81481fb2148e9f68c4153c6c2e9a3bfd234ab37c225601" dependencies = [ "serde", "serde-byte-array", "trussed-core", ] +[[package]] +name = "trussed-manage" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfab5a172be33bcbbdb7362842a887f84bb594af6f3ccd248739673f1e890c42" +dependencies = [ + "littlefs2-core", + "serde", + "trussed-core", +] + +[[package]] +name = "trussed-staging" +version = "0.4.0" +source = "git+https://github.com/trussed-dev/trussed-staging.git?tag=v0.4.0#bda6a9afec4f3ceeaf096002f95126653066615e" +dependencies = [ + "aead", + "chacha20poly1305", + "delog", + "digest 0.10.7", + "heapless 0.9.2", + "heapless-bytes 0.5.0", + "hex-literal 0.4.1", + "hkdf", + "littlefs2-core", + "rand_core", + "salty", + "serde", + "serde-byte-array", + "sha2 0.10.9", + "trussed", + "trussed-chunked", + "trussed-fs-info", + "trussed-hkdf", + "trussed-hpke", + "trussed-manage", + "trussed-wrap-key-to-file", +] + [[package]] name = "trussed-wrap-key-to-file" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b923d89f632ac2b62af4193844f1afb6d0fe4e31af8a1a85053a328da1f512d7" +checksum = "ee53579ffe7d100a84a53ae29240552fa83a5686969db73c4f74cf13a23b00de" dependencies = [ "serde", "trussed-core", @@ -2180,9 +2375,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-xid" @@ -2192,11 +2387,11 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "universal-hash" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "generic-array 0.14.9", + "crypto-common", "subtle", ] @@ -2214,32 +2409,31 @@ checksum = "1f6cc3adc849b5292b4075fc0d5fdcf2f24866e88e336dd27a8943090a520508" [[package]] name = "usbd-ccid" -version = "0.1.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2bbc1b6619517411ddd8f94a84c093f710d740895644bdafd70c0fe90b31839" +checksum = "8acbc8d41fe1b6dc92347f5988a44252fc9e2511f7cb312fa23e9eee186bfdd3" dependencies = [ "delog", "embedded-time", - "heapless 0.7.17", - "interchange", - "iso7816", + "heapless 0.9.2", + "interchange 0.3.2", "usb-device", ] [[package]] name = "usbd-ctaphid" -version = "0.1.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb69f660f962236eb21565780c433412ad0ba35e5106f53191cdf443c1d03d2" +checksum = "c527a4840bcb38299924c7a6b0c31f95a89172bdfb4577c515315ce9b097f15a" dependencies = [ - "ctap-types", "ctaphid-dispatch", "delog", "embedded-time", - "heapless 0.7.17", - "heapless-bytes 0.3.0", - "interchange", + "heapless-bytes 0.5.0", + "interchange 0.3.2", + "ref-swap", "serde", + "trussed-core", "usb-device", ] @@ -2287,6 +2481,15 @@ dependencies = [ "vcell", ] +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -2311,11 +2514,88 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "zeroize" -version = "1.3.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -2328,5 +2608,5 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.114", + "syn 2.0.117", ] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..66a97d70 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,120 @@ +[workspace] +members = [ + "runners/lpc55", + "runners/lpc55/board", + "runners/pc", + "components/ndef-app", + "components/nfc-device", + "components/fm11nc08", + "components/provisioner-app", +] +# Host-buildable members only. The lpc55 runner/board, fm11nc08, and +# provisioner-app (via lpc55-hal) / nfc-device (via embedded deps) all require an +# ARM target and can't link on the host, so they're excluded from default +# commands like `cargo test`. +default-members = [ + "runners/pc", + "components/ndef-app", +] +resolver = "2" + +[workspace.package] +version = "2.2281.0" +edition = "2021" +authors = [ + "Nicolas Stalder ", + "Conor Patrick ", + "Manuel Domke ", +] + +[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" } +provisioner-app = { path = "components/provisioner-app" } + +# ── 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"] } + +# ── 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" + +# ── USB ─────────────────────────────────────────────────────────────────────── +usb-device = "0.2.3" +usbd-serial = "0.1.0" +usbd-ccid = "0.4" +usbd-ctaphid = { version = "0.4", features = ["log-info"] } + +# ── APDU / ISO 7816 stack ───────────────────────────────────────────────────── +apdu-dispatch = "0.4" +ctaphid-dispatch = "0.4" +ctap-types = "0.5" +iso7816 = "0.2" + +# ── Storage ─────────────────────────────────────────────────────────────────── +littlefs2 = { version = "0.7", features = ["c-stubs"] } + +# ── Trussed core ───────────────────────────────────────────────────────────── +trussed = "0.1" +trussed-core = "0.2" + +# ── 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.3", features = ["dispatch"] } +oath-authenticator = { version = "0.1", features = ["apdu-dispatch"] } +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/trussed-dev/piv-authenticator", tag = "v0.6.0", features = ["apdu-dispatch"] } +opcard = { git = "https://github.com/Nitrokey/opcard-rs", tag = "v1.7.0", features = ["apdu-dispatch", "delog"] } + +# ── Release profile ─────────────────────────────────────────────────────────── +[profile.release] +codegen-units = 1 +lto = true +opt-level = "z" +incremental = false +debug = true + +[profile.release.package.salty] +opt-level = 2 + +# ── Patches ─────────────────────────────────────────────────────────────────── +[patch.crates-io] +trussed = { git = "https://github.com/trussed-dev/trussed.git", rev = "0f8df68be879acdde1f8cf428c11e5d29692a47b" } +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" } diff --git a/components/fm11nc08/Cargo.toml b/components/fm11nc08/Cargo.toml index d907071a..5fbd14e1 100644 --- a/components/fm11nc08/Cargo.toml +++ b/components/fm11nc08/Cargo.toml @@ -1,14 +1,12 @@ [package] name = "fm11nc08" version = "0.1.0" -authors = ["Conor Patrick ", "Nicolas Stalder "] +authors.workspace = true edition = "2024" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] -defmt = "1.0.1" -embedded-time = "0.12" -embedded-hal = { version = "0.2.5", features = ["unproven"] } -nb = "1" -nfc-device = {path = "../nfc-device"} +defmt .workspace = true +embedded-time .workspace = true +embedded-hal .workspace = true +nb .workspace = true +nfc-device .workspace = true diff --git a/components/fm11nc08/src/device.rs b/components/fm11nc08/src/device.rs index 73aba778..b08e13bc 100644 --- a/components/fm11nc08/src/device.rs +++ b/components/fm11nc08/src/device.rs @@ -1,13 +1,13 @@ use nb::block; -use embedded_time::duration::{Extensions, Microseconds}; use embedded_hal as hal; +use embedded_time::duration::{Extensions, Microseconds}; use defmt::info; use hal::{ - spi::FullDuplex, digital::v2::{InputPin, OutputPin}, + spi::FullDuplex, timer::CountDown, }; @@ -61,19 +61,15 @@ pub enum FifoInterrupt { WaterLevel = 1 << 3, } - - macro_rules! FM11_CMD { ($mode:expr, $addr:expr) => { match $mode { - Mode::WriteEeprom | Mode::ReadEeprom=> { - (( ($mode as u8) & 0x07) << 5) | (((($addr as u16) & 0x300) >> 8) as u8) - } - _ => { - (( ($mode as u8) & 0x07) << 5) | (($addr as u8) & 0x0f) + Mode::WriteEeprom | Mode::ReadEeprom => { + ((($mode as u8) & 0x07) << 5) | (((($addr as u16) & 0x300) >> 8) as u8) } + _ => ((($mode as u8) & 0x07) << 5) | (($addr as u8) & 0x0f), } - } + }; } pub struct Configuration { @@ -89,7 +85,7 @@ pub struct Configuration { pub nfc: u8, } -pub struct FM11NC08 +pub struct FM11NC08 where SPI: FullDuplex, CS: OutputPin, @@ -117,8 +113,7 @@ fn fsdi_to_frame_size(fsdi: u8) -> usize { } } - -impl FM11NC08 +impl FM11NC08 where SPI: FullDuplex, CS: OutputPin, @@ -126,9 +121,9 @@ where { pub fn new(spi: SPI, cs: CS, int: INT) -> Self { Self { - spi: spi, - cs: cs, - int: int, + spi, + cs, + int, packet: [0u8; 256], offset: 0usize, current_frame_size: 128, @@ -138,11 +133,11 @@ where pub fn write_reg(&mut self, addr: Register, data: u8) { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Write, addr)) ).ok(); - block!( self.spi.send(data) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Write, addr))).ok(); + block!(self.spi.send(data)).ok(); - block!( self.spi.read() ).ok(); - block!( self.spi.read() ).ok(); + block!(self.spi.read()).ok(); + block!(self.spi.read()).ok(); self.cs.set_high().ok(); } @@ -150,11 +145,11 @@ where pub fn read_reg(&mut self, addr: Register) -> u8 { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Read, addr)) ).ok(); - block!( self.spi.send(0) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Read, addr))).ok(); + block!(self.spi.send(0)).ok(); - block!( self.spi.read() ).ok(); - let data = block!( self.spi.read() ).ok().unwrap(); + block!(self.spi.read()).ok(); + let data = block!(self.spi.read()).ok().unwrap(); self.cs.set_high().ok(); @@ -164,45 +159,47 @@ where pub fn read_reg_raw(&mut self, addr: u8) -> u8 { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Read, addr)) ).ok(); - block!( self.spi.send(0) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Read, addr))).ok(); + block!(self.spi.send(0)).ok(); - block!( self.spi.read() ).ok(); - let data = block!( self.spi.read() ).ok().unwrap(); + block!(self.spi.read()).ok(); + let data = block!(self.spi.read()).ok().unwrap(); self.cs.set_high().ok(); data } - - - fn start_write(&mut self, addr: u16){ - - let cmd : u8 = FM11_CMD!(Mode::WriteEeprom, addr); + fn start_write(&mut self, addr: u16) { + let cmd: u8 = FM11_CMD!(Mode::WriteEeprom, addr); self.cs.set_low().ok(); // Write EEPROM magic enable sequence - block!( self.spi.send( 0b11001110u8 )).ok(); - block!( self.spi.send( 0b01010101u8 )).ok(); + block!(self.spi.send(0b11001110u8)).ok(); + block!(self.spi.send(0b01010101u8)).ok(); - for _ in 0 .. 2 { block!( self.spi.read( )).ok().unwrap(); } + for _ in 0..2 { + block!(self.spi.read()).ok().unwrap(); + } self.cs.set_high().ok(); self.cs.set_low().ok(); - block!( self.spi.send( cmd )).ok(); - block!( self.spi.send( addr as u8)).ok(); + block!(self.spi.send(cmd)).ok(); + block!(self.spi.send(addr as u8)).ok(); - for _ in 0 .. 2 { block!( self.spi.read( )).ok().unwrap(); } + for _ in 0..2 { + block!(self.spi.read()).ok().unwrap(); + } } - fn end_write(&mut self, timer: &mut impl CountDown) -> Result<(),()> { + fn end_write(&mut self, timer: &mut impl CountDown