SHA HW accel attempts

This commit is contained in:
Jakub Hlusička 2026-01-21 02:21:52 +01:00
parent a5a5ee9330
commit 47e6c890ca
4 changed files with 153 additions and 137 deletions

View file

@ -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" }

250
firmware2/Cargo.lock generated
View file

@ -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",

View file

@ -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<u8, U32>);
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<CriticalSectionRawMutex, RefCell<Option<Hmac<Sha256>>>> =
struct UnsafeSend<T>(pub T);
unsafe impl<T> Send for UnsafeSend<T> {}
// 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<esp_hal::sha::Sha256Context>;
type HmacImpl = hmac::Hmac<sha2::Sha256>;
static HMAC: blocking_mutex::Mutex<CriticalSectionRawMutex, RefCell<Option<UnsafeSend<HmacImpl>>>> =
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::<Sha256>::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.");

View file

@ -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<CriticalSectionRawMutex, ()> = Signal::new();
/// Used to signal that the MCU is ready to render the GUI.
static SIGNAL_UI_RENDER: Signal<CriticalSectionRawMutex, ()> = Signal::new();
pub static SHA: blocking_mutex::Mutex<CriticalSectionRawMutex, RefCell<Option<Sha>>> =
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);