diff --git a/firmware2/.cargo/config.toml b/firmware2/.cargo/config.toml index 356f71f..e356a23 100644 --- a/firmware2/.cargo/config.toml +++ b/firmware2/.cargo/config.toml @@ -34,8 +34,6 @@ spectre-api-sys = { path = "../../../rust/spectre-api-sys" } rmk = { path = "../../../rust/rmk/rmk" } xkbcommon = { path = "../../../rust/xkbcommon-rs-ffi" } scrypt = { path = "../../../rust/password-hashes/scrypt" } - -# [patch.crates-io] # esp-backtrace = { path = "../../../rust/esp-hal/esp-backtrace" } # esp-hal = { path = "../../../rust/esp-hal/esp-hal" } # esp-storage = { path = "../../../rust/esp-hal/esp-storage" } diff --git a/firmware2/Cargo.lock b/firmware2/Cargo.lock index 7e6c16f..c8e72f0 100644 --- a/firmware2/Cargo.lock +++ b/firmware2/Cargo.lock @@ -408,7 +408,7 @@ dependencies = [ "num-traits", "pastey", "rayon", - "thiserror 2.0.17", + "thiserror 2.0.18", "v_frame", "y4m", ] @@ -759,9 +759,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.51" +version = "1.2.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" +checksum = "755d2fce177175ffca841e9a06afdb2c4ab0f593d53b4dee48147dfaade85932" dependencies = [ "find-msvc-tools", "jobserver", @@ -807,9 +807,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ "iana-time-zone", "js-sys", @@ -871,7 +871,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -1003,7 +1003,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "tiny-keccak", ] @@ -2083,7 +2083,7 @@ dependencies = [ "paste", "portable-atomic", "rand_core 0.6.4", - "rand_core 0.9.3", + "rand_core 0.9.5", "riscv", "strum", "ufmt-write", @@ -2346,9 +2346,9 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.11" +version = "0.22.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9cdb4b747e485a12abb0e6566612956c7a1bafa3bdb8d682c5b6d403589e48" +checksum = "df61bf483e837f88d5c2291dcf55c67be7e676b3a51acc48db3a7b163b91ed63" dependencies = [ "num-traits", ] @@ -2456,27 +2456,26 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" +checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db" [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", "miniz_oxide", @@ -2737,9 +2736,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", @@ -2824,7 +2823,7 @@ dependencies = [ "gix-validate", "gix-worktree", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2837,7 +2836,7 @@ dependencies = [ "gix-date", "gix-utils", "itoa", - "thiserror 2.0.17", + "thiserror 2.0.18", "winnow", ] @@ -2854,7 +2853,7 @@ dependencies = [ "gix-trace", "kstring", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "unicode-bom", ] @@ -2864,7 +2863,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e150161b8a75b5860521cb876b506879a3376d3adc857ec7a9d35e7c6a5e531" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2873,7 +2872,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c356b3825677cb6ff579551bb8311a81821e184453cbd105e2fc5311b288eeb" dependencies = [ - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2899,7 +2898,7 @@ dependencies = [ "gix-chunk", "gix-hash", "memmap2", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2917,7 +2916,7 @@ dependencies = [ "gix-sec", "memchr", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "unicode-bom", "winnow", ] @@ -2932,7 +2931,7 @@ dependencies = [ "bstr", "gix-path", "libc", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2945,7 +2944,7 @@ dependencies = [ "itoa", "jiff", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2969,7 +2968,7 @@ dependencies = [ "gix-traverse", "gix-worktree", "imara-diff", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -2989,7 +2988,7 @@ dependencies = [ "gix-trace", "gix-utils", "gix-worktree", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3005,7 +3004,7 @@ dependencies = [ "gix-path", "gix-ref", "gix-sec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3023,7 +3022,7 @@ dependencies = [ "once_cell", "parking_lot", "prodash", - "thiserror 2.0.17", + "thiserror 2.0.18", "walkdir", "zlib-rs", ] @@ -3046,7 +3045,7 @@ dependencies = [ "gix-trace", "gix-utils", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3060,7 +3059,7 @@ dependencies = [ "gix-features", "gix-path", "gix-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3084,7 +3083,7 @@ dependencies = [ "faster-hex", "gix-features", "sha1-checked", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3136,7 +3135,7 @@ dependencies = [ "memmap2", "rustix 1.1.3", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3147,7 +3146,7 @@ checksum = "115268ae5e3b3b7bc7fc77260eecee05acca458e45318ca45d35467fa81a3ac5" dependencies = [ "gix-tempfile", "gix-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3167,7 +3166,7 @@ dependencies = [ "gix-validate", "itoa", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "winnow", ] @@ -3189,7 +3188,7 @@ dependencies = [ "gix-quote", "parking_lot", "tempfile", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3207,7 +3206,7 @@ dependencies = [ "gix-path", "memmap2", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", "uluru", ] @@ -3220,7 +3219,7 @@ dependencies = [ "bstr", "faster-hex", "gix-trace", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3232,7 +3231,7 @@ dependencies = [ "bstr", "gix-trace", "gix-validate", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3247,7 +3246,7 @@ dependencies = [ "gix-config-value", "gix-glob", "gix-path", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3265,7 +3264,7 @@ dependencies = [ "gix-transport", "gix-utils", "maybe-async", - "thiserror 2.0.17", + "thiserror 2.0.18", "winnow", ] @@ -3277,7 +3276,7 @@ checksum = "e912ec04b7b1566a85ad486db0cab6b9955e3e32bcd3c3a734542ab3af084c5b" dependencies = [ "bstr", "gix-utils", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3297,7 +3296,7 @@ dependencies = [ "gix-utils", "gix-validate", "memmap2", - "thiserror 2.0.17", + "thiserror 2.0.18", "winnow", ] @@ -3313,7 +3312,7 @@ dependencies = [ "gix-revision", "gix-validate", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3328,7 +3327,7 @@ dependencies = [ "gix-hash", "gix-object", "gix-revwalk", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3343,7 +3342,7 @@ dependencies = [ "gix-hashtable", "gix-object", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3367,7 +3366,7 @@ dependencies = [ "bstr", "gix-hash", "gix-lock", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3390,7 +3389,7 @@ dependencies = [ "gix-pathspec", "gix-worktree", "portable-atomic", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3405,7 +3404,7 @@ dependencies = [ "gix-pathspec", "gix-refspec", "gix-url", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3440,7 +3439,7 @@ dependencies = [ "gix-quote", "gix-sec", "gix-url", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3457,7 +3456,7 @@ dependencies = [ "gix-object", "gix-revwalk", "smallvec", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3470,7 +3469,7 @@ dependencies = [ "gix-features", "gix-path", "percent-encoding", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3491,7 +3490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b1e63a5b516e970a594f870ed4571a8fdcb8a344e7bd407a20db8bd61dbfde4" dependencies = [ "bstr", - "thiserror 2.0.17", + "thiserror 2.0.18", ] [[package]] @@ -3859,7 +3858,7 @@ dependencies = [ "rayon", "resvg", "rowan", - "smol_str 0.3.4", + "smol_str 0.3.5", "strum", "typed-index-collections", "url", @@ -4113,8 +4112,8 @@ dependencies = [ "rayon", "rgb", "tiff", - "zune-core 0.5.0", - "zune-jpeg 0.5.8", + "zune-core 0.5.1", + "zune-jpeg 0.5.11", ] [[package]] @@ -4338,9 +4337,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" dependencies = [ "once_cell", "wasm-bindgen", @@ -4428,9 +4427,9 @@ checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" [[package]] name = "libc" -version = "0.2.179" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5a2d376baa530d1238d133232d15e239abad80d05838b4b59354e5268af431f" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libfuzzer-sys" @@ -4707,7 +4706,7 @@ dependencies = [ "objc2-foundation 0.3.2", "once_cell", "png 0.17.16", - "thiserror 2.0.17", + "thiserror 2.0.18", "windows-sys 0.60.2", ] @@ -4778,7 +4777,6 @@ dependencies = [ "cfg-if", "cfg_aliases", "libc", - "memoffset", ] [[package]] @@ -5786,7 +5784,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -5806,7 +5804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -5817,9 +5815,9 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ "getrandom 0.3.4", ] @@ -5854,7 +5852,7 @@ dependencies = [ "rand 0.9.2", "rand_chacha 0.9.0", "simd_helpers", - "thiserror 2.0.17", + "thiserror 2.0.18", "v_frame", "wasm-bindgen", ] @@ -6262,7 +6260,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6364,9 +6362,9 @@ dependencies = [ [[package]] name = "semihosting" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5669d73a3503b5d34db3359c8c87d1b33ba68b2630c153e340d106c15a8626a7" +checksum = "e896488941756e5de3ee8449495464dbbf2201c85d2d1ace47d4fb81c74b99ec" [[package]] name = "semver" @@ -6732,9 +6730,9 @@ dependencies = [ [[package]] name = "smol_str" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3498b0a27f93ef1402f20eefacfaa1691272ac4eca1cdc8c596cb0a245d6cbf5" +checksum = "0f7a918bd2a9951d18ee6e48f076843e8e73a9a5d22cf05bcd4b7a81bdd04e17" dependencies = [ "borsh", "serde_core", @@ -7002,11 +7000,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.18", ] [[package]] @@ -7022,9 +7020,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -7108,9 +7106,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "0.9.10+spec-1.1.0" +version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "indexmap", "serde_core", @@ -7246,9 +7244,9 @@ dependencies = [ [[package]] name = "typed-index-collections" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5318ee4ce62a4e948a33915574021a7a953d83e84fba6e25c72ffcfd7dad35ff" +checksum = "898160f1dfd383b4e92e17f0512a7d62f3c51c44937b23b6ffc3a1614a8eaccd" dependencies = [ "bincode", "serde", @@ -7643,18 +7641,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" dependencies = [ "cfg-if", "once_cell", @@ -7665,11 +7663,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.56" +version = "0.4.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" +checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" dependencies = [ "cfg-if", + "futures-util", "js-sys", "once_cell", "wasm-bindgen", @@ -7678,9 +7677,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7688,9 +7687,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" dependencies = [ "bumpalo", "proc-macro2", @@ -7701,18 +7700,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.83" +version = "0.3.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" +checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" dependencies = [ "js-sys", "wasm-bindgen", @@ -7957,6 +7956,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.60.2" @@ -8278,9 +8286,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" [[package]] name = "write-fonts" @@ -8458,9 +8466,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.12.0" +version = "5.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" +checksum = "1bfeff997a0aaa3eb20c4652baf788d2dfa6d2839a0ead0b3ff69ce2f9c4bdd1" dependencies = [ "async-broadcast", "async-executor", @@ -8476,8 +8484,9 @@ dependencies = [ "futures-core", "futures-lite", "hex", - "nix", + "libc", "ordered-stream", + "rustix 1.1.3", "serde", "serde_repr", "tracing", @@ -8492,9 +8501,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.12.0" +version = "5.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" +checksum = "0bbd5a90dbe8feee5b13def448427ae314ccd26a49cac47905cafefb9ff846f1" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8507,12 +8516,11 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.2.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" dependencies = [ "serde", - "static_assertions", "winnow", "zvariant", ] @@ -8612,9 +8620,9 @@ checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" [[package]] name = "zmij" -version = "1.0.12" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fc5a66a20078bf1251bde995aa2fdcc4b800c70b5d92dd2c62abc5c60f679f8" +checksum = "dfcd145825aace48cff44a8844de64bf75feec3080e0aa5cdbde72961ae51a65" [[package]] name = "zune-core" @@ -8624,9 +8632,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-core" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" [[package]] name = "zune-inflate" @@ -8648,18 +8656,18 @@ dependencies = [ [[package]] name = "zune-jpeg" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35aee689668bf9bd6f6f3a6c60bb29ba1244b3b43adfd50edd554a371da37d5" +checksum = "2959ca473aae96a14ecedf501d20b3608d2825ba280d5adb57d651721885b0c2" dependencies = [ - "zune-core 0.5.0", + "zune-core 0.5.1", ] [[package]] name = "zvariant" -version = "5.8.0" +version = "5.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" +checksum = "68b64ef4f40c7951337ddc7023dd03528a57a3ce3408ee9da5e948bd29b232c4" dependencies = [ "endi", "enumflags2", @@ -8671,9 +8679,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.8.0" +version = "5.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" +checksum = "484d5d975eb7afb52cc6b929c13d3719a20ad650fea4120e6310de3fc55e415c" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -8684,9 +8692,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.2.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" dependencies = [ "proc-macro2", "quote", diff --git a/firmware2/src/ffi/crypto.rs b/firmware2/src/ffi/crypto.rs index 3484a42..5d4b32a 100644 --- a/firmware2/src/ffi/crypto.rs +++ b/firmware2/src/ffi/crypto.rs @@ -9,12 +9,12 @@ use hmac::{ digest::{FixedOutput, KeyInit, Update}, }; use sha2::{ - Digest, Sha256, + Digest, digest::{consts::U32, generic_array::GenericArray}, }; use spectre_api_sys::{SpectreKeyPurpose, spectre_purpose_scope}; -use crate::{PSRAM_ALLOCATOR, SHA}; +use crate::PSRAM_ALLOCATOR; // Just a way to mark non-null pointers. // Rust's `NonNull` is for mutable pointers only. @@ -29,7 +29,8 @@ unsafe extern "C" fn __spre_crypto_hash_sha256( unsafe { let data_out = &mut *(data_out as *mut GenericArray); let data_in = core::slice::from_raw_parts(data_in, data_in_len as usize); - let mut digest = Sha256::new(); + // TODO: Use SHA peripheral for acceleration + let mut digest = sha2::Sha256::new(); Digest::update(&mut digest, data_in); digest.finalize_into_reset(data_out); } @@ -96,7 +97,18 @@ struct crypto_auth_hmacsha256_state { octx: crypto_hash_sha256_state, } -static HMAC: blocking_mutex::Mutex>>> = +struct UnsafeSend(pub T); + +unsafe impl Send for UnsafeSend {} + +// TODO: The software implementation is currently faster. +// My branch `sha-traits` of `esp-hal` implements the necessary traits +// to make `Sha256Context` work with `SimpleHmac`, but it would likely +// have to be optimized for `Hmac` instead to be faster. +// type HmacImpl = hmac::SimpleHmac; +type HmacImpl = hmac::Hmac; + +static HMAC: blocking_mutex::Mutex>>> = blocking_mutex::Mutex::new(RefCell::new(None)); #[unsafe(no_mangle)] @@ -122,7 +134,9 @@ unsafe extern "C" fn __spre_crypto_auth_hmacsha256_init( panic!("HMAC already initialized. Cannot handle multiple HMAC's at once."); } - *hmac = Some(Hmac::::new_from_slice(key).unwrap()); + // TODO: Implement a lower level `Sha256BlockContext` that would work with `Hmac`. + // This requires the implementation of a few `core_api` traits. + *hmac = Some(UnsafeSend(HmacImpl::new_from_slice(key).unwrap())); }); 0 @@ -138,7 +152,7 @@ unsafe extern "C" fn __spre_crypto_auth_hmacsha256_update( HMAC.lock(|hmac| { let mut hmac = hmac.borrow_mut(); - let hmac = hmac + let UnsafeSend(hmac) = hmac .as_mut() .expect("HMAC must first be initialized before it is updated."); @@ -157,7 +171,7 @@ unsafe extern "C" fn __spre_crypto_auth_hmacsha256_final( HMAC.lock(|hmac| { let mut hmac = hmac.borrow_mut(); - let hmac = hmac + let UnsafeSend(hmac) = hmac .take() .expect("HMAC must first be initialized before it is updated."); diff --git a/firmware2/src/main.rs b/firmware2/src/main.rs index ade440a..cd84d45 100644 --- a/firmware2/src/main.rs +++ b/firmware2/src/main.rs @@ -39,7 +39,7 @@ use esp_hal::lcd_cam::LcdCam; use esp_hal::lcd_cam::lcd::dpi::Dpi; use esp_hal::mcpwm::{McPwm, PeripheralClockConfig}; use esp_hal::psram::{FlashFreq, PsramConfig, PsramSize, SpiRamFreq, SpiTimingConfigCoreClock}; -use esp_hal::sha::Sha; +use esp_hal::sha::{Sha, ShaBackend}; use esp_hal::system::Stack; use esp_hal::timer::timg::TimerGroup; use esp_println::println; @@ -103,9 +103,6 @@ static SIGNAL_LCD_SUBMIT: Signal = Signal::new(); /// Used to signal that the MCU is ready to render the GUI. static SIGNAL_UI_RENDER: Signal = Signal::new(); -pub static SHA: blocking_mutex::Mutex>> = - blocking_mutex::Mutex::new(RefCell::new(None)); - #[esp_rtos::main] async fn main(_spawner: Spawner) { #[cfg(feature = "usb-log")] @@ -188,9 +185,8 @@ async fn main(_spawner: Spawner) { let mut _pwm = McPwm::new(peripherals.MCPWM0, PeripheralClockConfig::with_prescaler(1)); let mut _pwm_pin = Output::new(peripherals.GPIO21, Level::High, OutputConfig::default()); - SHA.lock(|sha| { - *sha.borrow_mut() = Some(Sha::new(peripherals.SHA)); - }); + let mut sha_backend = ShaBackend::new(peripherals.SHA); + let _sha_driver_handle = sha_backend.start(); let timg0 = TimerGroup::new(peripherals.TIMG0); let software_interrupt = SoftwareInterruptControl::new(peripherals.SW_INTERRUPT);