diff --git a/Cargo.lock b/Cargo.lock index 1c7f67f..d9c165e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,10 +23,21 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ - "crypto-common", + "bytes", + "crypto-common 0.1.6", "generic-array", ] +[[package]] +name = "aead" +version = "0.6.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a578e7d4edaef88aeb9cdd81556f4a62266ce26601317c006a79e8bc58b5af" +dependencies = [ + "crypto-common 0.2.0-rc.9", + "inout 0.2.2", +] + [[package]] name = "aes" version = "0.8.4" @@ -34,22 +45,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures", ] +[[package]] +name = "aes" +version = "0.9.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd9e1c818b25efb32214df89b0ec22f01aa397aaeb718d1022bf0635a3bfd1a8" +dependencies = [ + "cfg-if", + "cipher 0.5.0-rc.3", + "cpufeatures", + "zeroize", +] + [[package]] name = "aes-gcm" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", + "subtle", +] + +[[package]] +name = "aes-gcm" +version = "0.11.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f5c07f414d7dc0755870f84c7900425360288d24e0eae4836f9dee19a30fa5f" +dependencies = [ + "aead 0.6.0-rc.5", + "aes 0.9.0-rc.2", + "cipher 0.5.0-rc.3", + "ctr 0.10.0-rc.2", + "ghash 0.6.0-rc.3", "subtle", + "zeroize", +] + +[[package]] +name = "aes-kw" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fa2b352dcefb5f7f3a5fb840e02665d311d878955380515e4fd50095dd3d8c" +dependencies = [ + "aes 0.8.4", ] [[package]] @@ -61,12 +108,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -141,6 +182,7 @@ dependencies = [ "blake2", "cpufeatures", "password-hash", + "zeroize", ] [[package]] @@ -201,6 +243,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base16ct" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" + [[package]] name = "base64" version = "0.22.1" @@ -209,15 +257,30 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" [[package]] -name = "bitfield" -version = "0.14.0" +name = "bitfields" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac" +checksum = "d866f92dc1574aa8da443eacb06ad8fbe4056dbc1b7c3aae508cbccd46c7e706" +dependencies = [ + "bitfields-impl", +] + +[[package]] +name = "bitfields-impl" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c09459e6af3016ea58af8332e31d5da117d33a621bad7019355eefccc4a567d4" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "thiserror 2.0.17", +] [[package]] name = "bitflags" @@ -225,13 +288,25 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blake2" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] @@ -243,6 +318,16 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f" +dependencies = [ + "hybrid-array", + "zeroize", +] + [[package]] name = "block-padding" version = "0.3.3" @@ -259,17 +344,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" dependencies = [ "byteorder", - "cipher", -] - -[[package]] -name = "bstr" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" -dependencies = [ - "memchr", - "serde", + "cipher 0.4.4", ] [[package]] @@ -295,9 +370,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "bzip2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" +dependencies = [ + "libbz2-rs-sys", +] [[package]] name = "camellia" @@ -306,7 +390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3264e2574e9ef2b53ce6f536dea83a69ac0bc600b762d1523ff83fe07230ce30" dependencies = [ "byteorder", - "cipher", + "cipher 0.4.4", ] [[package]] @@ -315,7 +399,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd3ee3a298842065dc489180c34a4fe4bbbb8643bb422009d79558a099fb42e5" dependencies = [ - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -336,7 +420,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26b07d673db1ccf000e90f54b819db9e75a8348d6eb056e9b8ab53231b7a9911" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -356,7 +440,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "738b8d467867f80a71351933f70461f5b56f24d5c93e0cf216e59229c968d330" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -365,18 +449,30 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chacha20" +version = "0.10.0-rc.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f895fb33c1ad22da4bc79d37c0bddff8aee2ba4575705345eb73b8ffbc386074" +dependencies = [ + "cfg-if", + "cipher 0.5.0-rc.3", + "cpufeatures", + "rand_core 0.10.0-rc-3", + "zeroize", +] + [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets", + "windows-link", ] [[package]] @@ -385,8 +481,20 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "crypto-common", - "inout", + "crypto-common 0.1.6", + "inout 0.1.3", +] + +[[package]] +name = "cipher" +version = "0.5.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98d708bac5451350d56398433b19a7889022fa9187df1a769c0edbc3b2c03167" +dependencies = [ + "block-buffer 0.11.0", + "crypto-common 0.2.0-rc.9", + "inout 0.2.2", + "zeroize", ] [[package]] @@ -435,11 +543,17 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8543454e3c3f5126effff9cd44d562af4e31fb8ce1cc0d3dcd8f084515dbc1aa" dependencies = [ - "cipher", + "cipher 0.4.4", "dbl", - "digest", + "digest 0.10.7", ] +[[package]] +name = "cmov" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360a5d5b750cd7fb97d5ead6e6e0ef0b288d3c2464a189f04f38670e268842ed" + [[package]] name = "colorchoice" version = "1.0.2" @@ -452,12 +566,27 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "const-str" version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3618cccc083bb987a415d85c02ca6c9994ea5b44731ec28b9ecf09658655fba9" +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -466,9 +595,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -495,7 +624,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.7.0-rc.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37387ceb32048ff590f2cbd24d8b05fffe63c3f69a5cfa089d4f722ca4385a19" +dependencies = [ + "ctutils", + "getrandom 0.4.0-rc.0", + "hybrid-array", + "num-traits", + "rand_core 0.10.0-rc-3", + "serdect 0.4.2", "subtle", "zeroize", ] @@ -507,17 +652,58 @@ 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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b8986f836d4aeb30ccf4c9d3bd562fd716074cfd7fc4a2948359fbd21ed809" +dependencies = [ + "getrandom 0.4.0-rc.0", + "hybrid-array", + "rand_core 0.10.0-rc-3", +] + +[[package]] +name = "crypto-primes" +version = "0.7.0-pre.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79c98a281f9441200b24e3151407a629bfbe720399186e50516da939195e482" +dependencies = [ + "crypto-bigint 0.7.0-rc.18", + "libm", + "rand_core 0.10.0-rc-3", +] + [[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "ctr" +version = "0.10.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d0ec605a95e78815a4c4b8040217d56d5a1ab37043851ee9e7e65b89afa00e3" +dependencies = [ + "cipher 0.5.0-rc.3", +] + +[[package]] +name = "ctutils" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c67c81499f542d1dd38c6a2a2fe825f4dd4bca5162965dd2eea0c8119873d3c" +dependencies = [ + "cmov", + "subtle", ] [[package]] @@ -529,13 +715,28 @@ dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest", - "fiat-crypto", + "digest 0.10.7", + "fiat-crypto 0.2.9", "rustc_version", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "5.0.0-pre.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ae8b2fe5e4995d7fd08a7604e794dc569a65ed19659f5939d529813ed816d38" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.11.0-rc.5", + "fiat-crypto 0.3.0", + "rustc_version", + "subtle", +] + [[package]] name = "curve25519-dalek-derive" version = "0.1.1" @@ -547,6 +748,23 @@ dependencies = [ "syn", ] +[[package]] +name = "cx448" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c0cf476284b03eb6c10e78787b21c7abb7d7d43cb2f02532ba6b831ed892fa" +dependencies = [ + "crypto-bigint 0.5.5", + "elliptic-curve 0.13.8", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "serdect 0.3.0", + "sha3", + "signature 2.2.0", + "subtle", + "zeroize", +] + [[package]] name = "darling" version = "0.20.10" @@ -597,8 +815,19 @@ version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ - "const-oid", - "pem-rfc7468", + "const-oid 0.9.6", + "pem-rfc7468 0.7.0", + "zeroize", +] + +[[package]] +name = "der" +version = "0.8.0-rc.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c1d73e9668ea6b6a28172aa55f3ebec38507131ce179051c8033b5c6037653" +dependencies = [ + "const-oid 0.10.2", + "pem-rfc7468 1.0.0", "zeroize", ] @@ -633,13 +862,45 @@ dependencies = [ "syn", ] +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", + "unicode-xid", +] + [[package]] name = "des" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "des" +version = "0.9.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512ca722eff02fa73c43e5136f440c46f861d41f9dd7761c1f2817a5ca5d9ad7" +dependencies = [ + "cipher 0.5.0-rc.3", ] [[package]] @@ -648,9 +909,21 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", + "block-buffer 0.10.4", + "const-oid 0.9.6", + "crypto-common 0.1.6", + "subtle", +] + +[[package]] +name = "digest" +version = "0.11.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebf9423bafb058e4142194330c52273c343f8a5beb7176d052f0e73b17dd35b9" +dependencies = [ + "block-buffer 0.11.0", + "const-oid 0.10.2", + "crypto-common 0.2.0-rc.9", "subtle", ] @@ -666,13 +939,13 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48bc224a9084ad760195584ce5abb3c2c34a225fa312a128ad245a6b412b7689" dependencies = [ - "digest", + "digest 0.10.7", "num-bigint-dig", "num-traits", - "pkcs8", - "rfc6979", - "sha2", - "signature", + "pkcs8 0.10.2", + "rfc6979 0.4.0", + "sha2 0.10.8", + "signature 2.2.0", "zeroize", ] @@ -682,10 +955,10 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9954fabd903b82b9d7a68f65f97dc96dd9ad368e40ccc907a7c19d53e6bfac28" dependencies = [ - "aead", - "cipher", + "aead 0.5.2", + "cipher 0.4.4", "cmac", - "ctr", + "ctr 0.9.2", "subtle", ] @@ -695,12 +968,27 @@ version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", + "der 0.7.9", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "signature 2.2.0", + "spki 0.7.3", +] + +[[package]] +name = "ecdsa" +version = "0.17.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18ccb2afbad0782e073b602a7d59dd08966d2b1173e08f96ebffb5446f8446d" +dependencies = [ + "der 0.8.0-rc.10", + "digest 0.11.0-rc.5", + "elliptic-curve 0.14.0-rc.21", + "rfc6979 0.5.0-rc.3", + "signature 3.0.0-rc.6", + "spki 0.8.0-rc.4", + "zeroize", ] [[package]] @@ -709,8 +997,17 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8", - "signature", + "pkcs8 0.10.2", + "signature 2.2.0", +] + +[[package]] +name = "ed25519" +version = "3.0.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "594435fe09e345ee388e4e8422072ff7dfeca8729389fbd997b3f5504c44cd47" +dependencies = [ + "signature 3.0.0-rc.6", ] [[package]] @@ -719,31 +1016,71 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 4.1.3", + "ed25519 2.2.3", + "rand_core 0.6.4", "serde", - "sha2", + "sha2 0.10.8", "subtle", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "3.0.0-pre.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b9f613e0c236c699bf70d39f825594d9b03aadfd8dd856ea40685f782a4ef2" +dependencies = [ + "curve25519-dalek 5.0.0-pre.4", + "ed25519 3.0.0-rc.2", + "sha2 0.11.0-rc.3", + "subtle", +] + [[package]] name = "elliptic-curve" version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "base16ct", - "crypto-bigint", - "digest", + "base16ct 0.2.0", + "base64ct", + "crypto-bigint 0.5.5", + "digest 0.10.7", "ff", "generic-array", "group", "hkdf", - "pem-rfc7468", - "pkcs8", - "rand_core", - "sec1", + "pem-rfc7468 0.7.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "serde_json", + "serdect 0.2.0", + "subtle", + "tap", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.14.0-rc.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ee4530cd12af66979d89bf0e555c66d04ed1dc58479d7a69d93c98a650fb738" +dependencies = [ + "base16ct 1.0.0", + "crypto-bigint 0.7.0-rc.18", + "crypto-common 0.2.0-rc.9", + "digest 0.11.0-rc.5", + "getrandom 0.4.0-rc.0", + "hybrid-array", + "once_cell", + "pem-rfc7468 1.0.0", + "pkcs8 0.11.0-rc.8", + "rand_core 0.10.0-rc-3", + "rustcrypto-ff", + "rustcrypto-group", + "sec1 0.8.0-rc.11", "subtle", "zeroize", ] @@ -789,7 +1126,8 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core", + "bitvec", + "rand_core 0.6.4", "subtle", ] @@ -799,14 +1137,21 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "fiat-crypto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" + [[package]] name = "flate2" -version = "1.0.33" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -815,6 +1160,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.30" @@ -932,6 +1283,19 @@ dependencies = [ "wasi", ] +[[package]] +name = "getrandom" +version = "0.4.0-rc.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b99f0d993a2b9b97b9a201193aa8ad21305cde06a3be9a7e1f8f4201e5cc27e" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "rand_core 0.10.0-rc-3", + "wasip2", +] + [[package]] name = "ghash" version = "0.5.1" @@ -939,7 +1303,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", - "polyval", + "polyval 0.6.2", +] + +[[package]] +name = "ghash" +version = "0.6.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "333de57ed9494a40df4bbb866752b100819dde0d18f2264c48f5a08a85fe673d" +dependencies = [ + "polyval 0.7.0-rc.3", ] [[package]] @@ -961,7 +1334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1007,7 +1380,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" dependencies = [ - "hmac", + "hmac 0.12.1", ] [[package]] @@ -1016,7 +1389,16 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest", + "digest 0.10.7", +] + +[[package]] +name = "hmac" +version = "0.13.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1c597ac7d6cc8143e30e83ef70915e7f883b18d8bec2e2b2bce47f5bbb06d57" +dependencies = [ + "digest 0.11.0-rc.5", ] [[package]] @@ -1025,6 +1407,17 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "hybrid-array" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f471e0a81b2f90ffc0cb2f951ae04da57de8baa46fa99112b062a5173a5088d0" +dependencies = [ + "subtle", + "typenum", + "zeroize", +] + [[package]] name = "iana-time-zone" version = "0.1.61" @@ -1054,7 +1447,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "075557004419d7f2031b8bb7f44bb43e55a83ca7b63076a8fb8fe75753836477" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -1082,6 +1475,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "inout" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" +dependencies = [ + "hybrid-array", +] + [[package]] name = "interprocess" version = "2.2.1" @@ -1111,10 +1513,10 @@ dependencies = [ ] [[package]] -name = "iter-read" -version = "1.1.0" +name = "itoa" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071ed4cc1afd86650602c7b11aa2e1ce30762a1c27193201cb5cee9c6ebb1294" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jobserver" @@ -1141,11 +1543,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", - "ecdsa", - "elliptic-curve", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "once_cell", - "sha2", - "signature", + "sha2 0.10.8", + "signature 2.2.0", ] [[package]] @@ -1166,6 +1568,12 @@ dependencies = [ "spin", ] +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" + [[package]] name = "libc" version = "0.2.158" @@ -1185,9 +1593,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "log" @@ -1202,7 +1610,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", ] [[package]] @@ -1219,11 +1627,12 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -1248,19 +1657,27 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "serde", "smallvec", "zeroize", @@ -1332,17 +1749,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c196e0276c471c843dd5777e7543a36a298a4be942a2a688d8111cd43390dedb" dependencies = [ - "aead", - "cipher", - "ctr", + "aead 0.5.2", + "cipher 0.4.4", + "ctr 0.9.2", "subtle", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" @@ -1360,34 +1777,61 @@ dependencies = [ "chrono", "hex-slice", "log", - "nom", + "nom 7.1.3", "secrecy", - "sha2", - "thiserror", + "sha2 0.10.8", + "thiserror 1.0.63", ] [[package]] name = "p256" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.8", +] + +[[package]] +name = "p256" +version = "0.14.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb1056e093c065babf1e9b0e28a630bee540cd9f5b905230ddc475175f5e9c8" +dependencies = [ + "ecdsa 0.17.0-rc.12", + "elliptic-curve 0.14.0-rc.21", + "primefield", + "primeorder 0.14.0-rc.4", + "sha2 0.11.0-rc.3", +] + +[[package]] +name = "p384" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "sha2 0.10.8", ] [[package]] name = "p384" -version = "0.13.0" +version = "0.14.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" +checksum = "69c56497d041697837a24928437cd1e7e7a7e7705037b0816f94550272e16a8e" dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", + "ecdsa 0.17.0-rc.12", + "elliptic-curve 0.14.0-rc.21", + "fiat-crypto 0.3.0", + "primefield", + "primeorder 0.14.0-rc.4", + "sha2 0.11.0-rc.3", ] [[package]] @@ -1396,12 +1840,26 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" dependencies = [ - "base16ct", - "ecdsa", - "elliptic-curve", - "primeorder", - "rand_core", - "sha2", + "base16ct 0.2.0", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "primeorder 0.13.6", + "rand_core 0.6.4", + "sha2 0.10.8", +] + +[[package]] +name = "p521" +version = "0.14.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4383085fff29639c8d8d65e569e3ca58bee723358bd80bb3fb7492d519570989" +dependencies = [ + "base16ct 1.0.0", + "ecdsa 0.17.0-rc.12", + "elliptic-curve 0.14.0-rc.21", + "primefield", + "primeorder 0.14.0-rc.4", + "sha2 0.11.0-rc.3", ] [[package]] @@ -1411,7 +1869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1443,65 +1901,80 @@ dependencies = [ "base64ct", ] +[[package]] +name = "pem-rfc7468" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" +dependencies = [ + "base64ct", +] + [[package]] name = "pgp" -version = "0.13.2" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6c842436d5fa2b59eac1e9b3d142b50bfff99c1744c816b1f4c2ac55a20754" +checksum = "66d4a27a4d5cfd4e185ddd3eff94dee0f611c4c3e776422254237c54c336c160" dependencies = [ - "aes", - "aes-gcm", + "aead 0.5.2", + "aes 0.8.4", + "aes-gcm 0.10.3", + "aes-kw", "argon2", "base64", - "bitfield", + "bitfields", "block-padding", "blowfish", - "bstr", "buffer-redux", "byteorder", + "bytes", + "bzip2", "camellia", "cast5", "cfb-mode", "chrono", - "cipher", - "const-oid", + "cipher 0.4.4", + "const-oid 0.9.6", "crc24", - "curve25519-dalek", + "curve25519-dalek 4.1.3", + "cx448", "derive_builder", - "des", - "digest", + "derive_more", + "des 0.8.1", + "digest 0.10.7", "dsa", "eax", - "ecdsa", - "ed25519-dalek", - "elliptic-curve", + "ecdsa 0.16.9", + "ed25519-dalek 2.1.1", + "elliptic-curve 0.13.8", "flate2", "generic-array", "hex", "hkdf", "idea", - "iter-read", "k256", "log", "md-5", - "nom", + "nom 8.0.0", "num-bigint-dig", "num-traits", "num_enum", "ocb3", - "p256", - "p384", - "p521", - "rand", + "p256 0.13.2", + "p384 0.13.0", + "p521 0.13.3", + "rand 0.8.5", + "regex", + "replace_with", "ripemd", - "rsa", - "sha1", + "rsa 0.9.10", + "sha1 0.10.6", "sha1-checked", - "sha2", + "sha2 0.10.8", "sha3", - "signature", + "signature 2.2.0", "smallvec", - "thiserror", + "snafu", "twofish", "x25519-dalek", "zeroize", @@ -1525,9 +1998,19 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ - "der", - "pkcs8", - "spki", + "der 0.7.9", + "pkcs8 0.10.2", + "spki 0.7.3", +] + +[[package]] +name = "pkcs1" +version = "0.8.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" +dependencies = [ + "der 0.8.0-rc.10", + "spki 0.8.0-rc.4", ] [[package]] @@ -1536,8 +2019,18 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der", - "spki", + "der 0.7.9", + "spki 0.7.3", +] + +[[package]] +name = "pkcs8" +version = "0.11.0-rc.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77089aec8290d0b7bb01b671b091095cf1937670725af4fd73d47249f03b12c0" +dependencies = [ + "der 0.8.0-rc.10", + "spki 0.8.0-rc.4", ] [[package]] @@ -1546,6 +2039,17 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +[[package]] +name = "poly1305" +version = "0.9.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c0749ae91cfe6e68c77c4d48802d9720ee06aed3f7100a38975fb0962d50bc" +dependencies = [ + "cpufeatures", + "universal-hash 0.6.0-rc.4", + "zeroize", +] + [[package]] name = "polyval" version = "0.6.2" @@ -1555,7 +2059,18 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", +] + +[[package]] +name = "polyval" +version = "0.7.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad60831c19edda4b20878a676595c357e93a9b4e6dca2ba98d75b01066b317b" +dependencies = [ + "cfg-if", + "cpufeatures", + "universal-hash 0.6.0-rc.4", ] [[package]] @@ -1567,13 +2082,36 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "primefield" +version = "0.14.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf1f23afb6185c65efc97605dea2d667f6fef71cb9d3198992c1e9002e349f40" +dependencies = [ + "crypto-bigint 0.7.0-rc.18", + "crypto-common 0.2.0-rc.9", + "rand_core 0.10.0-rc-3", + "rustcrypto-ff", + "subtle", + "zeroize", +] + [[package]] name = "primeorder" version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "elliptic-curve", + "elliptic-curve 0.13.8", +] + +[[package]] +name = "primeorder" +version = "0.14.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12459f4bdd430002b812017c3e99f5a27a2c2689f1b140cb82a73c23431b71e0" +dependencies = [ + "elliptic-curve 0.14.0-rc.21", ] [[package]] @@ -1587,22 +2125,34 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -1611,7 +2161,18 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.10.0-rc.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bccc05ac8fad6ee391f3cc6725171817eed960345e2fb42ad229d486c1ca2d98" +dependencies = [ + "chacha20", + "getrandom 0.4.0-rc.0", + "rand_core 0.10.0-rc-3", ] [[package]] @@ -1621,7 +2182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1630,9 +2191,15 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.10.0-rc-3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f66ee92bc15280519ef199a274fe0cafff4245d31bc39aaa31c011ad56cb1f05" + [[package]] name = "raunch" version = "1.0.1" @@ -1683,6 +2250,12 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" +[[package]] +name = "replace_with" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51743d3e274e2b18df81c4dc6caf8a5b8e15dbe799e0dca05c7617380094e884" + [[package]] name = "retainer" version = "0.3.0" @@ -1692,7 +2265,7 @@ dependencies = [ "async-lock", "async-timer", "log", - "rand", + "rand 0.8.5", ] [[package]] @@ -1701,7 +2274,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac", + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "rfc6979" +version = "0.5.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8e2323084c987a72875b2fd682b7307d5cf14d47e3875bb5e89948e8809d4" +dependencies = [ + "hmac 0.13.0-rc.3", "subtle", ] @@ -1711,31 +2294,49 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest", + "digest 0.10.7", ] [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" dependencies = [ - "const-oid", - "digest", + "const-oid 0.9.6", + "digest 0.10.7", "num-bigint-dig", "num-integer", "num-traits", - "pkcs1", - "pkcs8", - "rand_core", - "sha1", - "sha2", - "signature", - "spki", + "pkcs1 0.7.5", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "signature 2.2.0", + "spki 0.7.3", "subtle", "zeroize", ] +[[package]] +name = "rsa" +version = "0.10.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a2b1eacbc34fbaf77f6f1db1385518446008d49b9f9f59dc9d1340fce4ca9e" +dependencies = [ + "const-oid 0.10.2", + "crypto-bigint 0.7.0-rc.18", + "crypto-primes", + "digest 0.11.0-rc.5", + "pkcs1 0.8.0-rc.4", + "pkcs8 0.11.0-rc.8", + "rand_core 0.10.0-rc-3", + "sha1 0.11.0-rc.3", + "sha2 0.11.0-rc.3", + "signature 3.0.0-rc.6", + "spki 0.8.0-rc.4", + "zeroize", +] + [[package]] name = "rstest" version = "0.22.0" @@ -1781,16 +2382,58 @@ dependencies = [ "semver", ] +[[package]] +name = "rustcrypto-ff" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9cd37111549306f79b09aa2618e15b1e8241b7178c286821e3dd71579db4db" +dependencies = [ + "rand_core 0.10.0-rc-3", + "subtle", +] + +[[package]] +name = "rustcrypto-group" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e394cd734b5f97dfc3484fa42aad7acd912961c2bcd96c99aa05b3d6cab7cafd" +dependencies = [ + "rand_core 0.10.0-rc-3", + "rustcrypto-ff", + "subtle", +] + +[[package]] +name = "ryu" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" + [[package]] name = "sec1" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct", - "der", + "base16ct 0.2.0", + "der 0.7.9", "generic-array", - "pkcs8", + "pkcs8 0.10.2", + "serdect 0.2.0", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.8.0-rc.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2568531a8ace88b848310caa98fb2115b151ef924d54aa523e659c21b9d32d71" +dependencies = [ + "base16ct 1.0.0", + "ctutils", + "der 0.8.0-rc.10", + "hybrid-array", "subtle", "zeroize", ] @@ -1830,6 +2473,48 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + +[[package]] +name = "serdect" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f42f67da2385b51a5f9652db9c93d78aeaf7610bf5ec366080b6de810604af53" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + +[[package]] +name = "serdect" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af4a3e75ebd5599b30d4de5768e00b5095d518a79fefc3ecbaf77e665d1ec06" +dependencies = [ + "base16ct 1.0.0", + "serde", +] + [[package]] name = "service-binding" version = "3.0.0" @@ -1847,7 +2532,18 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.11.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa1ae819b9870cadc959a052363de870944a1646932d274a4e270f64bf79e5ef" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.11.0-rc.5", ] [[package]] @@ -1856,8 +2552,9 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" dependencies = [ - "digest", - "sha1", + "digest 0.10.7", + "sha1 0.10.6", + "zeroize", ] [[package]] @@ -1868,7 +2565,18 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d43dc0354d88b791216bb5c1bfbb60c0814460cc653ae0ebd71f286d0bd927" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.11.0-rc.5", ] [[package]] @@ -1877,7 +2585,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest", + "digest 0.10.7", "keccak", ] @@ -1893,10 +2601,26 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", - "rand_core", + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "3.0.0-rc.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a96996ccff7dfa16f052bd995b4cecc72af22c35138738dc029f0ead6608d" +dependencies = [ + "digest 0.11.0-rc.5", + "rand_core 0.10.0-rc-3", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + [[package]] name = "slab" version = "0.4.9" @@ -1912,6 +2636,27 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +[[package]] +name = "snafu" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" +dependencies = [ + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "socket2" version = "0.5.7" @@ -1935,7 +2680,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der", + "der 0.7.9", +] + +[[package]] +name = "spki" +version = "0.8.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" +dependencies = [ + "base64ct", + "der 0.8.0-rc.10", ] [[package]] @@ -1954,21 +2709,21 @@ dependencies = [ "interprocess", "log", "openpgp-card", - "p256", + "p256 0.14.0-rc.4", "pgp", - "rand", + "rand 0.10.0-rc.6", "retainer", - "rsa", + "rsa 0.10.0-rc.12", "rstest", "secrecy", "service-binding", - "sha1", - "signature", - "ssh-encoding", + "sha1 0.11.0-rc.3", + "signature 3.0.0-rc.6", + "ssh-encoding 0.3.0-rc.4", "ssh-key", "subtle", "testresult", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-util", ] @@ -1979,17 +2734,23 @@ version = "0.5.1" dependencies = [ "libfuzzer-sys", "ssh-agent-lib", - "ssh-encoding", + "ssh-encoding 0.2.0", ] [[package]] name = "ssh-cipher" -version = "0.2.0" +version = "0.3.0-rc.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" +checksum = "88ca7fe5fcf2f30c6fcbad76c65c0aef40a09087ef9092eae072383c7d959200" dependencies = [ - "cipher", - "ssh-encoding", + "aes 0.9.0-rc.2", + "aes-gcm 0.11.0-rc.2", + "chacha20", + "cipher 0.5.0-rc.3", + "des 0.9.0-rc.2", + "poly1305", + "ssh-encoding 0.3.0-rc.4", + "zeroize", ] [[package]] @@ -1997,30 +2758,38 @@ name = "ssh-encoding" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" + +[[package]] +name = "ssh-encoding" +version = "0.3.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a544d1b898f016dd32083ec3a926a5bff0deb6e43c691db6eb39fa11b7c9e" dependencies = [ "base64ct", - "pem-rfc7468", - "sha2", + "crypto-bigint 0.7.0-rc.18", + "digest 0.11.0-rc.5", + "pem-rfc7468 1.0.0", + "subtle", + "zeroize", ] [[package]] name = "ssh-key" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca9b366a80cf18bb6406f4cf4d10aebfb46140a8c0c33f666a144c5c76ecbafc" -dependencies = [ - "ed25519-dalek", - "num-bigint-dig", - "p256", - "p384", - "p521", - "rand_core", - "rsa", - "sec1", - "sha2", - "signature", +version = "0.7.0-rc.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1b3dd9b51062c9dfd6339675bcc2bab19e91400a08cc167227e9184e99d715" +dependencies = [ + "ed25519-dalek 3.0.0-pre.4", + "p256 0.14.0-rc.4", + "p384 0.14.0-rc.4", + "p521 0.14.0-rc.4", + "rand_core 0.10.0-rc-3", + "rsa 0.10.0-rc.12", + "sec1 0.8.0-rc.11", + "sha2 0.11.0-rc.3", + "signature 3.0.0-rc.6", "ssh-cipher", - "ssh-encoding", + "ssh-encoding 0.3.0-rc.4", "subtle", "zeroize", ] @@ -2039,15 +2808,21 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.77" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "testresult" version = "0.4.1" @@ -2060,7 +2835,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", ] [[package]] @@ -2074,6 +2858,17 @@ dependencies = [ "syn", ] +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tokio" version = "1.40.0" @@ -2136,7 +2931,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a78e83a30223c757c3947cd144a31014ff04298d8719ae10d03c31c0448c8013" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -2151,13 +2946,35 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "universal-hash" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "crypto-common", + "crypto-common 0.1.6", + "subtle", +] + +[[package]] +name = "universal-hash" +version = "0.6.0-rc.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0386f227888b17b65d3e38219a7d41185035471300855c285667811907bb1677" +dependencies = [ + "crypto-common 0.2.0-rc.9", "subtle", ] @@ -2185,6 +3002,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + [[package]] name = "wasm-bindgen" version = "0.2.93" @@ -2277,6 +3103,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-sys" version = "0.52.0" @@ -2359,14 +3191,29 @@ dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x25519-dalek" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ - "curve25519-dalek", - "rand_core", + "curve25519-dalek 4.1.3", + "rand_core 0.6.4", "serde", "zeroize", ] @@ -2411,3 +3258,9 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zlib-rs" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" diff --git a/Cargo.toml b/Cargo.toml index 92238f7..640b0f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,11 +26,11 @@ log = { version = "0.4", optional = true } tokio = { version = "1", optional = true, features = ["rt", "net", "time"] } tokio-util = { version = "0.7", optional = true, features = ["codec"] } service-binding = { version = "^3", optional = true } -ssh-encoding = { version = "0.2" } -ssh-key = { version = "0.6", features = ["crypto", "alloc"] } +ssh-encoding = { version = "0.3.0-rc.4" } +ssh-key = { version = "0.7.0-rc.6", features = ["crypto", "alloc"] } thiserror = "1" subtle = { version = "2", default-features = false } -signature = { version = "2", features = ["alloc"] } +signature = { version = "3.0.0-rc.6", features = ["alloc"] } secrecy = "0.8" [features] @@ -40,14 +40,14 @@ agent = ["futures", "log", "tokio", "async-trait", "codec", "service-binding"] [dev-dependencies] env_logger = "0.11.5" -rand = "0.8.5" -rsa = { version = "0.9.6", features = ["sha2", "sha1"] } +rand = "0.10.0-rc.6" +rsa = { version = "0.10.0-rc.12", features = ["sha2", "sha1"] } tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync"] } -sha1 = { version = "0.10.6", default-features = false, features = ["oid"] } +sha1 = { version = "0.11.0-rc.3", default-features = false, features = ["oid"] } testresult = "0.4.1" hex-literal = "0.4.1" -ssh-key = { version = "0.6.6", features = ["p256", "rsa"] } -p256 = { version = "0.13.2" } +ssh-key = { version = "0.7.0-rc.6", features = ["p256", "rsa"] } +p256 = { version = "0.14.0-rc.2" } const-str = "0.5.7" rstest = "0.22.0" openpgp-card = "0.5.0" @@ -55,6 +55,6 @@ card-backend-pcsc = "0.5.0" clap = { version = "4.5.17", features = ["derive"] } secrecy = "0.8.0" retainer = "0.3.0" -pgp = "0.13.2" +pgp = "0.18.0" chrono = "0.4.38" interprocess = "2.2.1" diff --git a/examples/pgp-wrapper.rs b/examples/pgp-wrapper.rs index 61af481..6b81a3b 100644 --- a/examples/pgp-wrapper.rs +++ b/examples/pgp-wrapper.rs @@ -43,22 +43,25 @@ //! I like strawberries //! ``` -use std::io::Write as _; +use std::io::BufReader; -use chrono::DateTime; use clap::Parser; use pgp::{ - crypto::{ecc_curve::ECCCurve, hash::HashAlgorithm, public_key::PublicKeyAlgorithm}, + composed::{ + Esk, KeyDetails as ComposedKeyDetails, Message, PlainSessionKey, SignedPublicKey, + SignedPublicSubKey, + }, + crypto::{hash::HashAlgorithm, public_key::PublicKeyAlgorithm}, packet::{ - KeyFlags, PacketTrait, PublicKey, SignatureConfig, SignatureType, SignatureVersion, - Subpacket, SubpacketData, UserId, + KeyFlags, PacketTrait, PublicKey, Signature, SignatureConfig, SignatureType, Subpacket, + SubpacketData, UserId, }, ser::Serialize, types::{ - CompressionAlgorithm, KeyTrait, KeyVersion, Mpi, PublicKeyTrait, PublicParams, - SecretKeyTrait, Version, + CompressionAlgorithm, EcdhPublicParams, EddsaLegacyPublicParams, EncryptionKey, EskType, + Fingerprint, KeyDetails, KeyVersion, Mpi, Password, PkeskBytes, PublicParams, + SignatureBytes, SigningKey, VerifyingKey, }, - Deserializable as _, Esk, KeyDetails, Message, PlainSessionKey, Signature, }; use service_binding::Binding; use ssh_agent_lib::{ @@ -89,7 +92,7 @@ enum KeyRole { impl From for PublicKeyAlgorithm { fn from(value: KeyRole) -> Self { match value { - KeyRole::Signing => PublicKeyAlgorithm::EdDSA, + KeyRole::Signing => PublicKeyAlgorithm::EdDSALegacy, KeyRole::Decryption => PublicKeyAlgorithm::ECDH, } } @@ -100,34 +103,39 @@ fn ssh_to_pgp(pubkey: KeyData, key_role: KeyRole) -> PublicKey { panic!("The first key was not ed25519!"); }; + /* let mut key_bytes = key.0.to_vec(); // Add prefix to mark that this MPI uses EdDSA point representation. // See https://datatracker.ietf.org/doc/draft-koch-eddsa-for-openpgp/ key_bytes.insert(0, 0x40); + */ let public_params = match key_role { - KeyRole::Signing => PublicParams::EdDSA { + /* + KeyRole::Signing => PublicParams::EdDSALegacy(EddsaLegacyPublicParams::Unsupported { curve: ECCCurve::Ed25519, - q: key_bytes.into(), - }, + opaque: key_bytes.into(), + }), + */ + KeyRole::Signing => PublicParams::EdDSALegacy(EddsaLegacyPublicParams::Ed25519 { + key: key.try_into().expect("invalid Ed25519 key"), + }), // most common values taken from // https://gitlab.com/sequoia-pgp/sequoia/-/issues/838#note_909813463 - KeyRole::Decryption => PublicParams::ECDH { - curve: ECCCurve::Curve25519, - p: key_bytes.into(), - hash: HashAlgorithm::SHA2_256, + KeyRole::Decryption => PublicParams::ECDH(EcdhPublicParams::Curve25519 { + p: key.0.into(), + hash: HashAlgorithm::Sha256, alg_sym: pgp::crypto::sym::SymmetricKeyAlgorithm::AES128, - }, + ecdh_kdf_type: pgp::types::EcdhKdfType::Native, + }), }; PublicKey::new( - Version::New, KeyVersion::V4, key_role.into(), - // use fixed date so that the fingerprint generation is deterministic - DateTime::parse_from_rfc3339("2016-09-06T17:00:00+02:00") - .expect("date to be valid") - .into(), + // use fixed date (2016-09-06T17:00:00+02:00) so that the fingerprint generation is + // deterministic + pgp::types::Timestamp::from_secs(1473174000), None, public_params, ) @@ -146,31 +154,28 @@ impl WrappedKey { fn decrypt( &self, - mpis: &[Mpi], - ) -> Result<(Vec, pgp::crypto::sym::SymmetricKeyAlgorithm), pgp::errors::Error> { - if let PublicParams::ECDH { - curve, - alg_sym, - hash, - .. - } = self.public_key().public_params() + key: &PkeskBytes, + ) -> pgp::errors::Result<(Vec, pgp::crypto::sym::SymmetricKeyAlgorithm)> { + if let PublicParams::ECDH(params @ EcdhPublicParams::Curve25519 { hash, alg_sym, .. }) = + self.public_key.public_params() { - let ciphertext = mpis[0].as_bytes(); + let PkeskBytes::Ecdh { + public_point, + encrypted_session_key, + } = key + else { + unimplemented!("{key:?} not PkeskBytes::Ecdh") + }; - // encrypted and wrapped value derived from the session key - let encrypted_session_key = mpis[2].as_bytes(); + let ciphertext = public_point.as_ref(); - let ciphertext = if *curve == ECCCurve::Curve25519 { - assert_eq!( - ciphertext[0], 0x40, - "Unexpected shape of Cv25519 encrypted data" - ); + assert_eq!( + ciphertext[0], 0x40, + "Unexpected shape of Cv25519 encrypted data" + ); - // Strip trailing 0x40 - &ciphertext[1..] - } else { - unimplemented!(); - }; + // Strip leading 0x40 + let ciphertext = &ciphertext[1..]; let plaintext = Runtime::new() .expect("creating runtime to succeed") @@ -196,21 +201,21 @@ impl WrappedKey { .expect("not to be empty") .data[..]; - let encrypted_key_len: usize = mpis[1].first().copied().map(Into::into).unwrap_or(0); - - let decrypted_key: Vec = pgp::crypto::ecdh::derive_session_key( + let decrypted_key = pgp::crypto::ecdh::derive_session_key( shared_secret, encrypted_session_key, - encrypted_key_len, - &(curve.clone(), *alg_sym, *hash), - &self.public_key.fingerprint(), + encrypted_session_key.len(), + params.curve(), + *hash, + *alg_sym, + self.public_key.fingerprint().as_ref(), )?; // strip off the leading session key algorithm octet, and the two trailing checksum octets let dec_len = decrypted_key.len(); let (sessionkey, checksum) = ( &decrypted_key[1..dec_len - 2], - &decrypted_key[dec_len - 2..], + decrypted_key[dec_len - 2..].try_into().expect("len == 2"), ); // ... check the checksum, while we have it at hand @@ -219,7 +224,7 @@ impl WrappedKey { let session_key_algorithm = decrypted_key[0].into(); Ok((sessionkey.to_vec(), session_key_algorithm)) } else { - unimplemented!(); + unimplemented!("PublicParams::ECDH(EcdhPublicParams::Curve25519)"); } } } @@ -230,65 +235,54 @@ impl std::fmt::Debug for WrappedKey { } } -impl KeyTrait for WrappedKey { - fn fingerprint(&self) -> Vec { - self.public_key.fingerprint() +impl KeyDetails for WrappedKey { + fn version(&self) -> KeyVersion { + self.public_key.version() } - fn key_id(&self) -> pgp::types::KeyId { - self.public_key.key_id() + fn legacy_key_id(&self) -> pgp::types::KeyId { + self.public_key.legacy_key_id() + } + + fn fingerprint(&self) -> Fingerprint { + self.public_key.fingerprint() } fn algorithm(&self) -> pgp::crypto::public_key::PublicKeyAlgorithm { self.public_key.algorithm() } -} -impl PublicKeyTrait for WrappedKey { - fn verify_signature( - &self, - hash: pgp::crypto::hash::HashAlgorithm, - data: &[u8], - sig: &[pgp::types::Mpi], - ) -> pgp::errors::Result<()> { - self.public_key.verify_signature(hash, data, sig) + fn created_at(&self) -> pgp::types::Timestamp { + self.public_key.created_at() } - fn encrypt( - &self, - rng: &mut R, - plain: &[u8], - ) -> pgp::errors::Result> { - self.public_key.encrypt(rng, plain) + fn expiration(&self) -> Option { + self.public_key.expiration() } - fn to_writer_old(&self, writer: &mut impl std::io::Write) -> pgp::errors::Result<()> { - self.public_key.to_writer_old(writer) + fn public_params(&self) -> &PublicParams { + self.public_key.public_params() } } -impl SecretKeyTrait for WrappedKey { - type PublicKey = PublicKey; - - type Unlocked = Self; - - fn unlock(&self, _pw: F, work: G) -> pgp::errors::Result - where - F: FnOnce() -> String, - G: FnOnce(&Self::Unlocked) -> pgp::errors::Result, - { - work(self) +impl EncryptionKey for WrappedKey { + fn encrypt( + &self, + rng: &mut R, + plain: &[u8], + typ: EskType, + ) -> pgp::errors::Result { + self.public_key.encrypt(rng, plain, typ) } +} - fn create_signature( +impl SigningKey for WrappedKey { + fn sign( &self, - _key_pw: F, - _hash: pgp::crypto::hash::HashAlgorithm, + _key_pw: &pgp::types::Password, + _hash: HashAlgorithm, data: &[u8], - ) -> pgp::errors::Result> - where - F: FnOnce() -> String, - { + ) -> pgp::errors::Result { let signature = Runtime::new() .expect("creating runtime to succeed") .handle() @@ -307,18 +301,25 @@ impl SecretKeyTrait for WrappedKey { assert_eq!(sig.len(), 64); - Ok(vec![ - Mpi::from_raw_slice(&sig[..32]), - Mpi::from_raw_slice(&sig[32..]), - ]) + Ok(SignatureBytes::Mpis(vec![ + Mpi::from_slice(&sig[..32]), + Mpi::from_slice(&sig[32..]), + ])) } - fn public_key(&self) -> Self::PublicKey { - self.public_key.clone() + fn hash_alg(&self) -> HashAlgorithm { + HashAlgorithm::Sha256 } +} - fn public_params(&self) -> &pgp::types::PublicParams { - self.public_key.public_params() +impl VerifyingKey for WrappedKey { + fn verify( + &self, + hash: HashAlgorithm, + data: &[u8], + sig: &SignatureBytes, + ) -> pgp::errors::Result<()> { + self.public_key.verify(hash, data, sig) } } @@ -364,113 +365,122 @@ fn main() -> testresult::TestResult { Ok::<_, testresult::TestError>((client, identities, decrypt_ids)) })?; + let mut rng = rand::rng(); let pubkey = &identities[0].pubkey; match args { Args::Generate { userid } => { + let signer = WrappedKey::new(pubkey.clone(), client, KeyRole::Signing); let subkeys = if let Some(decryption_id) = decrypt_ids.first() { let mut keyflags = KeyFlags::default(); keyflags.set_encrypt_comms(true); keyflags.set_encrypt_storage(true); - let pk = ssh_to_pgp(decryption_id.pubkey.clone(), KeyRole::Decryption); - vec![pgp::PublicSubkey::new( - pgp::packet::PublicSubkey::new( - pk.packet_version(), - pk.version(), - pk.algorithm(), - *pk.created_at(), - pk.expiration(), - pk.public_params().clone(), - )?, + let sub_pk = ssh_to_pgp(decryption_id.pubkey.clone(), KeyRole::Decryption); + let pgp_pk = pgp::packet::PublicSubkey::new( + sub_pk.version(), + sub_pk.algorithm(), + sub_pk.created_at(), + sub_pk.expiration(), + sub_pk.public_params().clone(), + )?; + let sub_pk_sig = pgp_pk.sign( + &mut rng, + &signer, + &signer.public_key, + &Password::empty(), keyflags, - )] + None, + )?; + let signed_sub_pk = SignedPublicSubKey::new(pgp_pk, vec![sub_pk_sig]); + vec![signed_sub_pk] } else { vec![] }; - let signer = WrappedKey::new(pubkey.clone(), client, KeyRole::Signing); let mut keyflags = KeyFlags::default(); keyflags.set_sign(true); keyflags.set_certify(true); - let composed_pk = pgp::PublicKey::new( - signer.public_key(), - KeyDetails::new( - UserId::from_str(Default::default(), &userid), - vec![], - vec![], - keyflags, - Default::default(), - Default::default(), - vec![CompressionAlgorithm::Uncompressed].into(), - None, - ), - subkeys, + let composed_pk_details = ComposedKeyDetails::new( + Some(UserId::from_str(Default::default(), &userid)?), + vec![], + vec![], + keyflags, + Default::default(), + Default::default(), + Default::default(), + vec![CompressionAlgorithm::Uncompressed].into(), + vec![].into(), ); - let signed_pk = composed_pk.sign(&signer, String::new)?; + let signed_pk = SignedPublicKey::bind_with_signing_key( + &mut rng, + &signer, + signer.public_key.clone(), + composed_pk_details, + &Password::empty(), + subkeys, + )?; signed_pk.to_writer(&mut std::io::stdout())?; } Args::Sign => { let signer = WrappedKey::new(pubkey.clone(), client, KeyRole::Signing); - let signature = SignatureConfig::new_v4( - SignatureVersion::V4, - SignatureType::Binary, - signer.algorithm(), - HashAlgorithm::SHA2_256, - vec![ + let signature_config = { + let mut config = + SignatureConfig::from_key(&mut rng, &signer, SignatureType::Binary)?; + config.hash_alg = HashAlgorithm::Sha256; + config.hashed_subpackets = vec![ Subpacket::regular(SubpacketData::SignatureCreationTime( - std::time::SystemTime::now().into(), - )), - Subpacket::regular(SubpacketData::Issuer(signer.key_id())), - Subpacket::regular(SubpacketData::IssuerFingerprint( - KeyVersion::V4, - signer.fingerprint().into(), - )), - ], - vec![], - ); + pgp::types::Timestamp::now(), + ))?, + Subpacket::regular(SubpacketData::IssuerKeyId(signer.legacy_key_id()))?, + Subpacket::regular(SubpacketData::IssuerFingerprint(signer.fingerprint()))?, + ]; + config + }; - let mut hasher = signature.hash_alg.new_hasher()?; + let mut hasher = signature_config.hash_alg.new_hasher()?; - signature.hash_data_to_sign(&mut *hasher, std::io::stdin())?; - let len = signature.hash_signature_data(&mut *hasher)?; - hasher.update(&signature.trailer(len)?); + signature_config.hash_data_to_sign(&mut hasher, std::io::stdin())?; + let len = signature_config.hash_signature_data(&mut hasher)?; + hasher.update(&signature_config.trailer(len)?); - let hash = &hasher.finish()[..]; + let hash = &hasher.finalize()[..]; let signed_hash_value = [hash[0], hash[1]]; - let raw_sig = signer.create_signature(String::new, HashAlgorithm::SHA2_256, hash)?; + let raw_sig = signer.sign(&Password::empty(), signature_config.hash_alg, hash)?; - let signature = Signature::from_config(signature, signed_hash_value, raw_sig); - pgp::packet::write_packet(&mut std::io::stdout(), &signature)?; + let signature = Signature::from_config(signature_config, signed_hash_value, raw_sig)?; + signature.to_writer_with_header(&mut std::io::stdout())?; } Args::Decrypt => { let decryptor = WrappedKey::new(decrypt_ids[0].pubkey.clone(), client, KeyRole::Decryption); - let message = Message::from_bytes(std::io::stdin())?; + // Make our own BufReader for Stdin, because Stdin::lock() is !Send due to its + // MutexGuard + let source = BufReader::new(std::io::stdin()); + let message = Message::from_bytes(source)?; - let Message::Encrypted { esk, edata } = message else { + let Message::Encrypted { ref esk, .. } = message else { panic!("not encrypted"); }; - let mpis = if let Esk::PublicKeyEncryptedSessionKey(ref k) = esk[0] { - k.mpis() + let esk_bytes = if let Esk::PublicKeyEncryptedSessionKey(ref k) = esk[0] { + k.values()? } else { panic!("whoops") }; - let (session_key, session_key_algorithm) = - decryptor.unlock(String::new, |priv_key| priv_key.decrypt(mpis))?; + let (session_key, session_key_algorithm) = decryptor.decrypt(esk_bytes)?; - let plain_session_key = PlainSessionKey::V4 { - key: session_key, + let plain_session_key = PlainSessionKey::V3_4 { + key: session_key.into(), sym_alg: session_key_algorithm, }; - let decrypted = edata.decrypt(plain_session_key)?; + let mut decrypted = message.decrypt_with_session_key(plain_session_key)?; - if let Message::Literal(data) = decrypted { - std::io::stdout().write_all(data.data())?; + if let Message::Literal { ref mut reader, .. } = decrypted { + std::io::copy(reader, &mut std::io::stdout())?; } else { eprintln!("decrypted: {:?}", &decrypted); } diff --git a/tests/roundtrip/expected/fixtures.rs b/tests/roundtrip/expected/fixtures.rs index f994be2..14d475e 100644 --- a/tests/roundtrip/expected/fixtures.rs +++ b/tests/roundtrip/expected/fixtures.rs @@ -20,15 +20,18 @@ pub fn demo_key() -> EcdsaKeypair { .into(), false, ), - private: EcdsaPrivateKey::from(p256::SecretKey::new( - p256::elliptic_curve::ScalarPrimitive::new( - p256::elliptic_curve::bigint::Uint::from_be_slice(&hex!( - "ffd9f2ce4d0ee5870d8dc7cf771a7669" - "a0b96fe44bb58a8a0bc75a76b4f78240" - )), + private: EcdsaPrivateKey::from( + p256::SecretKey::from_scalar( + p256::elliptic_curve::ScalarValue::new( + p256::elliptic_curve::bigint::Uint::from_be_slice(&hex!( + "ffd9f2ce4d0ee5870d8dc7cf771a7669" + "a0b96fe44bb58a8a0bc75a76b4f78240" + )), + ) + .unwrap(), ) .unwrap(), - )), + ), } } diff --git a/tests/roundtrip/expected/req_parse_certificates.rs b/tests/roundtrip/expected/req_parse_certificates.rs index b7913ad..1d5dbbd 100644 --- a/tests/roundtrip/expected/req_parse_certificates.rs +++ b/tests/roundtrip/expected/req_parse_certificates.rs @@ -12,8 +12,8 @@ pub fn expected() -> Request { credential: Credential::Cert { algorithm: Algorithm::new("ssh-rsa").unwrap(), certificate: fixtures::demo_certificate(), - privkey: PrivateKeyData::Rsa(RsaPrivateKey { - d: Mpint::from_bytes(&hex!( + privkey: PrivateKeyData::Rsa(RsaPrivateKey::new( + Mpint::from_bytes(&hex!( " 063980B05C8B42329056DE1F025EB78D 68FDF1B2631811302C75913B86E81B28 8C975E6BFF04CF464705A2CE23DE7085 C2FF79E75CFEFD393F4B0420253B5526 @@ -30,7 +30,7 @@ pub fn expected() -> Request { " )) .unwrap(), - iqmp: Mpint::from_bytes(&hex!( + Mpint::from_bytes(&hex!( " 00E0DD19B95C563D9198F0F4E4B19677 FD17465875757DA008B93C0138FD89D7 1A1F5669D967B69814462530642A5595 DE4EE39A838AC8D38136CC2C20F7A7E6 @@ -41,7 +41,7 @@ pub fn expected() -> Request { B2" )) .unwrap(), - p: Mpint::from_bytes(&hex!( + Mpint::from_bytes(&hex!( " 00FABA9137F37DC9AB8B2821CE0C444 B03F5EA6EA5059488214ECCCC02417C 601E32E923710D2DC1417BFE293502A ED390EB93E544A51FD4686B4B520E49 @@ -52,7 +52,7 @@ pub fn expected() -> Request { 2A134F4ED9B181" )) .unwrap(), - q: Mpint::from_bytes(&hex!( + Mpint::from_bytes(&hex!( " 00E4F88607532262EAF1DB3F11D0253 5C32A7506ACB9BCD2B3E9B852A71FEA 134921015399BE8830DB4000B7F33EC 3AF71B56448178BD4D3310AD322855C @@ -63,7 +63,7 @@ pub fn expected() -> Request { F51F2C04164DE1" )) .unwrap(), - }), + ).unwrap()), comment: "baloo@angela".to_string(), }, },