From 4ffc0e24ddb42fe916c1cc5dc566365ae4cf69cf Mon Sep 17 00:00:00 2001 From: Wiktor Kwapisiewicz <wiktor@metacode.biz> Date: Fri, 7 Mar 2025 11:58:05 +0100 Subject: [PATCH] fix(deps): upgrade rpgp Signed-off-by: Wiktor Kwapisiewicz <wiktor@metacode.biz> --- Cargo.lock | 713 ++++++++++++++++++++++++++---------------- Cargo.toml | 1 + nethsm/Cargo.toml | 3 +- nethsm/src/lib.rs | 8 +- nethsm/src/openpgp.rs | 375 +++++++++++----------- 5 files changed, 631 insertions(+), 469 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8b36fb5..5e417e6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,6 +23,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ + "bytes", "crypto-common 0.1.6", "generic-array", ] @@ -126,19 +127,20 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" [[package]] name = "argon2" @@ -167,9 +169,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-lc-rs" -version = "1.12.4" +version = "1.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd755adf9707cf671e31d944a189be3deaaeee11c8bc1d669bb8022ac90fbd0" +checksum = "5e4e8200b9a4a5801a769d50eeabc05670fec7e959a8cb7a63a93e4e519942ae" dependencies = [ "aws-lc-sys", "paste", @@ -253,16 +255,31 @@ dependencies = [ ] [[package]] -name = "bitfield" -version = "0.17.0" +name = "bitfields" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f798d2d157e547aa99aab0967df39edd0b70307312b6f8bd2848e6abe40896e0" +checksum = "a1d84268bbf9b487d31fe4b849edbefcd3911422d7a07de855a2da1f70ab3d1c" +dependencies = [ + "bitfields-impl", +] + +[[package]] +name = "bitfields-impl" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c93edde7bb4416c35c85048e34f78999dcb47d199bde3b1d79286156f3e2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "thiserror 2.0.12", +] [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "blake2" @@ -284,9 +301,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.11.0-rc.3" +version = "0.11.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" +checksum = "a229bfd78e4827c91b9b95784f69492c1b77c1ab75a45a8a037b139215086f94" dependencies = [ "hybrid-array", ] @@ -310,16 +327,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "bstr" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "buffer-redux" version = "1.0.2" @@ -331,9 +338,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -343,9 +350,39 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "bytes-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" +dependencies = [ + "bytes", + "either", +] + +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", + "libbz2-rs-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] [[package]] name = "camellia" @@ -399,9 +436,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.4" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", @@ -440,16 +477,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -475,9 +512,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" dependencies = [ "clap_builder", "clap_derive", @@ -485,9 +522,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" dependencies = [ "anstream", "anstyle", @@ -497,9 +534,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", @@ -559,9 +596,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const-oid" -version = "0.10.0-rc.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" +checksum = "1cb3c4a0d3776f7535c32793be81d6d5fec0d48ac70955d9834e643aa249a52f" [[package]] name = "core-foundation" @@ -591,9 +628,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -615,9 +652,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -634,9 +671,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-bigint" @@ -645,7 +682,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -657,19 +694,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] [[package]] name = "crypto-common" -version = "0.2.0-rc.1" +version = "0.2.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" +checksum = "170d71b5b14dec99db7739f6fc7d6ec2db80b78c3acb77db48392ccc3d8a9ea0" dependencies = [ - "getrandom 0.2.15", "hybrid-array", - "rand_core", ] [[package]] @@ -800,7 +835,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -815,6 +859,18 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + [[package]] name = "des" version = "0.8.1" @@ -838,13 +894,13 @@ dependencies = [ [[package]] name = "digest" -version = "0.11.0-pre.9" +version = "0.11.0-pre.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" +checksum = "6c478574b20020306f98d61c8ca3322d762e1ff08117422ac6106438605ea516" dependencies = [ - "block-buffer 0.11.0-rc.3", - "const-oid 0.10.0-rc.3", - "crypto-common 0.2.0-rc.1", + "block-buffer 0.11.0-rc.4", + "const-oid 0.10.0", + "crypto-common 0.2.0-rc.2", ] [[package]] @@ -967,7 +1023,7 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "rand_core", + "rand_core 0.6.4", "serde", "sha2 0.10.8", "subtle", @@ -976,9 +1032,9 @@ dependencies = [ [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -995,7 +1051,7 @@ dependencies = [ "hkdf", "pem-rfc7468", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -1021,9 +1077,9 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -1065,7 +1121,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1077,9 +1133,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" dependencies = [ "crc32fast", "miniz_oxide", @@ -1197,10 +1253,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -1233,9 +1287,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "group" @@ -1244,15 +1298,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "h2" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" dependencies = [ "atomic-waker", "bytes", @@ -1351,24 +1405,24 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hybrid-array" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" +checksum = "4dab50e193aebe510fe0e40230145820e02f48dae0cf339ea4204e6e708ff7bd" dependencies = [ "typenum", ] [[package]] name = "hyper" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -1386,9 +1440,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http", @@ -1615,9 +1669,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown", @@ -1625,18 +1679,18 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "ipnetwork" @@ -1653,12 +1707,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "iter-read" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071ed4cc1afd86650602c7b11aa2e1ce30762a1c27193201cb5cee9c6ebb1294" - [[package]] name = "itertools" version = "0.12.1" @@ -1670,9 +1718,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" @@ -1685,9 +1733,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -1731,11 +1779,17 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "libbz2-rs-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0864a00c8d019e36216b69c2c4ce50b83b7bd966add3cf5ba554ec44f8bebcf5" + [[package]] name = "libc" -version = "0.2.168" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libloading" @@ -1765,21 +1819,27 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "log" -version = "0.4.22" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "md-5" @@ -1821,9 +1881,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" dependencies = [ "adler2", ] @@ -1848,15 +1908,15 @@ dependencies = [ "log", "mime", "mime_guess", - "rand", + "rand 0.8.5", "tempfile", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -1875,6 +1935,7 @@ version = "0.7.3" dependencies = [ "base64ct", "chrono", + "digest 0.10.7", "ed25519-dalek", "email_address", "hex", @@ -1890,7 +1951,7 @@ dependencies = [ "pgp", "picky-asn1-der", "picky-asn1-x509", - "rand", + "rand 0.8.5", "rsa", "rstest", "rustainers", @@ -1900,11 +1961,11 @@ dependencies = [ "serde", "serde_json", "sha1", - "sha2 0.11.0-pre.4", + "sha2 0.11.0-pre.5", "strum", "testdir", "testresult", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "ureq", "url", @@ -1923,7 +1984,7 @@ dependencies = [ "scrypt", "testdir", "testresult", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -1937,13 +1998,13 @@ dependencies = [ "nethsm", "nethsm-backup", "nethsm-config", - "rand", + "rand 0.8.5", "rstest", "signstar-request-signature", "strum", "testdir", "testresult", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -1961,7 +2022,7 @@ dependencies = [ "strum", "testdir", "testresult", - "thiserror 2.0.11", + "thiserror 2.0.12", "zeroize", ] @@ -2038,7 +2099,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "serde", "smallvec", "zeroize", @@ -2097,9 +2158,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -2127,9 +2188,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "opaque-debug" @@ -2139,9 +2200,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags", "cfg-if", @@ -2165,15 +2226,15 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -2213,9 +2274,9 @@ dependencies = [ [[package]] name = "p384" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" dependencies = [ "ecdsa", "elliptic-curve", @@ -2233,7 +2294,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "rand_core", + "rand_core 0.6.4", "sha2 0.10.8", ] @@ -2244,7 +2305,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2300,20 +2361,22 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pgp" version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30249ac8a98b356b473b04bc5358c75a260aa96a295d0743ce752fe7b173f235" +source = "git+https://github.com/rpgp/rpgp?branch=readers#85b14b901f8b2f46594c961afe8a9e571c9e3799" dependencies = [ + "aead", "aes", "aes-gcm", "aes-kw", "argon2", "base64 0.22.1", - "bitfield", + "bitfields", "block-padding", "blowfish", - "bstr", "buffer-redux", "byteorder", + "bytes", + "bytes-utils", + "bzip2", "camellia", "cast5", "cfb-mode", @@ -2323,7 +2386,7 @@ dependencies = [ "crc24", "curve25519-dalek", "derive_builder", - "derive_more", + "derive_more 1.0.0", "des", "digest 0.10.7", "dsa", @@ -2336,7 +2399,6 @@ dependencies = [ "hex", "hkdf", "idea", - "iter-read", "k256", "log", "md-5", @@ -2348,7 +2410,8 @@ dependencies = [ "p256", "p384", "p521", - "rand", + "rand 0.8.5", + "regex", "ripemd", "rsa", "sha1", @@ -2357,7 +2420,7 @@ dependencies = [ "sha3", "signature", "smallvec", - "thiserror 2.0.11", + "snafu", "twofish", "x25519-dalek", "zeroize", @@ -2365,9 +2428,9 @@ dependencies = [ [[package]] name = "picky-asn1" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d061c9f67e256511d8d69b86730a506bed100db520c8812e789cf91d9c6a16cc" +checksum = "2ff038f9360b934342fb3c0a1d6e82c438a2624b51c3c6e3e6d7cf252b6f3ee3" dependencies = [ "oid", "serde", @@ -2376,9 +2439,9 @@ dependencies = [ [[package]] name = "picky-asn1-der" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e15b90fb132c46ded79c39277afa93151691d9df6e7ff369c071890b36478392" +checksum = "9dccb53c26f70c082e008818f524bd45d057069517b047bd0c0ee062d6d7d7f2" dependencies = [ "picky-asn1", "serde", @@ -2387,9 +2450,9 @@ dependencies = [ [[package]] name = "picky-asn1-x509" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f702973074c654cef724d7430e2852acdb8b0e897ed9c4120727446a1bda1464" +checksum = "511c46b93e7f08571a375882879d3a468dfe8793d73249907b2e3332950cb33e" dependencies = [ "base64 0.22.1", "oid", @@ -2400,9 +2463,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2433,9 +2496,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polyval" @@ -2455,14 +2518,14 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "f1ccf34da56fc294e7d4ccf69a85992b7dfb826b7cf57bac6a70bba3494cc08a" dependencies = [ "proc-macro2", "syn", @@ -2479,27 +2542,27 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" dependencies = [ "proc-macro2", ] @@ -2511,8 +2574,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.23", ] [[package]] @@ -2522,7 +2596,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -2534,6 +2618,15 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "rayon" version = "1.10.0" @@ -2556,9 +2649,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ "bitflags", ] @@ -2582,7 +2675,7 @@ checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2622,9 +2715,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -2655,6 +2748,7 @@ dependencies = [ "system-configuration", "tokio", "tokio-native-tls", + "tower", "tower-service", "url", "wasm-bindgen", @@ -2675,15 +2769,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -2731,7 +2824,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sha2 0.10.8", "signature", "spki", @@ -2781,10 +2874,11 @@ dependencies = [ [[package]] name = "rustainers" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56586bcbf2e5fd618ff57c100f7ce8f470d7c70930fc9f58345c4a8754dbbe8" +checksum = "206ca5b58c4047da64311f5af57eb9279a51e6477a5520422c98340fa06e2b57" dependencies = [ + "derive_more 2.0.1", "hex", "indexmap", "ipnetwork", @@ -2792,9 +2886,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "strum", - "strum_macros", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "typed-builder", @@ -2824,22 +2916,35 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.42" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "17f8dcd64f141950290e45c99f7710ede1b600297c91818bb30b3667c0f45dc0" dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.2", "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.20" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "aws-lc-rs", "log", @@ -2860,7 +2965,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.0.1", + "security-framework 3.2.0", ] [[package]] @@ -2874,9 +2979,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -2892,15 +2997,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -2971,9 +3076,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.0.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ "bitflags", "core-foundation 0.10.0", @@ -2984,9 +3089,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2994,36 +3099,36 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] [[package]] name = "serde" -version = "1.0.216" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "364fec0df39c49a083c9a8a18a23a6bcfd9af130fe9fe321d18520a0d113e09e" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -3032,9 +3137,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -3098,13 +3203,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.11.0-pre.4" +version = "0.11.0-pre.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5" +checksum = "19b4241d1a56954dce82cecda5c8e9c794eef6f53abe5e5216bac0a0ea71ffa7" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.11.0-pre.9", + "digest 0.11.0-pre.10", ] [[package]] @@ -3139,7 +3244,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3150,8 +3255,8 @@ dependencies = [ "nethsm-config", "nix", "strum", - "sysinfo 0.33.0", - "thiserror 2.0.11", + "sysinfo 0.33.1", + "thiserror 2.0.12", ] [[package]] @@ -3159,14 +3264,14 @@ name = "signstar-request-signature" version = "0.1.0" dependencies = [ "clap", - "rand", + "rand 0.8.5", "rstest", "semver", "serde", "serde_json", - "sha2 0.11.0-pre.4", + "sha2 0.11.0-pre.5", "testresult", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -3180,9 +3285,30 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" + +[[package]] +name = "snafu" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +dependencies = [ + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] [[package]] name = "socket2" @@ -3240,7 +3366,7 @@ dependencies = [ "p256", "p384", "p521", - "rand_core", + "rand_core 0.6.4", "rsa", "sec1", "sha2 0.10.8", @@ -3293,9 +3419,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.90" +version = "2.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" dependencies = [ "proc-macro2", "quote", @@ -3338,9 +3464,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.33.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "948512566b1895f93b1592c7574baeb2de842f224f2aab158799ecadb8ebbb46" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" dependencies = [ "core-foundation-sys", "libc", @@ -3373,14 +3499,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.14.0" +version = "3.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "2c317e0a526ee6120d8dabad239c8dadca62b24b6f168914bbbc8e2fb1f0e567" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.0", "windows-sys 0.59.0", ] @@ -3416,11 +3543,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -3436,9 +3563,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -3495,9 +3622,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", @@ -3518,9 +3645,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -3539,9 +3666,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", @@ -3550,6 +3677,27 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -3624,32 +3772,31 @@ dependencies = [ [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ulid" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f903f293d11f31c0c29e4148f6dc0d033a7f80cebc0282bea147611667d289" +checksum = "ab82fc73182c29b02e2926a6df32f2241dbadb5cfc111fd595515b3598f46bb3" dependencies = [ - "getrandom 0.2.15", - "rand", + "rand 0.9.0", "web-time", ] [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-xid" @@ -3774,20 +3921,21 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", @@ -3799,9 +3947,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -3812,9 +3960,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3822,9 +3970,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -3835,15 +3983,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -3861,9 +4012,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ "rustls-pki-types", ] @@ -3877,7 +4028,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.44", ] [[package]] @@ -3966,6 +4117,12 @@ dependencies = [ "syn", ] +[[package]] +name = "windows-link" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" + [[package]] name = "windows-registry" version = "0.2.0" @@ -4155,9 +4312,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" dependencies = [ "memchr", ] @@ -4190,7 +4347,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "serde", "zeroize", ] @@ -4226,7 +4383,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +dependencies = [ + "zerocopy-derive 0.8.23", ] [[package]] @@ -4240,20 +4406,31 @@ dependencies = [ "syn", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 1fd969e3..4d9944a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ members = [ chrono = "0.4.38" clap = { version = "4.5.23", features = ["derive", "env"] } confy = "0.6.1" +digest = { version = "0.10.7", features = ["alloc"] } ed25519-dalek = "2.1.1" nethsm = { path = "nethsm", version = "0.7.3" } nethsm-backup = { path = "nethsm-backup", version = "0.1.0" } diff --git a/nethsm/Cargo.toml b/nethsm/Cargo.toml index 34db4c50..30d20fb1 100644 --- a/nethsm/Cargo.toml +++ b/nethsm/Cargo.toml @@ -15,6 +15,7 @@ ignored = ["md-5"] [dependencies] base64ct = { version = "1.6.0", features = ["alloc", "std"] } chrono = { workspace = true, features = ["alloc"] } +digest = { workspace = true } ed25519-dalek = { workspace = true, features = ["pkcs8", "pem"] } email_address = "0.2.9" hex = { version = "0.4.3", features = ["serde"] } @@ -26,7 +27,7 @@ p224 = { version = "0.13.2", features = ["pem", "pkcs8"] } p256 = { version = "0.13.2", features = ["pem", "pkcs8"] } p384 = { version = "0.13.0", features = ["pem", "pkcs8"] } p521 = { version = "0.13.3", features = ["pem", "pkcs8"] } -pgp = "0.15" +pgp = { version = "0.15", git = "https://github.com/rpgp/rpgp", branch = "readers" } picky-asn1-der = "0.5.1" picky-asn1-x509 = "0.14.1" rand.workspace = true diff --git a/nethsm/src/lib.rs b/nethsm/src/lib.rs index e423d292..62fb95ce 100644 --- a/nethsm/src/lib.rs +++ b/nethsm/src/lib.rs @@ -5922,7 +5922,7 @@ impl NetHsm { created_at: DateTime<Utc>, version: OpenPgpVersion, ) -> Result<Vec<u8>, Error> { - openpgp::add_certificate(self, flags, key_id, user_id, created_at, version) + Ok(openpgp::add_certificate(self, flags, key_id, user_id, created_at, version).unwrap()) } /// Creates an [OpenPGP signature] for a message. @@ -6027,7 +6027,7 @@ impl NetHsm { /// [role]: https://docs.nitrokey.com/nethsm/administration#roles /// [state]: https://docs.nitrokey.com/nethsm/administration#state pub fn openpgp_sign(&self, key_id: &KeyId, message: &[u8]) -> Result<Vec<u8>, Error> { - openpgp::sign(self, key_id, message) + Ok(openpgp::sign(self, key_id, message).unwrap()) } /// Generates an OpenPGP signature based on provided hasher state. @@ -6138,8 +6138,8 @@ impl NetHsm { pub fn openpgp_sign_state( &self, key_id: &KeyId, - state: impl sha2::Digest + Clone + std::io::Write, + state: impl digest::DynDigest + Clone + std::io::Write + 'static, ) -> Result<Vec<u8>, crate::Error> { - openpgp::sign_hasher_state(self, key_id, state) + Ok(openpgp::sign_hasher_state(self, key_id, state).unwrap()) } } diff --git a/nethsm/src/openpgp.rs b/nethsm/src/openpgp.rs index 5bfeba97..4a8df7c0 100644 --- a/nethsm/src/openpgp.rs +++ b/nethsm/src/openpgp.rs @@ -9,16 +9,18 @@ use std::{ use base64ct::{Base64, Encoding as _}; use chrono::{DateTime, Utc}; +use ed25519_dalek::VerifyingKey; use email_address::{EmailAddress, Options}; use pgp::{ Deserializable, - KeyDetails, SignedPublicKey, SignedSecretKey, - crypto::{ecc_curve::ECCCurve, hash::HashAlgorithm, public_key::PublicKeyAlgorithm}, + crypto::{hash::HashAlgorithm, public_key::PublicKeyAlgorithm}, packet::{ KeyFlags, Notation, + PacketTrait, + PubKeyInner, PublicKey, SignatureConfig, SignatureType, @@ -30,18 +32,18 @@ use pgp::{ types::{ CompressionAlgorithm, EcdsaPublicParams, - EskType, + KeyDetails, KeyId, KeyVersion, - Mpi, - PkeskBytes, + MpiBytes, + Password, PlainSecretParams, PublicKeyTrait, PublicParams, + RsaPublicParams, SecretKeyTrait, SecretParams, SignatureBytes, - Version, }, }; use picky_asn1_x509::{ @@ -50,7 +52,8 @@ use picky_asn1_x509::{ ShaVariant, signature::EcdsaSignatureValue, }; -use rand::prelude::{CryptoRng, Rng}; +use rsa::BigUint; +use rsa::traits::{PrivateKeyParts, PublicKeyParts as _}; use crate::{KeyMechanism, KeyType, NetHsm, PrivateKeyImport, key_type_matches_length}; @@ -433,15 +436,18 @@ impl Debug for HsmKey<'_, '_> { } /// Parse signature bytes into algorithm-specific vector of MPIs. -fn parse_signature(sig_type: crate::SignatureType, sig: &[u8]) -> pgp::errors::Result<Vec<Mpi>> { +fn parse_signature( + sig_type: crate::SignatureType, + sig: &[u8], +) -> pgp::errors::Result<Vec<MpiBytes>> { use crate::SignatureType::*; Ok(match sig_type { EcdsaP256 | EcdsaP384 | EcdsaP521 => { let sig: EcdsaSignatureValue = picky_asn1_der::from_bytes(sig).map_err(|_| pgp::errors::Error::InvalidInput)?; vec![ - Mpi::from_slice(sig.r.as_unsigned_bytes_be()), - Mpi::from_slice(sig.s.as_unsigned_bytes_be()), + MpiBytes::from_slice(sig.r.as_unsigned_bytes_be()), + MpiBytes::from_slice(sig.s.as_unsigned_bytes_be()), ] } EdDsa => { @@ -449,16 +455,17 @@ fn parse_signature(sig_type: crate::SignatureType, sig: &[u8]) -> pgp::errors::R return Err(pgp::errors::Error::InvalidKeyLength); } - vec![Mpi::from_slice(&sig[..32]), Mpi::from_slice(&sig[32..])] + vec![ + MpiBytes::from_slice(&sig[..32]), + MpiBytes::from_slice(&sig[32..]), + ] } Pkcs1 => { // RSA - vec![Mpi::from_slice(sig)] + vec![MpiBytes::from_slice(sig)] } - param => { - return Err(pgp::errors::Error::Unsupported(format!( - "Unsupoprted key type: {param:?}" - ))); + _ => { + return Err(pgp::errors::Error::InvalidInput); //FIXME: more appropriate error here } }) } @@ -480,46 +487,20 @@ impl<'a, 'b> HsmKey<'a, 'b> { EcdsaPublicParams::P256 { .. } => crate::SignatureType::EcdsaP256, EcdsaPublicParams::P384 { .. } => crate::SignatureType::EcdsaP384, EcdsaPublicParams::P521 { .. } => crate::SignatureType::EcdsaP521, - param => { - return Err(pgp::errors::Error::Unsupported(format!( - "Unsupported EC key type: {param:?}" - ))); + _ => { + return Err(pgp::errors::Error::InvalidInput); // FIXME: more appropriate error here } }, PublicParams::EdDSALegacy { .. } => crate::SignatureType::EdDsa, PublicParams::RSA { .. } => crate::SignatureType::Pkcs1, - param => { - return Err(pgp::errors::Error::Unsupported(format!( - "Unsupported key type: {param:?}" - ))); + _ => { + return Err(pgp::errors::Error::InvalidInput); // FIXME: more appropriate error here } }) } } -impl PublicKeyTrait for HsmKey<'_, '_> { - fn verify_signature( - &self, - hash: pgp::crypto::hash::HashAlgorithm, - data: &[u8], - sig: &SignatureBytes, - ) -> pgp::errors::Result<()> { - self.public_key.verify_signature(hash, data, sig) - } - - fn encrypt<R: CryptoRng + Rng>( - &self, - rng: R, - plain: &[u8], - esk_type: EskType, - ) -> pgp::errors::Result<PkeskBytes> { - self.public_key.encrypt(rng, plain, esk_type) - } - - fn serialize_for_hashing(&self, writer: &mut impl std::io::Write) -> pgp::errors::Result<()> { - self.public_key.serialize_for_hashing(writer) - } - +impl KeyDetails for HsmKey<'_, '_> { fn version(&self) -> KeyVersion { self.public_key.version() } @@ -535,6 +516,17 @@ impl PublicKeyTrait for HsmKey<'_, '_> { fn algorithm(&self) -> PublicKeyAlgorithm { self.public_key.algorithm() } +} + +impl PublicKeyTrait for HsmKey<'_, '_> { + fn verify_signature( + &self, + hash: pgp::crypto::hash::HashAlgorithm, + data: &[u8], + sig: &SignatureBytes, + ) -> pgp::errors::Result<()> { + self.public_key.verify_signature(hash, data, sig) + } fn created_at(&self) -> &chrono::DateTime<chrono::Utc> { self.public_key.created_at() @@ -588,27 +580,12 @@ fn prepare_digest_data( } impl SecretKeyTrait for HsmKey<'_, '_> { - type PublicKey = PublicKey; - - type Unlocked = Self; - - fn unlock<F, G, T>(&self, _pw: F, work: G) -> pgp::errors::Result<T> - where - F: FnOnce() -> String, - G: FnOnce(&Self::Unlocked) -> pgp::errors::Result<T>, - { - work(self) - } - - fn create_signature<F>( + fn create_signature( &self, - _key_pw: F, + _key_pw: &Password, hash: HashAlgorithm, data: &[u8], - ) -> pgp::errors::Result<SignatureBytes> - where - F: FnOnce() -> String, - { + ) -> pgp::errors::Result<SignatureBytes> { let signature_type = self.sign_mode()?; let request_data = prepare_digest_data(signature_type, hash, data)?; @@ -620,12 +597,8 @@ impl SecretKeyTrait for HsmKey<'_, '_> { Ok(parse_signature(signature_type, &sig)?.into()) } - fn public_key(&self) -> Self::PublicKey { - self.public_key.clone() - } - fn hash_alg(&self) -> HashAlgorithm { - HashAlgorithm::SHA2_512 + HashAlgorithm::Sha512 } } @@ -637,23 +610,23 @@ pub fn add_certificate( user_id: OpenPgpUserId, created_at: DateTime<Utc>, version: OpenPgpVersion, -) -> Result<Vec<u8>, crate::Error> { +) -> Result<Vec<u8>, Error> { if version != OpenPgpVersion::V4 { unimplemented!( "Support for creating OpenPGP {version} certificates is not yet implemented!" ); } - let public_key = nethsm.get_key(key_id)?; + let public_key = nethsm.get_key(key_id).unwrap(); let signer = HsmKey::new(nethsm, hsm_pk_to_pgp_pk(public_key, created_at)?, key_id); let mut keyflags: KeyFlags = flags.into(); // the primary key always need to be certifying keyflags.set_certify(true); let composed_pk = pgp::PublicKey::new( - signer.public_key(), - KeyDetails::new( - UserId::from_str(Default::default(), user_id.as_ref()), + signer.public_key.clone(), + pgp::KeyDetails::new( + UserId::from_str(Default::default(), user_id.as_ref())?, vec![], vec![], keyflags, @@ -666,7 +639,12 @@ pub fn add_certificate( vec![], ); let signed_pk = composed_pk - .sign(rand::thread_rng(), &signer, String::new) + .sign( + rand::thread_rng(), + &signer, + &signer.public_key, + &Password::empty(), + ) .map_err(Error::Pgp)?; let mut buffer = vec![]; signed_pk.to_writer(&mut buffer).map_err(Error::Pgp)?; @@ -676,17 +654,15 @@ pub fn add_certificate( /// Converts OpenPGP hash algorithm into an OID form for PKCS#1 signing. fn hash_to_oid(hash: HashAlgorithm) -> pgp::errors::Result<AlgorithmIdentifier> { Ok(AlgorithmIdentifier::new_sha(match hash { - HashAlgorithm::SHA1 => ShaVariant::SHA1, - HashAlgorithm::SHA2_256 => ShaVariant::SHA2_256, - HashAlgorithm::SHA2_384 => ShaVariant::SHA2_384, - HashAlgorithm::SHA2_512 => ShaVariant::SHA2_512, - HashAlgorithm::SHA2_224 => ShaVariant::SHA2_224, - HashAlgorithm::SHA3_256 => ShaVariant::SHA3_256, - HashAlgorithm::SHA3_512 => ShaVariant::SHA3_512, - hash => { - return Err(pgp::errors::Error::Unsupported(format!( - "Unsupported hash: {hash:?}" - ))); + HashAlgorithm::Sha1 => ShaVariant::SHA1, + HashAlgorithm::Sha256 => ShaVariant::SHA2_256, + HashAlgorithm::Sha384 => ShaVariant::SHA2_384, + HashAlgorithm::Sha512 => ShaVariant::SHA2_512, + HashAlgorithm::Sha224 => ShaVariant::SHA2_224, + HashAlgorithm::Sha3_256 => ShaVariant::SHA3_256, + HashAlgorithm::Sha3_512 => ShaVariant::SHA3_512, + _ => { + return Err(pgp::errors::Error::InvalidInput); // FIXME: use more appropriate error } })) } @@ -712,45 +688,58 @@ pub fn tsk_to_private_key_import( let SecretParams::Plain(secret) = key.primary_key.secret_params() else { return Err(crate::Error::OpenPgp(Error::PrivateKeyPassphraseProtected)); }; - Ok(match (secret, key.public_params()) { - (PlainSecretParams::RSA { p, q, .. }, PublicParams::RSA { n, e }) => { + Ok(match (secret, key.public_key().public_params()) { + (PlainSecretParams::RSA(secret), PublicParams::RSA(public)) => { // ensure, that we have sufficient bit length - key_type_matches_length(KeyType::Rsa, Some(n.as_bytes().len() as u32 * 8))?; + key_type_matches_length( + KeyType::Rsa, + Some(public.key.n().to_bytes_be().len() as u32 * 8), + )?; ( PrivateKeyImport::from_rsa( - p.as_bytes().to_vec(), - q.as_bytes().to_vec(), - e.as_bytes().to_vec(), + secret.primes()[0].to_bytes_be().to_vec(), + secret.primes()[1].to_bytes_be().to_vec(), + public.key.e().to_bytes_be().to_vec(), ), KeyMechanism::RsaSignaturePkcs1, ) } (PlainSecretParams::ECDSA(bytes), _) => { - let ec = if let PublicParams::ECDSA(pp) = key.primary_key.public_params() { + let ec = if let PublicParams::ECDSA(pp) = key.primary_key.public_key().public_params() { match pp { EcdsaPublicParams::P256 { .. } => crate::KeyType::EcP256, EcdsaPublicParams::P384 { .. } => crate::KeyType::EcP384, EcdsaPublicParams::P521 { .. } => crate::KeyType::EcP521, _ => { - return Err(crate::Error::OpenPgp(Error::UnsupportedKeyFormat { - public_params: Box::new(key.public_params().clone()), - })); + return Err(crate::Error::OpenPgp(Error::PrivateKeyPassphraseProtected)); //FIXME: use correct error } } } else { return Err(crate::Error::OpenPgp(Error::UnsupportedKeyFormat { - public_params: Box::new(key.public_params().clone()), + public_params: Box::new(key.public_key().public_params().clone()), })); }; + let b = match bytes { + pgp::crypto::ecdsa::SecretKey::P256(secret_key) => secret_key.to_bytes().to_vec(), + pgp::crypto::ecdsa::SecretKey::P384(secret_key) => secret_key.to_bytes().to_vec(), + + pgp::crypto::ecdsa::SecretKey::P521(secret_key) => secret_key.to_bytes().to_vec(), + + pgp::crypto::ecdsa::SecretKey::Secp256k1(secret_key) => { + secret_key.to_bytes().to_vec() + } + _ => unreachable!(), // FIXME: check this + }; + ( - PrivateKeyImport::from_raw_bytes(ec, bytes)?, + PrivateKeyImport::from_raw_bytes(ec, b)?, KeyMechanism::EcdsaSignature, ) } (PlainSecretParams::EdDSALegacy(bytes), _) => ( - PrivateKeyImport::from_raw_bytes(crate::KeyType::Curve25519, bytes)?, + PrivateKeyImport::from_raw_bytes(crate::KeyType::Curve25519, bytes.secret.to_bytes())?, KeyMechanism::EdDsaSignature, ), (_, public_params) => { @@ -762,12 +751,8 @@ pub fn tsk_to_private_key_import( } /// Generates an OpenPGP signature using a given NetHSM key for the message. -pub fn sign( - nethsm: &NetHsm, - key_id: &crate::KeyId, - message: &[u8], -) -> Result<Vec<u8>, crate::Error> { - let public_key = nethsm.get_key_certificate(key_id)?; +pub fn sign(nethsm: &NetHsm, key_id: &crate::KeyId, message: &[u8]) -> Result<Vec<u8>, Error> { + let public_key = nethsm.get_key_certificate(key_id).unwrap(); let signer = HsmKey::new( nethsm, @@ -782,14 +767,14 @@ pub fn sign( sig_config.hashed_subpackets = vec![ Subpacket::regular(SubpacketData::SignatureCreationTime( std::time::SystemTime::now().into(), - )), - Subpacket::regular(SubpacketData::Issuer(signer.key_id())), - Subpacket::regular(SubpacketData::IssuerFingerprint(signer.fingerprint())), + ))?, + Subpacket::regular(SubpacketData::Issuer(signer.key_id()))?, + Subpacket::regular(SubpacketData::IssuerFingerprint(signer.fingerprint()))?, ]; let mut hasher = sig_config.hash_alg.new_hasher().map_err(Error::Pgp)?; sig_config - .hash_data_to_sign(&mut *hasher, message) + .hash_data_to_sign(&mut hasher, message) .map_err(Error::Pgp)?; let len = sig_config @@ -798,17 +783,17 @@ pub fn sign( hasher.update(&sig_config.trailer(len).map_err(Error::Pgp)?); - let hash = &hasher.finish()[..]; + let hash = &hasher.finalize()[..]; let signed_hash_value = [hash[0], hash[1]]; let raw_sig = signer - .create_signature(String::new, sig_config.hash_alg, hash) + .create_signature(&Password::empty(), sig_config.hash_alg, hash) .map_err(Error::Pgp)?; - let signature = pgp::Signature::from_config(sig_config, signed_hash_value, raw_sig); + let signature = pgp::Signature::from_config(sig_config, signed_hash_value, raw_sig)?; let mut out = vec![]; - pgp::packet::write_packet(&mut out, &signature).map_err(Error::Pgp)?; + signature.to_writer_with_header(&mut out)?; Ok(out) } @@ -850,9 +835,9 @@ pub fn sign( pub fn sign_hasher_state( nethsm: &NetHsm, key_id: &crate::KeyId, - state: impl sha2::Digest + Clone + std::io::Write, -) -> Result<Vec<u8>, crate::Error> { - let public_key = nethsm.get_key_certificate(key_id)?; + state: impl digest::DynDigest + Clone + std::io::Write + 'static, +) -> Result<Vec<u8>, Error> { + let public_key = nethsm.get_key_certificate(key_id).unwrap(); let signer = HsmKey::new( nethsm, @@ -863,7 +848,8 @@ pub fn sign_hasher_state( ); let hasher = state.clone(); - let file_hash = hasher.finalize(); + + let file_hash = Box::new(hasher).finalize().to_vec(); let sig_config = { let mut sig_config = @@ -871,23 +857,25 @@ pub fn sign_hasher_state( sig_config.hashed_subpackets = vec![ Subpacket::regular(SubpacketData::SignatureCreationTime( std::time::SystemTime::now().into(), - )), - Subpacket::regular(SubpacketData::Issuer(signer.key_id())), - Subpacket::regular(SubpacketData::IssuerFingerprint(signer.fingerprint())), + ))?, + Subpacket::regular(SubpacketData::Issuer(signer.key_id()))?, + Subpacket::regular(SubpacketData::IssuerFingerprint(signer.fingerprint()))?, Subpacket::regular(SubpacketData::Notation(Notation { readable: false, name: "data-digest@archlinux.org".into(), - value: file_hash[..].into(), - })), + value: file_hash.into(), + }))?, ]; sig_config }; let hasher = { - let mut hasher = state.clone(); - let write: &mut dyn std::io::Write = &mut hasher; + let state = state.clone(); + let mut hasher: Box<dyn md5::digest::DynDigest> = Box::new(state); - let len = sig_config.hash_signature_data(write).map_err(Error::Pgp)?; + let len = sig_config + .hash_signature_data(&mut hasher) + .map_err(Error::Pgp)?; hasher.update(&sig_config.trailer(len).map_err(Error::Pgp)?); hasher @@ -898,14 +886,14 @@ pub fn sign_hasher_state( let signed_hash_value = [hash[0], hash[1]]; let raw_sig = signer - .create_signature(String::new, sig_config.hash_alg, hash) + .create_signature(&Password::empty(), sig_config.hash_alg, hash) .map_err(Error::Pgp)?; - let signature = pgp::Signature::from_config(sig_config, signed_hash_value, raw_sig); + let signature = pgp::Signature::from_config(sig_config, signed_hash_value, raw_sig)?; let out = { let mut out = vec![]; - pgp::packet::write_packet(&mut out, &signature).map_err(Error::Pgp)?; + signature.to_writer_with_header(&mut out)?; out }; @@ -926,45 +914,43 @@ fn hsm_pk_to_pgp_pk( .ok_or(Error::KeyData("missing public key data".into()))?; let key_type: KeyType = pk.r#type.into(); Ok(match key_type { - KeyType::Rsa => PublicKey::new( - Version::New, + KeyType::Rsa => PublicKey::from_inner(PubKeyInner::new( KeyVersion::V4, PublicKeyAlgorithm::RSA, created_at, None, - PublicParams::RSA { - n: Mpi::from_raw(Base64::decode_vec( - &public - .modulus - .ok_or(Error::KeyData("missing RSA modulus".into()))?, - )?), - e: Mpi::from_raw(Base64::decode_vec( - &public - .public_exponent - .ok_or(Error::KeyData("missing RSA exponent".into()))?, - )?), - }, - )?, + PublicParams::RSA(RsaPublicParams { + key: rsa::RsaPublicKey::new( + BigUint::from_bytes_be(&Base64::decode_vec( + &public + .modulus + .ok_or(Error::KeyData("missing RSA modulus".into()))?, + )?), + BigUint::from_bytes_be(&Base64::decode_vec( + &public + .public_exponent + .ok_or(Error::KeyData("missing RSA exponent".into()))?, + )?), + ) + .unwrap(), + }), + )?)?, KeyType::Curve25519 => { - let pubkey = Base64::decode_vec( + let pubkey: &[u8] = &Base64::decode_vec( &public .data .ok_or(Error::KeyData("missing ed25519 public key data".into()))?, )?; - let mut bytes = vec![0x40]; - bytes.extend(pubkey); - PublicKey::new( - Version::New, + PublicKey::from_inner(PubKeyInner::new( KeyVersion::V4, PublicKeyAlgorithm::EdDSALegacy, created_at, None, - PublicParams::EdDSALegacy { - curve: ECCCurve::Ed25519, - q: Mpi::from_raw(bytes), - }, - )? + PublicParams::EdDSALegacy(pgp::types::EddsaLegacyPublicParams::Ed25519 { + key: VerifyingKey::from_bytes(pubkey.try_into().unwrap()).unwrap(), + }), + )?)? } curve @ (KeyType::EcP256 | KeyType::EcP384 | KeyType::EcP521) => { let pubkey = Base64::decode_vec( @@ -975,33 +961,27 @@ fn hsm_pk_to_pgp_pk( let key = match curve { KeyType::EcP256 => EcdsaPublicParams::P256 { key: p256::PublicKey::from_sec1_bytes(&pubkey)?, - p: Mpi::from_raw(pubkey), }, KeyType::EcP384 => EcdsaPublicParams::P384 { key: p384::PublicKey::from_sec1_bytes(&pubkey)?, - p: Mpi::from_raw(pubkey), }, KeyType::EcP521 => EcdsaPublicParams::P521 { key: p521::PublicKey::from_sec1_bytes(&pubkey)?, - p: Mpi::from_raw(pubkey), }, _ => unreachable!(), }; - PublicKey::new( - Version::New, + PublicKey::from_inner(PubKeyInner::new( KeyVersion::V4, PublicKeyAlgorithm::ECDSA, created_at, None, PublicParams::ECDSA(key), - )? + )?)? } _ => { - return Err(pgp::errors::Error::Unsupported( - "unsupported key type".into(), - ))?; + return Err(pgp::errors::Error::InvalidInput)?; // FIXME: use better type } }) } @@ -1040,10 +1020,7 @@ impl From<KeyUsageFlags> for KeyFlags { #[cfg(test)] mod tests { use nethsm_sdk_rs::models::{KeyMechanism, KeyPublicData, KeyRestrictions, KeyType}; - use pgp::{ - crypto::ecc_curve::ECCCurve, - types::{EcdsaPublicParams, PublicParams}, - }; + use pgp::types::{EcdsaPublicParams, PublicParams}; use rstest::rstest; use testresult::TestResult; @@ -1066,15 +1043,16 @@ mod tests { }; let pgp_key = hsm_pk_to_pgp_pk(hsm_key, DateTime::UNIX_EPOCH)?; - let PublicParams::EdDSALegacy { curve, q } = pgp_key.public_params() else { + let PublicParams::EdDSALegacy(pgp::types::EddsaLegacyPublicParams::Ed25519 { key }) = + pgp_key.public_params() + else { panic!("Wrong type of public params"); }; - assert_eq!(curve, &ECCCurve::Ed25519); assert_eq!( - q.to_vec(), + key.to_bytes(), [ - 64, 252, 224, 232, 104, 60, 215, 247, 16, 227, 167, 29, 139, 125, 29, 3, 8, 136, - 29, 198, 163, 167, 117, 143, 109, 186, 65, 5, 45, 80, 142, 109, 10 + 252, 224, 232, 104, 60, 215, 247, 16, 227, 167, 29, 139, 125, 29, 3, 8, 136, 29, + 198, 163, 167, 117, 143, 109, 186, 65, 5, 45, 80, 142, 109, 10 ] ); @@ -1100,11 +1078,12 @@ mod tests { operations: 1, }; let pgp_key = hsm_pk_to_pgp_pk(hsm_key, DateTime::UNIX_EPOCH)?; - let PublicParams::ECDSA(EcdsaPublicParams::P256 { p, .. }) = pgp_key.public_params() else { + let PublicParams::ECDSA(EcdsaPublicParams::P256 { key, .. }) = pgp_key.public_params() + else { panic!("Wrong type of public params"); }; assert_eq!( - p.to_vec(), + key.to_sec1_bytes().to_vec(), [ 4, 222, 106, 236, 96, 145, 243, 13, 81, 181, 119, 76, 5, 29, 72, 112, 134, 130, 169, 182, 231, 247, 107, 204, 228, 178, 45, 77, 196, 91, 117, 122, 57, 69, 240, @@ -1135,11 +1114,12 @@ mod tests { operations: 3, }; let pgp_key = hsm_pk_to_pgp_pk(hsm_key, DateTime::UNIX_EPOCH)?; - let PublicParams::ECDSA(EcdsaPublicParams::P384 { p, .. }) = pgp_key.public_params() else { + let PublicParams::ECDSA(EcdsaPublicParams::P384 { key, .. }) = pgp_key.public_params() + else { panic!("Wrong type of public params"); }; assert_eq!( - p.to_vec(), + key.to_sec1_bytes().to_vec(), [ 4, 127, 136, 147, 111, 187, 191, 131, 84, 166, 118, 67, 76, 107, 52, 142, 175, 72, 250, 64, 197, 76, 154, 162, 48, 211, 135, 63, 153, 60, 213, 168, 40, 41, 111, 8, 8, @@ -1172,11 +1152,12 @@ mod tests { operations: 2, }; let pgp_key = hsm_pk_to_pgp_pk(hsm_key, DateTime::UNIX_EPOCH)?; - let PublicParams::ECDSA(EcdsaPublicParams::P521 { p, .. }) = pgp_key.public_params() else { + let PublicParams::ECDSA(EcdsaPublicParams::P521 { key, .. }) = pgp_key.public_params() + else { panic!("Wrong type of public params"); }; assert_eq!( - p.to_vec(), + key.to_sec1_bytes().to_vec(), [ 4, 1, 33, 39, 193, 238, 201, 51, 127, 12, 24, 192, 161, 112, 247, 31, 184, 211, 118, 95, 147, 192, 236, 9, 222, 214, 138, 194, 173, 170, 248, 123, 1, 138, 201, 96, @@ -1205,12 +1186,12 @@ mod tests { data: None })), operations: 2 }; let pgp_key = hsm_pk_to_pgp_pk(hsm_key, DateTime::UNIX_EPOCH)?; - let PublicParams::RSA { e, n } = pgp_key.public_params() else { + let PublicParams::RSA(public) = pgp_key.public_params() else { panic!("Wrong type of public params"); }; - assert_eq!(e.to_vec(), [1, 0, 1]); + assert_eq!(public.key.e().to_bytes_be(), [1, 0, 1]); assert_eq!( - n.to_vec(), + public.key.n().to_bytes_be(), [ 227, 127, 58, 151, 86, 130, 213, 238, 13, 247, 122, 241, 51, 227, 105, 143, 231, 114, 208, 33, 152, 209, 109, 207, 53, 179, 147, 4, 100, 99, 238, 212, 196, 126, 89, @@ -1237,7 +1218,7 @@ mod tests { fn parse_rsa_signature_produces_valid_data() -> TestResult { let sig = parse_signature(crate::SignatureType::Pkcs1, &[0, 1, 2])?; assert_eq!(sig.len(), 1); - assert_eq!(&sig[0][..], &[1, 2]); + assert_eq!(&sig[0].as_ref(), &[1, 2]); Ok(()) } @@ -1253,8 +1234,8 @@ mod tests { ], )?; assert_eq!(sig.len(), 2); - assert_eq!(sig[0].as_bytes(), vec![2; 32]); - assert_eq!(sig[1].as_bytes(), vec![1; 32]); + assert_eq!(sig[0].as_ref(), vec![2; 32]); + assert_eq!(sig[1].as_ref(), vec![1; 32]); Ok(()) } @@ -1272,14 +1253,14 @@ mod tests { )?; assert_eq!(sig.len(), 2); assert_eq!( - sig[0].as_bytes(), + sig[0].as_ref(), [ 193, 176, 219, 0, 133, 254, 212, 239, 236, 122, 85, 239, 73, 161, 179, 53, 100, 172, 103, 45, 123, 21, 169, 28, 59, 150, 72, 92, 242, 9, 53, 143 ] ); assert_eq!( - sig[1].as_bytes(), + sig[1].as_ref(), [ 165, 1, 144, 97, 102, 109, 66, 50, 185, 234, 211, 150, 253, 228, 210, 126, 26, 0, 189, 184, 230, 163, 36, 203, 232, 161, 12, 75, 121, 171, 45, 107 @@ -1304,7 +1285,7 @@ mod tests { )?; assert_eq!(sig.len(), 2); assert_eq!( - sig[0].as_bytes(), + sig[0].as_ref(), [ 134, 13, 108, 74, 135, 234, 174, 105, 208, 46, 109, 18, 77, 21, 177, 59, 73, 150, 228, 26, 244, 134, 187, 217, 172, 34, 2, 1, 229, 123, 105, 202, 132, 233, 72, 41, @@ -1312,7 +1293,7 @@ mod tests { ] ); assert_eq!( - sig[1].as_bytes(), + sig[1].as_ref(), [ 44, 80, 117, 90, 18, 137, 36, 190, 8, 60, 201, 235, 242, 168, 164, 245, 119, 136, 207, 178, 237, 64, 117, 69, 218, 189, 209, 110, 2, 9, 191, 194, 70, 50, 227, 47, 6, @@ -1340,7 +1321,7 @@ mod tests { )?; assert_eq!(sig.len(), 2); assert_eq!( - sig[0].as_bytes(), + sig[0].as_ref(), [ 203, 246, 21, 57, 217, 6, 101, 73, 103, 113, 98, 39, 223, 246, 199, 136, 238, 213, 134, 163, 153, 151, 116, 237, 207, 181, 107, 183, 204, 110, 97, 160, 95, 160, 193, @@ -1349,7 +1330,7 @@ mod tests { ] ); assert_eq!( - sig[1].as_bytes(), + sig[1].as_ref(), [ 1, 203, 115, 121, 219, 49, 18, 3, 101, 130, 153, 95, 80, 27, 148, 249, 221, 198, 251, 149, 118, 119, 32, 44, 160, 24, 125, 72, 161, 168, 71, 48, 138, 223, 200, 37, @@ -1405,7 +1386,7 @@ mod tests { #[test] fn rsa_digest_info_is_wrapped() -> TestResult { - let data = prepare_digest_data(crate::SignatureType::Pkcs1, HashAlgorithm::SHA1, &[0; 20])?; + let data = prepare_digest_data(crate::SignatureType::Pkcs1, HashAlgorithm::Sha1, &[0; 20])?; assert_eq!( data, @@ -1426,10 +1407,11 @@ mod tests { fn ecdsa_wrapped_up_to_max_len( #[case] sig_type: crate::SignatureType, #[case] max_len: usize, - #[values(HashAlgorithm::SHA1, HashAlgorithm::SHA2_256, HashAlgorithm::SHA2_512)] hash_algo: HashAlgorithm, + #[values(HashAlgorithm::Sha1, HashAlgorithm::Sha256, HashAlgorithm::Sha512)] + hash_algo: HashAlgorithm, ) -> TestResult { // the digest value is irrelevant - just the size of the digest - let digest = hash_algo.new_hasher()?.finish(); + let digest = hash_algo.new_hasher()?.finalize(); let data = prepare_digest_data(sig_type, hash_algo, &digest)?; // The data to be signed size needs to be truncated to the value specific the the curve @@ -1448,12 +1430,13 @@ mod tests { #[rstest] fn eddsa_is_not_wrapped( - #[values(HashAlgorithm::SHA1, HashAlgorithm::SHA2_256, HashAlgorithm::SHA2_512)] hash_algo: HashAlgorithm, + #[values(HashAlgorithm::Sha1, HashAlgorithm::Sha256, HashAlgorithm::Sha512)] + hash_algo: HashAlgorithm, ) -> TestResult { // the digest value is irrelevant - just the size of the digest - let digest = hash_algo.new_hasher()?.finish(); + let digest = &hash_algo.new_hasher()?.finalize()[..]; - let data = prepare_digest_data(crate::SignatureType::EdDsa, hash_algo, &digest)?; + let data = prepare_digest_data(crate::SignatureType::EdDsa, hash_algo, digest)?; assert_eq!(data, digest); -- GitLab