From d6d856917fb2fddca11f79cabebd1cfce5ef259f Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Tue, 25 Feb 2025 19:46:42 -0800 Subject: [PATCH 01/10] x509-cert merge back in the workspace --- .github/workflows/x509-cert.yml | 4 +- Cargo.lock | 423 ++++++- Cargo.toml | 31 +- pkcs8/Cargo.toml | 2 +- x509-cert/Cargo.lock | 1165 ------------------ x509-cert/Cargo.toml | 22 +- x509-cert/src/anchor.rs | 6 +- x509-cert/src/attr.rs | 4 +- x509-cert/src/builder.rs | 31 +- x509-cert/src/builder/profile/cabf.rs | 14 +- x509-cert/src/builder/profile/cabf/tls.rs | 6 +- x509-cert/src/builder/profile/devid.rs | 6 +- x509-cert/src/certificate.rs | 6 +- x509-cert/src/crl.rs | 2 +- x509-cert/src/ext.rs | 2 +- x509-cert/src/ext/pkix/access.rs | 4 +- x509-cert/src/ext/pkix/authkeyid.rs | 2 +- x509-cert/src/ext/pkix/certpolicy.rs | 2 +- x509-cert/src/ext/pkix/constraints/basic.rs | 2 +- x509-cert/src/ext/pkix/constraints/name.rs | 2 +- x509-cert/src/ext/pkix/constraints/policy.rs | 2 +- x509-cert/src/ext/pkix/crl.rs | 2 +- x509-cert/src/ext/pkix/crl/dp.rs | 4 +- x509-cert/src/ext/pkix/keyusage.rs | 6 +- x509-cert/src/ext/pkix/name/dirstr.rs | 2 +- x509-cert/src/ext/pkix/name/hardware.rs | 2 +- x509-cert/src/ext/pkix/name/other.rs | 4 +- x509-cert/src/ext/pkix/policymap.rs | 2 +- x509-cert/src/ext/pkix/sct.rs | 4 +- x509-cert/src/name.rs | 10 +- x509-cert/src/request.rs | 6 +- x509-cert/src/request/builder.rs | 6 +- x509-cert/src/serial_number.rs | 27 +- x509-cert/tests/builder.rs | 13 +- x509-cert/tests/certificate.rs | 61 +- x509-cert/tests/certreq.rs | 8 +- x509-cert/tests/general_name.rs | 9 +- x509-cert/tests/name.rs | 28 +- x509-cert/tests/pkix_extensions.rs | 37 +- x509-cert/tests/trust_anchor_format.rs | 2 +- 40 files changed, 630 insertions(+), 1341 deletions(-) delete mode 100644 x509-cert/Cargo.lock diff --git a/.github/workflows/x509-cert.yml b/.github/workflows/x509-cert.yml index 339b09f54..27e7dfbc9 100644 --- a/.github/workflows/x509-cert.yml +++ b/.github/workflows/x509-cert.yml @@ -26,7 +26,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -53,7 +53,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 81a911ef1..05c06bb72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.6.0-rc.0" @@ -72,6 +87,21 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] + [[package]] name = "base16ct" version = "0.2.0" @@ -242,7 +272,7 @@ name = "const-oid" version = "0.10.1" dependencies = [ "arbitrary", - "hex-literal", + "hex-literal 1.0.0", "proptest", "regex", ] @@ -296,6 +326,19 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +[[package]] +name = "crypto-bigint" +version = "0.7.0-pre.0" +source = "git+https://github.com/RustCrypto/crypto-bigint.git#e97beae6593c30b4477b7f29e30e5372cd8204bf" +dependencies = [ + "hybrid-array", + "num-traits", + "rand_core 0.9.3", + "serdect", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.2.0-rc.2" @@ -305,6 +348,15 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "crypto-primes" +version = "0.7.0-dev" +source = "git+https://github.com/entropyxyz/crypto-primes.git#541a5eb1c05664385aaff2697faf72c7200a9786" +dependencies = [ + "crypto-bigint", + "rand_core 0.9.3", +] + [[package]] name = "ctr" version = "0.10.0-pre.2" @@ -324,7 +376,7 @@ dependencies = [ "der_derive", "flagset", "heapless", - "hex-literal", + "hex-literal 1.0.0", "pem-rfc7468", "proptest", "time", @@ -376,16 +428,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c478574b20020306f98d61c8ca3322d762e1ff08117422ac6106438605ea516" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] +[[package]] +name = "ecdsa" +version = "0.17.0-pre.9" +source = "git+https://github.com/RustCrypto/signatures.git#34cd7792c248e36693d617968d38c14d4ab4618a" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.14.0-rc.1" +source = "git+https://github.com/RustCrypto/traits.git#2dc47f8d1461a2a7a22b68e2afafeb4b59e13420" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "group", + "hybrid-array", + "pem-rfc7468", + "pkcs8", + "rand_core 0.9.3", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -408,6 +493,16 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "ff" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d42dd26f5790eda47c1a2158ea4120e32c35ddc9a7743c98a292accc01b54ef3" +dependencies = [ + "rand_core 0.9.3", + "subtle", +] + [[package]] name = "flagset" version = "0.4.7" @@ -420,6 +515,49 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -453,12 +591,29 @@ dependencies = [ "polyval", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + [[package]] name = "glob" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "group" +version = "0.14.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ff6a0b2dd4b981b1ae9e3e6830ab146771f3660d31d57bafd9018805a91b0f1" +dependencies = [ + "ff", + "rand_core 0.9.3", + "subtle", +] + [[package]] name = "half" version = "2.6.0" @@ -500,6 +655,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hex-literal" version = "1.0.0" @@ -509,7 +670,8 @@ checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" [[package]] name = "hmac" version = "0.13.0-pre.5" -source = "git+https://github.com/RustCrypto/MACs.git#cf736659b45d82dc3d95e6240030a3326381ec96" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62c11fc82c6b89c906b4d26b7b5a305d0b3aebd4b458dd1bd0a7ed98c548a28e" dependencies = [ "digest", ] @@ -521,6 +683,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dab50e193aebe510fe0e40230145820e02f48dae0cf339ea4204e6e708ff7bd" dependencies = [ "typenum", + "zeroize", ] [[package]] @@ -593,6 +756,15 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "miniz_oxide" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +dependencies = [ + "adler2", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -608,6 +780,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -626,6 +807,17 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +[[package]] +name = "p256" +version = "0.14.0-pre.2" +source = "git+https://github.com/RustCrypto/elliptic-curves.git#5ecd4718f9ce0ba092bc34edb981d63f75ed74a3" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "paste" version = "1.0.15" @@ -648,13 +840,25 @@ dependencies = [ "base64ct", ] +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkcs1" version = "0.8.0-rc.1" dependencies = [ "const-oid", "der", - "hex-literal", + "hex-literal 1.0.0", "pkcs8", "spki", "tempfile", @@ -669,7 +873,7 @@ dependencies = [ "cbc", "der", "des", - "hex-literal", + "hex-literal 1.0.0", "pbkdf2", "rand_core 0.9.3", "scrypt", @@ -683,7 +887,7 @@ name = "pkcs8" version = "0.11.0-rc.2" dependencies = [ "der", - "hex-literal", + "hex-literal 1.0.0", "pkcs5", "rand_core 0.9.3", "spki", @@ -718,6 +922,23 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "primeorder" +version = "0.14.0-pre.2" +source = "git+https://github.com/RustCrypto/elliptic-curves.git#5ecd4718f9ce0ba092bc34edb981d63f75ed74a3" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "proc-macro-crate" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit", +] + [[package]] name = "proc-macro2" version = "1.0.94" @@ -738,8 +959,8 @@ dependencies = [ "bitflags", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -775,10 +996,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", + "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", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -789,6 +1021,16 @@ dependencies = [ "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]] name = "rand_core" version = "0.6.4" @@ -845,6 +1087,21 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "relative-path" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" + +[[package]] +name = "rfc6979" +version = "0.5.0-pre.4" +source = "git+https://github.com/RustCrypto/signatures.git#34cd7792c248e36693d617968d38c14d4ab4618a" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "rmp" version = "0.8.14" @@ -867,6 +1124,70 @@ dependencies = [ "serde", ] +[[package]] +name = "rsa" +version = "0.10.0-pre.4" +source = "git+https://github.com/RustCrypto/RSA.git#cba78063a10fd76d10569653a8372c2af395f414" +dependencies = [ + "const-oid", + "crypto-bigint", + "crypto-primes", + "digest", + "pkcs1", + "pkcs8", + "rand_core 0.9.3", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rstest" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" +dependencies = [ + "futures-timer", + "futures-util", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" +dependencies = [ + "cfg-if", + "glob", + "proc-macro-crate", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn", + "unicode-ident", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "1.0.5" @@ -933,7 +1254,7 @@ version = "0.8.0-rc.4" dependencies = [ "base16ct", "der", - "hex-literal", + "hex-literal 1.0.0", "hybrid-array", "pkcs8", "serdect", @@ -942,6 +1263,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "semver" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" + [[package]] name = "serde" version = "1.0.219" @@ -1000,7 +1327,7 @@ dependencies = [ "base16ct", "bincode", "ciborium", - "hex-literal", + "hex-literal 1.0.0", "proptest", "rmp-serde", "serde", @@ -1032,6 +1359,24 @@ dependencies = [ "digest", ] +[[package]] +name = "signature" +version = "2.3.0-pre.6" +source = "git+https://github.com/RustCrypto/traits.git#2dc47f8d1461a2a7a22b68e2afafeb4b59e13420" +dependencies = [ + "digest", + "rand_core 0.9.3", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "spki" version = "0.8.0-rc.1" @@ -1039,7 +1384,7 @@ dependencies = [ "arbitrary", "base64ct", "der", - "hex-literal", + "hex-literal 1.0.0", "sha2", "tempfile", ] @@ -1153,6 +1498,28 @@ dependencies = [ "trybuild", ] +[[package]] +name = "tokio" +version = "1.44.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +dependencies = [ + "backtrace", + "pin-project-lite", + "tokio-macros", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "toml" version = "0.8.20" @@ -1364,6 +1731,38 @@ dependencies = [ "bitflags", ] +[[package]] +name = "x509-cert" +version = "0.3.0-pre.0" +dependencies = [ + "arbitrary", + "const-oid", + "der", + "ecdsa", + "hex-literal 0.4.1", + "p256", + "rand 0.9.0", + "rsa", + "rstest", + "sha1", + "sha2", + "signature", + "spki", + "tempfile", + "tls_codec", + "tokio", + "x509-cert-test-support", +] + +[[package]] +name = "x509-cert-test-support" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tempfile", +] + [[package]] name = "zerocopy" version = "0.8.24" diff --git a/Cargo.toml b/Cargo.toml index 5a96cfbcb..b5e6e0456 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,8 +23,8 @@ members = [ "tls_codec", "tls_codec/derive", #"x509-tsp", - #"x509-cert", - #"x509-cert/test-support", + "x509-cert", + "x509-cert/test-support", #"x509-ocsp" ] exclude = [ @@ -35,8 +35,6 @@ exclude = [ "gss-api", "pkcs12", "x509-tsp", - "x509-cert", - "x509-cert/test-support", "x509-ocsp" ] @@ -68,11 +66,32 @@ tai64 = { path = "./tai64" } tls_codec = { path = "./tls_codec" } tls_codec_derive = { path = "./tls_codec/derive" } #x509-tsp = { path = "./x509-tsp" } -#x509-cert = { path = "./x509-cert" } +x509-cert = { path = "./x509-cert" } #x509-ocsp = { path = "./x509-ocsp" } + +# https://github.com/RustCrypto/signatures/pull/913 +# https://github.com/RustCrypto/signatures/pull/923 +ecdsa = { git = "https://github.com/RustCrypto/signatures.git" } +rfc6979 = { git = "https://github.com/RustCrypto/signatures.git" } + + +# https://github.com/RustCrypto/traits/pull/1777 +elliptic-curve = { git = "https://github.com/RustCrypto/traits.git" } +signature = { git = "https://github.com/RustCrypto/traits.git" } + +# https://github.com/RustCrypto/RSA/pull/478 +# https://github.com/RustCrypto/RSA/pull/504 +rsa = { git = "https://github.com/RustCrypto/RSA.git" } + # https://github.com/RustCrypto/password-hashes/pull/577 +# https://github.com/RustCrypto/password-hashes/pull/578 pbkdf2 = { git = "https://github.com/RustCrypto/password-hashes.git" } scrypt = { git = "https://github.com/RustCrypto/password-hashes.git" } -hmac = { git = "https://github.com/RustCrypto/MACs.git" } +crypto-bigint = { git = "https://github.com/RustCrypto/crypto-bigint.git" } +crypto-primes = { git = "https://github.com/entropyxyz/crypto-primes.git" } + +# https://github.com/RustCrypto/elliptic-curves/pull/1125 +# https://github.com/RustCrypto/elliptic-curves/pull/1131 +p256 = { git = "https://github.com/RustCrypto/elliptic-curves.git" } diff --git a/pkcs8/Cargo.toml b/pkcs8/Cargo.toml index a139cf335..fcc6f1019 100644 --- a/pkcs8/Cargo.toml +++ b/pkcs8/Cargo.toml @@ -22,7 +22,7 @@ spki = { version = "0.8.0-rc.0" } # optional dependencies rand_core = { version = "0.9", optional = true, default-features = false } -pkcs5 = { version = "0.8.0-rc.0", optional = true, features = ["rand_core"] } +pkcs5 = { version = "0.8.0-rc.3", optional = true, features = ["rand_core"] } subtle = { version = "2", optional = true, default-features = false } [dev-dependencies] diff --git a/x509-cert/Cargo.lock b/x509-cert/Cargo.lock deleted file mode 100644 index cc5773e81..000000000 --- a/x509-cert/Cargo.lock +++ /dev/null @@ -1,1165 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "async-signature" -version = "0.6.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bdb5df8dde2bd1ec515a0981636508bb37d55984d0bae3678d4ac859125431" -dependencies = [ - "signature", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "block-buffer" -version = "0.11.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "git+https://github.com/RustCrypto/formats.git#967574cfc0d189d3c75aee4f6a0bc098fa532ed0" -dependencies = [ - "arbitrary", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-bigint" -version = "0.6.0-rc.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d748d1f5b807ee6d0df5a548d0130417295c3aaed1dcbbb3d6a2e7106e11fcca" -dependencies = [ - "hybrid-array", - "num-traits", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.2.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" -dependencies = [ - "getrandom 0.2.15", - "hybrid-array", - "rand_core", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "arbitrary", - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.11.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.17.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e62f2041a28c40b8884b79fbd19bc7457d76c6397767831e9ff4029fc0473a9" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.14.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc43715037532dc2d061e5c97e81b684c28993d52a4fa4eb7d2ce2826d78f2f2" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "group", - "hybrid-array", - "pem-rfc7468", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "futures-core" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" - -[[package]] -name = "futures-macro" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-task" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - -[[package]] -name = "futures-util" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hmac" -version = "0.13.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b1fb14e4df79f9406b434b60acef9f45c26c50062cccf1346c6103b8c47d58" -dependencies = [ - "digest", -] - -[[package]] -name = "hybrid-array" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" -dependencies = [ - "typenum", - "zeroize", -] - -[[package]] -name = "indexmap" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "libm" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "miniz_oxide" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" -dependencies = [ - "adler2", -] - -[[package]] -name = "num-bigint-dig" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" -dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand", - "smallvec", - "zeroize", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" - -[[package]] -name = "p256" -version = "0.14.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f3fd64a9cad9c26ed7f734b152196d5e56376b9957c832bcca0de48a708080" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs1" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226eb25e2c46c166ce498ac0f606ac623142d640064879ff445938accddff1e2" -dependencies = [ - "der", - "pkcs8", - "spki", -] - -[[package]] -name = "pkcs8" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primeorder" -version = "0.14.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794117b388378d55629f78f61e64e182baa200bf59c1a8205e0c46508ce5873" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "regex" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "relative-path" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" - -[[package]] -name = "rfc6979" -version = "0.5.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871ee76a3eee98b0f805e5d1caf26929f4565073c580c053a55f886fc15dea49" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rsa" -version = "0.10.0-pre.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07058e83b684989ab0559f9e22322f4e3f7e49147834ed0bae40486b9e70473c" -dependencies = [ - "const-oid", - "digest", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8", - "rand_core", - "sha2", - "signature", - "spki", - "subtle", - "zeroize", -] - -[[package]] -name = "rstest" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" -dependencies = [ - "futures-timer", - "futures-util", - "rstest_macros", - "rustc_version", -] - -[[package]] -name = "rstest_macros" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" -dependencies = [ - "cfg-if", - "glob", - "proc-macro-crate", - "proc-macro2", - "quote", - "regex", - "relative-path", - "rustc_version", - "syn", - "unicode-ident", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "ryu" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" - -[[package]] -name = "sec1" -version = "0.8.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1988446eff153796413a73669dfaa4caa3f5ce8b25fac89e3821a39c611772e" -dependencies = [ - "base16ct", - "der", - "hybrid-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "semver" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" - -[[package]] -name = "serde" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "sha1" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540978cef7a8498211c1b1c14e5ce920fe5bd524ea84f4a3d72d4602515ae93" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "signature" -version = "2.3.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054d71959c7051b9042c26af337f05cc930575ed2604d7d3ced3158383e59734" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "arbitrary", - "base64ct", - "der", - "sha2", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" -dependencies = [ - "cfg-if", - "fastrand", - "getrandom 0.3.1", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "tls_codec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" -dependencies = [ - "tls_codec_derive", - "zeroize", -] - -[[package]] -name = "tls_codec_derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio" -version = "1.43.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "492a604e2fd7f814268a378409e6c92b5525d747d10db9a229723f55a417958c" -dependencies = [ - "backtrace", - "pin-project-lite", - "tokio-macros", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" - -[[package]] -name = "toml_edit" -version = "0.22.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" -dependencies = [ - "memchr", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -dependencies = [ - "arbitrary", - "async-signature", - "const-oid", - "der", - "ecdsa", - "hex-literal", - "p256", - "rand", - "rsa", - "rstest", - "sha1", - "sha2", - "signature", - "spki", - "tempfile", - "tls_codec", - "tokio", - "x509-cert-test-support", -] - -[[package]] -name = "x509-cert-test-support" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", - "tempfile", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/x509-cert/Cargo.toml b/x509-cert/Cargo.toml index 7d77dcc97..7a38b49f5 100644 --- a/x509-cert/Cargo.toml +++ b/x509-cert/Cargo.toml @@ -12,29 +12,28 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "data-structures", "encoding", "no-std"] keywords = ["crypto"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] -const-oid = { version = "0.10.0-rc.0", features = ["db"] } +const-oid = { version = "0.10.0", features = ["db"] } der = { version = "0.8.0-rc.0", features = ["alloc", "derive", "flagset", "oid"] } spki = { version = "0.8.0-rc.0", features = ["alloc"] } # optional dependencies arbitrary = { version = "1.4", features = ["derive"], optional = true } -async-signature = { version = "=0.6.0-pre.4", features = ["digest", "rand_core"], optional = true } -sha1 = { version = "0.11.0-pre.4", optional = true } -signature = { version = "=2.3.0-pre.4", features = ["rand_core"], optional = true } +sha1 = { version = "0.11.0-pre.5", optional = true } +signature = { version = "=2.3.0-pre.6", features = ["rand_core"], optional = true } tls_codec = { version = "0.4.0", default-features = false, features = ["derive"], optional = true } [dev-dependencies] hex-literal = "0.4" -rand = "0.8.5" -rsa = { version = "=0.10.0-pre.3", features = ["sha2"] } +rand = "0.9" +rsa = { version = "=0.10.0-pre.4", features = ["sha2"] } ecdsa = { version = "=0.17.0-pre.9", features = ["digest", "pem"] } p256 = "=0.14.0-pre.2" rstest = "0.24" -sha2 = { version = "=0.11.0-pre.4", features = ["oid"] } +sha2 = { version = "=0.11.0-pre.5", features = ["oid"] } tempfile = "3.5.0" tokio = { version = "1.43.1", features = ["macros", "rt"] } x509-cert-test-support = { path = "./test-support" } @@ -44,7 +43,7 @@ default = ["pem", "std"] std = ["der/std", "spki/std", "tls_codec?/std"] arbitrary = ["dep:arbitrary", "std", "der/arbitrary", "spki/arbitrary"] -builder = ["async-signature", "std", "sha1/default", "signature"] +builder = ["std", "sha1/default", "signature"] hazmat = [] pem = ["der/pem", "spki/pem"] sct = ["dep:tls_codec"] @@ -54,6 +53,3 @@ base64 = ["spki/base64"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] - -[patch.crates-io] -const-oid = { git = "https://github.com/RustCrypto/formats.git" } diff --git a/x509-cert/src/anchor.rs b/x509-cert/src/anchor.rs index 292372836..9b2d60704 100644 --- a/x509-cert/src/anchor.rs +++ b/x509-cert/src/anchor.rs @@ -1,15 +1,15 @@ //! Trust anchor-related structures as defined in RFC 5914 use crate::certificate::{CertificateInner, Profile, Rfc5280, TbsCertificateInner}; -use crate::ext::pkix::{certpolicy::CertificatePolicies, NameConstraints}; +use crate::ext::pkix::{NameConstraints, certpolicy::CertificatePolicies}; use crate::{ext::Extensions, name::Name}; use crate::SubjectPublicKeyInfo; use alloc::string::String; use der::{ - asn1::OctetString, - flagset::{flags, FlagSet}, Choice, Enumerated, Sequence, + asn1::OctetString, + flagset::{FlagSet, flags}, }; /// Version identifier for TrustAnchorInfo diff --git a/x509-cert/src/attr.rs b/x509-cert/src/attr.rs index f19fea6a6..daa64628f 100644 --- a/x509-cert/src/attr.rs +++ b/x509-cert/src/attr.rs @@ -2,20 +2,20 @@ use alloc::vec::Vec; use const_oid::db::{ + DB, Database, rfc3280::EMAIL_ADDRESS, rfc4519::{COUNTRY_NAME, DOMAIN_COMPONENT, SERIAL_NUMBER}, - Database, DB, }; use core::{ fmt::{self, Write}, str::FromStr, }; use der::{ + Decode, Encode, Error, ErrorKind, Sequence, Tag, Tagged, ValueOrd, asn1::{ Any, Ia5StringRef, ObjectIdentifier, PrintableStringRef, SetOfVec, TeletexStringRef, Utf8StringRef, }, - Decode, Encode, Error, ErrorKind, Sequence, Tag, Tagged, ValueOrd, }; /// X.501 `AttributeType` as defined in [RFC 5280 Appendix A.1]. diff --git a/x509-cert/src/builder.rs b/x509-cert/src/builder.rs index 1949ce25b..bd744576c 100644 --- a/x509-cert/src/builder.rs +++ b/x509-cert/src/builder.rs @@ -1,20 +1,21 @@ //! X509 Certificate builder use alloc::vec; -use async_signature::{AsyncRandomizedSigner, AsyncSigner}; use core::fmt; -use der::{asn1::BitString, referenced::OwnedToRef, Encode}; -use signature::{rand_core::CryptoRngCore, Keypair, RandomizedSigner, Signer}; +use der::{Encode, asn1::BitString, referenced::OwnedToRef}; +use signature::{ + AsyncRandomizedSigner, AsyncSigner, Keypair, RandomizedSigner, Signer, rand_core::CryptoRng, +}; use spki::{ DynSignatureAlgorithmIdentifier, EncodePublicKey, ObjectIdentifier, SignatureBitStringEncoding, }; use crate::{ + AlgorithmIdentifier, SubjectPublicKeyInfo, certificate::{Certificate, TbsCertificate, Version}, ext::{AsExtension, Extensions}, serial_number::SerialNumber, time::Validity, - AlgorithmIdentifier, SubjectPublicKeyInfo, }; pub mod profile; @@ -78,8 +79,14 @@ impl fmt::Display for Error { f, "Each RelativeDistinguishedName MUST contain exactly one AttributeTypeAndValue." ), - Error::NonUniqueATV => write!(f, "Each Name MUST NOT contain more than one instance of a given AttributeTypeAndValue"), - Error::InvalidAttribute{oid} => write!(f, "Non-ordered attribute or invalid attribute found (oid={oid})"), + Error::NonUniqueATV => write!( + f, + "Each Name MUST NOT contain more than one instance of a given AttributeTypeAndValue" + ), + Error::InvalidAttribute { oid } => write!( + f, + "Non-ordered attribute or invalid attribute found (oid={oid})" + ), Error::MissingAttributes => write!(f, "Not all required elements were specified"), } } @@ -250,16 +257,13 @@ pub trait Builder: Sized { } /// Run the object through the signer and build it. - fn build_with_rng( - mut self, - signer: &S, - rng: &mut impl CryptoRngCore, - ) -> Result + fn build_with_rng(mut self, signer: &S, rng: &mut R) -> Result where S: RandomizedSigner, S: Keypair + DynSignatureAlgorithmIdentifier, S::VerifyingKey: EncodePublicKey, Signature: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let blob = self.finalize(signer)?; @@ -361,16 +365,17 @@ pub trait AsyncBuilder: Sized { } /// Run the object through the signer and build it. - async fn build_with_rng_async( + async fn build_with_rng_async( mut self, signer: &S, - rng: &mut impl CryptoRngCore, + rng: &mut R, ) -> Result where S: AsyncRandomizedSigner, S: Keypair + DynSignatureAlgorithmIdentifier, S::VerifyingKey: EncodePublicKey, Signature: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let blob = self.finalize(signer)?; diff --git a/x509-cert/src/builder/profile/cabf.rs b/x509-cert/src/builder/profile/cabf.rs index c8193d987..6db33f61b 100644 --- a/x509-cert/src/builder/profile/cabf.rs +++ b/x509-cert/src/builder/profile/cabf.rs @@ -8,10 +8,10 @@ use crate::{ builder::{BuilderProfile, Error, Result}, certificate::TbsCertificate, ext::{ + AsExtension, Extension, pkix::{ AuthorityKeyIdentifier, BasicConstraints, KeyUsage, KeyUsages, SubjectKeyIdentifier, }, - AsExtension, Extension, }, name::Name, }; @@ -230,10 +230,12 @@ mod tests { assert!( check_names_encoding(&Name::from_str("ST=CA,C=US").expect("parse name"), false).is_ok() ); - assert!(check_names_encoding( - &Name::from_str("serialNumber=1234,ST=CA,C=US").expect("parse name"), - false - ) - .is_ok()); + assert!( + check_names_encoding( + &Name::from_str("serialNumber=1234,ST=CA,C=US").expect("parse name"), + false + ) + .is_ok() + ); } } diff --git a/x509-cert/src/builder/profile/cabf/tls.rs b/x509-cert/src/builder/profile/cabf/tls.rs index a69ce121c..a43f87679 100644 --- a/x509-cert/src/builder/profile/cabf/tls.rs +++ b/x509-cert/src/builder/profile/cabf/tls.rs @@ -16,11 +16,11 @@ use crate::{ builder::{BuilderProfile, Result}, certificate::TbsCertificate, ext::{ + AsExtension, Extension, pkix::{ - name::GeneralNames, AuthorityKeyIdentifier, BasicConstraints, ExtendedKeyUsage, - KeyUsage, KeyUsages, SubjectKeyIdentifier, + AuthorityKeyIdentifier, BasicConstraints, ExtendedKeyUsage, KeyUsage, KeyUsages, + SubjectKeyIdentifier, name::GeneralNames, }, - AsExtension, Extension, }, name::{Name, RelativeDistinguishedName}, }; diff --git a/x509-cert/src/builder/profile/devid.rs b/x509-cert/src/builder/profile/devid.rs index d3f838d96..14582cb6b 100644 --- a/x509-cert/src/builder/profile/devid.rs +++ b/x509-cert/src/builder/profile/devid.rs @@ -19,15 +19,15 @@ use crate::{ builder::{BuilderProfile, Result}, certificate::TbsCertificate, ext::{ + AsExtension, Extension, pkix::{ - name::{GeneralName, GeneralNames, HardwareModuleName, OtherName}, AuthorityKeyIdentifier, KeyUsage, KeyUsages, SubjectAltName, + name::{GeneralName, GeneralNames, HardwareModuleName, OtherName}, }, - AsExtension, Extension, }, name::Name, }; -use der::{asn1::OctetString, ErrorKind}; +use der::{ErrorKind, asn1::OctetString}; use spki::{ObjectIdentifier, SubjectPublicKeyInfoRef}; // TODO(tarcieri): use this when `const-oid` has been bumped to v0.10.0-rc.0 diff --git a/x509-cert/src/certificate.rs b/x509-cert/src/certificate.rs index 67fc176bf..c2f57af3e 100644 --- a/x509-cert/src/certificate.rs +++ b/x509-cert/src/certificate.rs @@ -1,16 +1,16 @@ //! Certificate types -use crate::{ext, name::Name, serial_number::SerialNumber, time::Validity}; use crate::{AlgorithmIdentifier, SubjectPublicKeyInfo}; +use crate::{ext, name::Name, serial_number::SerialNumber, time::Validity}; use alloc::vec::Vec; use const_oid::AssociatedOid; use core::{cmp::Ordering, fmt::Debug}; -use der::{asn1::BitString, Decode, Enumerated, ErrorKind, Sequence, Tag, ValueOrd}; +use der::{Decode, Enumerated, ErrorKind, Sequence, Tag, ValueOrd, asn1::BitString}; #[cfg(feature = "pem")] use der::{ - pem::{self, PemLabel}, DecodePem, + pem::{self, PemLabel}, }; use crate::time::Time; diff --git a/x509-cert/src/crl.rs b/x509-cert/src/crl.rs index 22ee4b596..4230005ca 100644 --- a/x509-cert/src/crl.rs +++ b/x509-cert/src/crl.rs @@ -1,12 +1,12 @@ //! Certificate Revocation List types use crate::{ + AlgorithmIdentifier, Version, certificate::{Profile, Rfc5280}, ext::Extensions, name::Name, serial_number::SerialNumber, time::Time, - AlgorithmIdentifier, Version, }; use alloc::vec::Vec; diff --git a/x509-cert/src/ext.rs b/x509-cert/src/ext.rs index ef3084581..71232fabc 100644 --- a/x509-cert/src/ext.rs +++ b/x509-cert/src/ext.rs @@ -1,7 +1,7 @@ //! Standardized X.509 Certificate Extensions use const_oid::AssociatedOid; -use der::{asn1::OctetString, Sequence, ValueOrd}; +use der::{Sequence, ValueOrd, asn1::OctetString}; use spki::ObjectIdentifier; pub mod pkix; diff --git a/x509-cert/src/ext/pkix/access.rs b/x509-cert/src/ext/pkix/access.rs index 4d2d9db17..b07fc0577 100644 --- a/x509-cert/src/ext/pkix/access.rs +++ b/x509-cert/src/ext/pkix/access.rs @@ -3,10 +3,10 @@ use super::name::GeneralName; use alloc::vec::Vec; use const_oid::{ - db::rfc5280::{ID_PE_AUTHORITY_INFO_ACCESS, ID_PE_SUBJECT_INFO_ACCESS}, AssociatedOid, + db::rfc5280::{ID_PE_AUTHORITY_INFO_ACCESS, ID_PE_SUBJECT_INFO_ACCESS}, }; -use der::{asn1::ObjectIdentifier, Sequence, ValueOrd}; +use der::{Sequence, ValueOrd, asn1::ObjectIdentifier}; /// AuthorityInfoAccessSyntax as defined in [RFC 5280 Section 4.2.2.1]. /// diff --git a/x509-cert/src/ext/pkix/authkeyid.rs b/x509-cert/src/ext/pkix/authkeyid.rs index 60b61e5e0..f1e184310 100644 --- a/x509-cert/src/ext/pkix/authkeyid.rs +++ b/x509-cert/src/ext/pkix/authkeyid.rs @@ -3,8 +3,8 @@ use crate::serial_number::SerialNumber; use const_oid::db::rfc5280::ID_CE_AUTHORITY_KEY_IDENTIFIER; use const_oid::{AssociatedOid, ObjectIdentifier}; -use der::asn1::OctetString; use der::Sequence; +use der::asn1::OctetString; /// AuthorityKeyIdentifier as defined in [RFC 5280 Section 4.2.1.1]. /// diff --git a/x509-cert/src/ext/pkix/certpolicy.rs b/x509-cert/src/ext/pkix/certpolicy.rs index 85820c14d..e8fc6c312 100644 --- a/x509-cert/src/ext/pkix/certpolicy.rs +++ b/x509-cert/src/ext/pkix/certpolicy.rs @@ -2,8 +2,8 @@ use alloc::{string::String, vec::Vec}; -use const_oid::db::rfc5912::ID_CE_CERTIFICATE_POLICIES; use const_oid::AssociatedOid; +use const_oid::db::rfc5912::ID_CE_CERTIFICATE_POLICIES; use der::asn1::{GeneralizedTime, Ia5String, ObjectIdentifier, Uint}; use der::{Any, Choice, Sequence, ValueOrd}; diff --git a/x509-cert/src/ext/pkix/constraints/basic.rs b/x509-cert/src/ext/pkix/constraints/basic.rs index c50d8e837..0f3b4b4bf 100644 --- a/x509-cert/src/ext/pkix/constraints/basic.rs +++ b/x509-cert/src/ext/pkix/constraints/basic.rs @@ -1,4 +1,4 @@ -use const_oid::{db::rfc5280::ID_CE_BASIC_CONSTRAINTS, AssociatedOid, ObjectIdentifier}; +use const_oid::{AssociatedOid, ObjectIdentifier, db::rfc5280::ID_CE_BASIC_CONSTRAINTS}; use der::Sequence; /// BasicConstraints as defined in [RFC 5280 Section 4.2.1.9]. diff --git a/x509-cert/src/ext/pkix/constraints/name.rs b/x509-cert/src/ext/pkix/constraints/name.rs index c05d00564..8b47e5c6e 100644 --- a/x509-cert/src/ext/pkix/constraints/name.rs +++ b/x509-cert/src/ext/pkix/constraints/name.rs @@ -2,7 +2,7 @@ use alloc::vec::Vec; -use const_oid::{db::rfc5280::ID_CE_NAME_CONSTRAINTS, AssociatedOid, ObjectIdentifier}; +use const_oid::{AssociatedOid, ObjectIdentifier, db::rfc5280::ID_CE_NAME_CONSTRAINTS}; use der::Sequence; use super::super::name::GeneralName; diff --git a/x509-cert/src/ext/pkix/constraints/policy.rs b/x509-cert/src/ext/pkix/constraints/policy.rs index c4097372a..53f788896 100644 --- a/x509-cert/src/ext/pkix/constraints/policy.rs +++ b/x509-cert/src/ext/pkix/constraints/policy.rs @@ -1,4 +1,4 @@ -use const_oid::{db::rfc5280::ID_CE_POLICY_CONSTRAINTS, AssociatedOid, ObjectIdentifier}; +use const_oid::{AssociatedOid, ObjectIdentifier, db::rfc5280::ID_CE_POLICY_CONSTRAINTS}; use der::Sequence; /// Policy constraints extension as defined in [RFC 5280 Section 4.2.1.11]. diff --git a/x509-cert/src/ext/pkix/crl.rs b/x509-cert/src/ext/pkix/crl.rs index f3e9397ba..a4011a5a9 100644 --- a/x509-cert/src/ext/pkix/crl.rs +++ b/x509-cert/src/ext/pkix/crl.rs @@ -11,7 +11,7 @@ pub use dp::IssuingDistributionPoint; use alloc::vec::Vec; -use der::{asn1::Uint, Enumerated}; +use der::{Enumerated, asn1::Uint}; /// CrlNumber as defined in [RFC 5280 Section 5.2.3]. /// diff --git a/x509-cert/src/ext/pkix/crl/dp.rs b/x509-cert/src/ext/pkix/crl/dp.rs index 7acd2c95d..7bb96b157 100644 --- a/x509-cert/src/ext/pkix/crl/dp.rs +++ b/x509-cert/src/ext/pkix/crl/dp.rs @@ -1,7 +1,7 @@ //! PKIX distribution point types -use const_oid::{db::rfc5280::ID_PE_SUBJECT_INFO_ACCESS, AssociatedOid, ObjectIdentifier}; -use der::flagset::{flags, FlagSet}; +use const_oid::{AssociatedOid, ObjectIdentifier, db::rfc5280::ID_PE_SUBJECT_INFO_ACCESS}; +use der::flagset::{FlagSet, flags}; use der::{Sequence, ValueOrd}; use crate::ext::pkix::name::{DistributionPointName, GeneralNames}; diff --git a/x509-cert/src/ext/pkix/keyusage.rs b/x509-cert/src/ext/pkix/keyusage.rs index bd1820fcc..9845a223e 100644 --- a/x509-cert/src/ext/pkix/keyusage.rs +++ b/x509-cert/src/ext/pkix/keyusage.rs @@ -1,12 +1,12 @@ use alloc::vec::Vec; +use const_oid::AssociatedOid; use const_oid::db::rfc5280::{ ID_CE_EXT_KEY_USAGE, ID_CE_KEY_USAGE, ID_CE_PRIVATE_KEY_USAGE_PERIOD, }; -use const_oid::AssociatedOid; -use der::asn1::{GeneralizedTime, ObjectIdentifier}; -use der::flagset::{flags, FlagSet}; use der::Sequence; +use der::asn1::{GeneralizedTime, ObjectIdentifier}; +use der::flagset::{FlagSet, flags}; flags! { /// Key usage flags as defined in [RFC 5280 Section 4.2.1.3]. diff --git a/x509-cert/src/ext/pkix/name/dirstr.rs b/x509-cert/src/ext/pkix/name/dirstr.rs index 87f703730..045cb19cc 100644 --- a/x509-cert/src/ext/pkix/name/dirstr.rs +++ b/x509-cert/src/ext/pkix/name/dirstr.rs @@ -1,7 +1,7 @@ use alloc::string::String; use der::{ - asn1::{Any, PrintableString, TeletexString}, Choice, FixedTag, Header, Reader, ValueOrd, + asn1::{Any, PrintableString, TeletexString}, }; /// DirectoryString as defined in [RFC 5280 Section 4.2.1.4]. diff --git a/x509-cert/src/ext/pkix/name/hardware.rs b/x509-cert/src/ext/pkix/name/hardware.rs index b65bcb356..5a123c50b 100644 --- a/x509-cert/src/ext/pkix/name/hardware.rs +++ b/x509-cert/src/ext/pkix/name/hardware.rs @@ -1,8 +1,8 @@ use crate::ext::pkix::name::OtherName; use const_oid::db::rfc5911::ID_ON_HARDWARE_MODULE_NAME; use der::{ - asn1::{ObjectIdentifier, OctetString}, Any, Sequence, ValueOrd, + asn1::{ObjectIdentifier, OctetString}, }; /// HardwareModuleName as defined in [RFC 4108 Section 5]. diff --git a/x509-cert/src/ext/pkix/name/other.rs b/x509-cert/src/ext/pkix/name/other.rs index 89a565ea9..24eee0e93 100644 --- a/x509-cert/src/ext/pkix/name/other.rs +++ b/x509-cert/src/ext/pkix/name/other.rs @@ -1,4 +1,4 @@ -use der::{asn1::ObjectIdentifier, Any, Sequence, ValueOrd}; +use der::{Any, Sequence, ValueOrd, asn1::ObjectIdentifier}; /// OtherName as defined in [RFC 5280 Section 4.2.1.6]. /// @@ -24,7 +24,7 @@ pub struct OtherName { #[allow(clippy::unwrap_used)] fn test() { use alloc::string::ToString; - use der::{asn1::Utf8StringRef, Decode, Encode}; + use der::{Decode, Encode, asn1::Utf8StringRef}; use hex_literal::hex; let input = hex!("3021060A2B060104018237140203A0130C1155706E5F323134393530313330406D696C"); diff --git a/x509-cert/src/ext/pkix/policymap.rs b/x509-cert/src/ext/pkix/policymap.rs index 1997f5493..ed2e0609b 100644 --- a/x509-cert/src/ext/pkix/policymap.rs +++ b/x509-cert/src/ext/pkix/policymap.rs @@ -1,7 +1,7 @@ use alloc::vec::Vec; -use const_oid::db::rfc5280::ID_CE_POLICY_MAPPINGS; use const_oid::AssociatedOid; +use const_oid::db::rfc5280::ID_CE_POLICY_MAPPINGS; use der::asn1::ObjectIdentifier; use der::{Sequence, ValueOrd}; diff --git a/x509-cert/src/ext/pkix/sct.rs b/x509-cert/src/ext/pkix/sct.rs index f62cc9864..236d08e46 100644 --- a/x509-cert/src/ext/pkix/sct.rs +++ b/x509-cert/src/ext/pkix/sct.rs @@ -4,7 +4,7 @@ //! [Certificate Transparency RFC 6962]: https://datatracker.ietf.org/doc/html/rfc6962 use alloc::{format, vec::Vec}; -use const_oid::{db::rfc6962::CT_PRECERT_SCTS, AssociatedOid, ObjectIdentifier}; +use const_oid::{AssociatedOid, ObjectIdentifier, db::rfc6962::CT_PRECERT_SCTS}; use der::asn1::OctetString; use tls_codec::{ DeserializeBytes, SerializeBytes, TlsByteVecU16, TlsDeserializeBytes, TlsSerializeBytes, @@ -244,7 +244,7 @@ pub enum HashAlgorithm { #[cfg(test)] mod tests { - use der::{asn1::OctetString, Decode, Encode}; + use der::{Decode, Encode, asn1::OctetString}; use tls_codec::{DeserializeBytes, SerializeBytes, TlsByteVecU16}; use crate::ext::pkix::sct::LogId; diff --git a/x509-cert/src/name.rs b/x509-cert/src/name.rs index 8b0c0740e..de09156ae 100644 --- a/x509-cert/src/name.rs +++ b/x509-cert/src/name.rs @@ -3,13 +3,13 @@ use crate::{attr::AttributeTypeAndValue, ext::pkix::name::DirectoryString}; use alloc::vec::Vec; use const_oid::{ - db::{rfc3280, rfc4519}, ObjectIdentifier, + db::{rfc3280, rfc4519}, }; use core::{cmp::Ordering, fmt, str::FromStr}; use der::{ - asn1::{Any, Ia5StringRef, PrintableStringRef, SetOfVec}, DecodeValue, Encode, EncodeValue, FixedTag, Header, Length, Reader, Tag, ValueOrd, Writer, + asn1::{Any, Ia5StringRef, PrintableStringRef, SetOfVec}, }; /// X.501 Name as defined in [RFC 5280 Section 4.1.2.4]. X.501 Name is used to represent distinguished names. @@ -136,7 +136,7 @@ impl Name { /// Returns the number of [`RelativeDistinguishedName`] elements in this [`Name`]. pub fn len(&self) -> usize { - self.0 .0.len() + self.0.0.len() } /// Returns an iterator over the inner [`AttributeTypeAndValue`]s. @@ -145,13 +145,13 @@ impl Name { /// [`RelativeDistinguishedName`]s. If you need this, use [`Self::iter_rdn`]. #[inline] pub fn iter(&self) -> impl Iterator + '_ { - self.0 .0.iter().flat_map(move |rdn| rdn.0.as_slice()) + self.0.0.iter().flat_map(move |rdn| rdn.0.as_slice()) } /// Returns an iterator over the inner [`RelativeDistinguishedName`]s. #[inline] pub fn iter_rdn(&self) -> impl Iterator + '_ { - self.0 .0.iter() + self.0.0.iter() } } diff --git a/x509-cert/src/request.rs b/x509-cert/src/request.rs index 0f1bdb1a1..f239829f5 100644 --- a/x509-cert/src/request.rs +++ b/x509-cert/src/request.rs @@ -1,10 +1,10 @@ //! PKCS#10 Certification Request types use crate::{ + AlgorithmIdentifier, SubjectPublicKeyInfo, attr::{Attribute, AttributeValue, Attributes}, ext::Extension, name::Name, - AlgorithmIdentifier, SubjectPublicKeyInfo, }; use alloc::vec::Vec; @@ -12,8 +12,8 @@ use alloc::vec::Vec; use const_oid::db::rfc5912::ID_EXTENSION_REQ; use const_oid::{AssociatedOid, ObjectIdentifier}; use der::{ - asn1::{Any, BitString, SetOfVec}, Decode, Enumerated, Sequence, + asn1::{Any, BitString, SetOfVec}, }; #[cfg(feature = "pem")] @@ -137,8 +137,8 @@ pub mod attributes { use alloc::vec; use const_oid::AssociatedOid; use der::{ - asn1::{Any, ObjectIdentifier, SetOfVec}, EncodeValue, Length, Result, Tag, Tagged, Writer, + asn1::{Any, ObjectIdentifier, SetOfVec}, }; use crate::{attr::Attribute, ext::pkix::name::DirectoryString}; diff --git a/x509-cert/src/request/builder.rs b/x509-cert/src/request/builder.rs index a87bd02e5..07926824b 100644 --- a/x509-cert/src/request/builder.rs +++ b/x509-cert/src/request/builder.rs @@ -1,16 +1,16 @@ use alloc::vec; -use der::{asn1::BitString, Encode}; +use der::{Encode, asn1::BitString}; use signature::Keypair; use spki::{ AlgorithmIdentifier, DynSignatureAlgorithmIdentifier, EncodePublicKey, SubjectPublicKeyInfo, }; use crate::{ - builder::{Builder, Error, Result, NULL_OID}, + builder::{Builder, Error, NULL_OID, Result}, ext::AsExtension, name::Name, - request::{attributes::AsAttribute, CertReq, CertReqInfo, ExtensionReq}, + request::{CertReq, CertReqInfo, ExtensionReq, attributes::AsAttribute}, }; /// Builder for X509 Certificate Requests (CSR) diff --git a/x509-cert/src/serial_number.rs b/x509-cert/src/serial_number.rs index 55fdbca95..bed048a9c 100644 --- a/x509-cert/src/serial_number.rs +++ b/x509-cert/src/serial_number.rs @@ -3,12 +3,12 @@ use core::{fmt::Display, marker::PhantomData}; use der::{ - asn1::{self, Int}, DecodeValue, EncodeValue, ErrorKind, FixedTag, Header, Length, Reader, Result, Tag, ValueOrd, Writer, + asn1::{self, Int}, }; #[cfg(feature = "builder")] -use {alloc::vec, signature::rand_core::CryptoRngCore}; +use {alloc::vec, signature::rand_core::CryptoRng}; use crate::certificate::{Profile, Rfc5280}; @@ -77,8 +77,9 @@ impl SerialNumber

{ /// of output from the CSPRNG. This currently defaults to a 17-bytes long serial number. /// /// [ballot 164]: https://cabforum.org/2016/03/31/ballot-164/ - pub fn generate(rng: &mut impl CryptoRngCore) -> Result { + pub fn generate(rng: &mut R) -> Self { Self::generate_with_prefix(&[], 17, rng) + .expect("a random of 17 is acceptable, and rng may not fail") } /// Generates a random serial number from RNG. Include a prefix value. @@ -90,10 +91,10 @@ impl SerialNumber

{ /// equal or below 19 (to account for leading sign disambiguation, and the maximum length of 20). /// /// [ballot 164]: https://cabforum.org/2016/03/31/ballot-164/ - pub fn generate_with_prefix( + pub fn generate_with_prefix( prefix: &[u8], rand_len: usize, - rng: &mut impl CryptoRngCore, + rng: &mut R, ) -> Result { // CABF requires a minimum of 64 bits of random if rand_len < 8 { @@ -251,33 +252,31 @@ mod tests { #[cfg(feature = "builder")] #[test] fn serial_number_generate() { - let sn = SerialNumber::::generate(&mut rand::thread_rng()).unwrap(); + let sn = SerialNumber::::generate(&mut rand::rng()); // Underlying storage uses signed int for compatibility reasons, // we may need to prefix the value with 0x00 to make it an unsigned. // in which case the length is going to be 18. assert!(matches!(sn.as_bytes().len(), 17..=18)); - let sn = - SerialNumber::::generate_with_prefix(&[], 8, &mut rand::thread_rng()).unwrap(); + let sn = SerialNumber::::generate_with_prefix(&[], 8, &mut rand::rng()).unwrap(); assert!(matches!(sn.as_bytes().len(), 8..=9)); let sn = - SerialNumber::::generate_with_prefix(&[1, 2, 3], 8, &mut rand::thread_rng()) - .unwrap(); + SerialNumber::::generate_with_prefix(&[1, 2, 3], 8, &mut rand::rng()).unwrap(); assert!(matches!(sn.as_bytes().len(), 11..=12)); assert_eq!(&sn.as_bytes()[..3], &[1, 2, 3]); - let sn = SerialNumber::::generate_with_prefix(&[], 7, &mut rand::thread_rng()); + let sn = SerialNumber::::generate_with_prefix(&[], 7, &mut rand::rng()); assert!(sn.is_err()); - let sn = SerialNumber::::generate_with_prefix(&[], 20, &mut rand::thread_rng()); + let sn = SerialNumber::::generate_with_prefix(&[], 20, &mut rand::rng()); assert!(sn.is_err()); - let sn = SerialNumber::::generate_with_prefix(&[], 19, &mut rand::thread_rng()); + let sn = SerialNumber::::generate_with_prefix(&[], 19, &mut rand::rng()); assert!(sn.is_ok()); - let sn = SerialNumber::::generate_with_prefix(&[1], 19, &mut rand::thread_rng()); + let sn = SerialNumber::::generate_with_prefix(&[1], 19, &mut rand::rng()); assert!(sn.is_err()); } } diff --git a/x509-cert/tests/builder.rs b/x509-cert/tests/builder.rs index d0ad75ad2..820e87dc0 100644 --- a/x509-cert/tests/builder.rs +++ b/x509-cert/tests/builder.rs @@ -1,22 +1,23 @@ #![cfg(all(feature = "builder", feature = "pem"))] use der::{ + EncodePem, asn1::{Ia5String, PrintableString}, pem::LineEnding, - EncodePem, }; -use p256::{ecdsa::DerSignature, pkcs8::DecodePrivateKey, NistP256}; +use p256::{NistP256, ecdsa::DerSignature, pkcs8::DecodePrivateKey}; use rand::rngs::OsRng; use rsa::pkcs1::DecodeRsaPrivateKey; use rsa::pkcs1v15::SigningKey; use sha2::Sha256; +use signature::rand_core::TryRngCore; use spki::SubjectPublicKeyInfo; use std::{str::FromStr, time::Duration}; use x509_cert::{ - builder::{profile, AsyncBuilder, Builder, CertificateBuilder, RequestBuilder}, + builder::{AsyncBuilder, Builder, CertificateBuilder, RequestBuilder, profile}, ext::pkix::{ - name::{DirectoryString, GeneralName}, SubjectAltName, + name::{DirectoryString, GeneralName}, }, name::Name, request, @@ -211,7 +212,7 @@ fn pss_certificate() { .expect("Create certificate"); let certificate = builder - .build_with_rng::<_, rsa::pss::Signature>(&signer, &mut rand::thread_rng()) + .build_with_rng::<_, rsa::pss::Signature, _>(&signer, &mut rand::rng()) .unwrap(); let pem = certificate.to_pem(LineEnding::LF).expect("generate pem"); @@ -315,7 +316,7 @@ fn dynamic_signer() { let csr_builder = RequestBuilder::new(subject).expect("construct builder"); let csr = if true { - let req_signer = p256::ecdsa::SigningKey::random(&mut OsRng); + let req_signer = p256::ecdsa::SigningKey::random(&mut OsRng.unwrap_mut()); csr_builder .build::<_, p256::ecdsa::DerSignature>(&req_signer) .expect("Sign request") diff --git a/x509-cert/tests/certificate.rs b/x509-cert/tests/certificate.rs index 18870e9bf..7ab9b0349 100644 --- a/x509-cert/tests/certificate.rs +++ b/x509-cert/tests/certificate.rs @@ -1,13 +1,13 @@ //! Certificate tests use der::{ - asn1::{BitStringRef, ContextSpecific, ObjectIdentifier, PrintableStringRef, Utf8StringRef}, Decode, DecodeValue, Encode, FixedTag, Header, Reader, Tag, Tagged, + asn1::{BitStringRef, ContextSpecific, ObjectIdentifier, PrintableStringRef, Utf8StringRef}, }; use hex_literal::hex; use spki::AlgorithmIdentifierRef; -use x509_cert::serial_number::SerialNumber; use x509_cert::Certificate; +use x509_cert::serial_number::SerialNumber; use x509_cert::*; #[cfg(feature = "pem")] @@ -90,7 +90,7 @@ impl<'a> DecodeValue<'a> for DeferDecodeTbsCertificate<'a> { header: Header, ) -> der::Result> { reader.read_nested(header.length, |reader| { - let version = ContextSpecific::decode_explicit(reader, ::der::TagNumber::new(0))? + let version = ContextSpecific::decode_explicit(reader, ::der::TagNumber(0))? .map(|cs| cs.value) .unwrap_or_else(Default::default); @@ -230,13 +230,14 @@ fn decode_cert() { .tag(), Tag::Null ); - assert!(cert - .tbs_certificate() - .signature() - .parameters - .as_ref() - .unwrap() - .is_null()); + assert!( + cert.tbs_certificate() + .signature() + .parameters + .as_ref() + .unwrap() + .is_null() + ); for (counter, atav) in cert.tbs_certificate().issuer().iter().enumerate() { if 0 == counter { @@ -342,14 +343,15 @@ fn decode_cert() { .tag(), Tag::Null ); - assert!(cert - .tbs_certificate() - .subject_public_key_info() - .algorithm - .parameters - .as_ref() - .unwrap() - .is_null()); + assert!( + cert.tbs_certificate() + .subject_public_key_info() + .algorithm + .parameters + .as_ref() + .unwrap() + .is_null() + ); // TODO - parse and compare public key @@ -371,15 +373,18 @@ fn decode_cert() { .tag(), Tag::Null ); - assert!(cert - .signature_algorithm() - .parameters - .as_ref() - .unwrap() - .is_null()); + assert!( + cert.signature_algorithm() + .parameters + .as_ref() + .unwrap() + .is_null() + ); assert_eq!( - &hex!("2A892F357BF3EF19E1211986106803FA18E66237802F1B1B0C6756CE678DB01D72CD0A4EB7171C2CDDF110ACD38AA65C35699E869C219AD7550AA4F287BB784F72EF8C9EA0E3DD103EFE5BF182EA36FFBCB45AAE65840263680534789C4F3215AF5454AD48CBC4B7A881E0135401A0BD5A849C11101DD1C66178E762C00DF59DD50F8DE9ED46FC6A0D742AE5697D87DD08DAC5291A75FB13C82FF2865C9E36799EA726137E1814E6A878C9532E8FC3D0A2A942D1CCC668FFCEAC255E6002FDE5ACDF2CE47556BB141C3A797A4BFDB673F6F1C229D7914FFEEF1505EE36F8038137D1B8F90106994BAB3E6FF0F60360A2E32F7A30B7ECEC1502DF3CC725BD6E436BA8F96A1847C9CEBB3F5A5906472292501D59BE1A98475BB1F30B677FAA8A45E351640C85B1B22661D33BD23EC6C0CA33DDD79E1120C7FC869EC4D0175ADB4A258AEAC5E8D2F0F578B8BF4B2C5DCC3269768AAA5B9E26D0592C5BB09C702C72E0A60F66D3EEB2B4983279634D59B0A2011B0E26AE796CC95D3243DF49615434E5CC06C374C3F936C005D360CAE6101F3AE7E97E29A157F5020770D4648D7877EBF8248CF3F3E68F9957A36F92D50616F2C60D3842327EF9BC0312CFF03A48C78E97254C2ADEADCA05069168443D833831FF66295A2EED685F164F1DBE01F8C897E1F63D42851682CBEE7B5A64D7BA2923D33644DBF1F7B3EDCE996F9928F043"), + &hex!( + "2A892F357BF3EF19E1211986106803FA18E66237802F1B1B0C6756CE678DB01D72CD0A4EB7171C2CDDF110ACD38AA65C35699E869C219AD7550AA4F287BB784F72EF8C9EA0E3DD103EFE5BF182EA36FFBCB45AAE65840263680534789C4F3215AF5454AD48CBC4B7A881E0135401A0BD5A849C11101DD1C66178E762C00DF59DD50F8DE9ED46FC6A0D742AE5697D87DD08DAC5291A75FB13C82FF2865C9E36799EA726137E1814E6A878C9532E8FC3D0A2A942D1CCC668FFCEAC255E6002FDE5ACDF2CE47556BB141C3A797A4BFDB673F6F1C229D7914FFEEF1505EE36F8038137D1B8F90106994BAB3E6FF0F60360A2E32F7A30B7ECEC1502DF3CC725BD6E436BA8F96A1847C9CEBB3F5A5906472292501D59BE1A98475BB1F30B677FAA8A45E351640C85B1B22661D33BD23EC6C0CA33DDD79E1120C7FC869EC4D0175ADB4A258AEAC5E8D2F0F578B8BF4B2C5DCC3269768AAA5B9E26D0592C5BB09C702C72E0A60F66D3EEB2B4983279634D59B0A2011B0E26AE796CC95D3243DF49615434E5CC06C374C3F936C005D360CAE6101F3AE7E97E29A157F5020770D4648D7877EBF8248CF3F3E68F9957A36F92D50616F2C60D3842327EF9BC0312CFF03A48C78E97254C2ADEADCA05069168443D833831FF66295A2EED685F164F1DBE01F8C897E1F63D42851682CBEE7B5A64D7BA2923D33644DBF1F7B3EDCE996F9928F043" + ), cert.signature().raw_bytes() ); @@ -402,7 +407,9 @@ fn decode_cert_negative_serial_number() { assert_eq!( cert.tbs_certificate().serial_number().as_bytes(), // INTEGER (125 bit) -2.370157924795571e+37 - &[238, 43, 61, 235, 212, 33, 222, 20, 168, 98, 172, 4, 243, 221, 196, 1] + &[ + 238, 43, 61, 235, 212, 33, 222, 20, 168, 98, 172, 4, 243, 221, 196, 1 + ] ); let reencoded = cert.to_der().unwrap(); @@ -412,7 +419,7 @@ fn decode_cert_negative_serial_number() { #[cfg(all(feature = "pem", feature = "hazmat"))] #[test] fn decode_cert_overlength_serial_number() { - use der::{pem::LineEnding, DecodePem, EncodePem}; + use der::{DecodePem, EncodePem, pem::LineEnding}; use x509_cert::certificate::CertificateInner; let pem_encoded_cert = include_bytes!("examples/qualcomm.pem"); diff --git a/x509-cert/tests/certreq.rs b/x509-cert/tests/certreq.rs index cd5ad36fc..1a716a53e 100644 --- a/x509-cert/tests/certreq.rs +++ b/x509-cert/tests/certreq.rs @@ -5,8 +5,12 @@ use der::{Decode, Encode, Tag, Tagged}; use hex_literal::hex; use x509_cert::request::{CertReq, Version}; -const RSA_KEY: &[u8] = &hex!("3082010A0282010100BF59F7FE716DDE47C73579CA846EFA8D30AB3612E0D6A524204A72CA8E50C9F459513DF0D73331BED3D7A2DA7A362719E471EE6A9D87827D1024ED44605AB9B48F3B808C5E173B9F3EC4003D57F1718489F5C7A0421C46FBD527A40AB4BA6B9DB16A545D1ECF6E2A5633BD80594EBA4AFEE71F63E1D357C64E9A3FF6B83746A885C373F3527987E4C2B4AF7FE4D4EA16405E5E15285DD938823AA18E2634BAFE847A761CAFABB0401D3FA03A07A9D097CBB0C77156CCFE36131DADF1C109C2823972F0AF21A35F358E788304C0C78B951739D91FABFFD07AA8CD4F69746B3D0EB4587469F9D39F4FBDC761200DFB27DAF69562311D8B191B7EEFAAE2F8D6F8EB0203010001"); -const RSA_SIG: &[u8] = &hex!("2B053CFE81C6542176BD70B373A5FC8DC1F1806A5AB10D25E36690EED1DF57AD5F18EC0CCF165F000245B14157141224B431EC6715EFE937F66B892D11EDF8858EDF67ACCAE9701A2244BECA80705D7CC292BAD9B02001E4572EE492B08473D5AF59CC83DDA1DE5C2BF470FD784495070A9C5AF8EA9A4060C1DBC5C4690CC8DF6D528C55D82EC9C0DF3046BBCAE7542025D7EE170788C9C234132703290A31AC2700E55339590226D5E582EC61869862769FD85B45F287FFDD6DB530995D31F94D7D2C26EF3F48A182C3026CC698F382A72F1A11E3C689953055DAC0DFEBE9CDB163CA3AF33FFC4DA0F6B84B9D7CDD4321CCECD4BAC528DEFF9715FFD9D4731E"); +const RSA_KEY: &[u8] = &hex!( + "3082010A0282010100BF59F7FE716DDE47C73579CA846EFA8D30AB3612E0D6A524204A72CA8E50C9F459513DF0D73331BED3D7A2DA7A362719E471EE6A9D87827D1024ED44605AB9B48F3B808C5E173B9F3EC4003D57F1718489F5C7A0421C46FBD527A40AB4BA6B9DB16A545D1ECF6E2A5633BD80594EBA4AFEE71F63E1D357C64E9A3FF6B83746A885C373F3527987E4C2B4AF7FE4D4EA16405E5E15285DD938823AA18E2634BAFE847A761CAFABB0401D3FA03A07A9D097CBB0C77156CCFE36131DADF1C109C2823972F0AF21A35F358E788304C0C78B951739D91FABFFD07AA8CD4F69746B3D0EB4587469F9D39F4FBDC761200DFB27DAF69562311D8B191B7EEFAAE2F8D6F8EB0203010001" +); +const RSA_SIG: &[u8] = &hex!( + "2B053CFE81C6542176BD70B373A5FC8DC1F1806A5AB10D25E36690EED1DF57AD5F18EC0CCF165F000245B14157141224B431EC6715EFE937F66B892D11EDF8858EDF67ACCAE9701A2244BECA80705D7CC292BAD9B02001E4572EE492B08473D5AF59CC83DDA1DE5C2BF470FD784495070A9C5AF8EA9A4060C1DBC5C4690CC8DF6D528C55D82EC9C0DF3046BBCAE7542025D7EE170788C9C234132703290A31AC2700E55339590226D5E582EC61869862769FD85B45F287FFDD6DB530995D31F94D7D2C26EF3F48A182C3026CC698F382A72F1A11E3C689953055DAC0DFEBE9CDB163CA3AF33FFC4DA0F6B84B9D7CDD4321CCECD4BAC528DEFF9715FFD9D4731E" +); /// RSA-2048 `CertReq` encoded as ASN.1 DER const RSA_2048_DER_EXAMPLE: &[u8] = include_bytes!("examples/rsa2048-csr.der"); diff --git a/x509-cert/tests/general_name.rs b/x509-cert/tests/general_name.rs index f63b4a28c..c2fb8233a 100644 --- a/x509-cert/tests/general_name.rs +++ b/x509-cert/tests/general_name.rs @@ -8,8 +8,9 @@ const OTHER_NAME: &[u8] = &hex!("A01B060560865E0202A0120C105249462D472D323030303 const RFC822_NAME: &[u8] = &hex!("8117456D61696C5F353238343037373733406468732E676F76"); const DNS_NAME: &[u8] = &hex!("8222756E7465726E65686D656E736E616368666F6C67652D696E2D62617965726E2E6465"); -const DIRECTORY_NAME: &[u8] = - &hex!("A43B3039310B3009060355040613024445310F300D06035504080C0642617965726E31193017060355040A0C104672656973746161742042617965726E"); +const DIRECTORY_NAME: &[u8] = &hex!( + "A43B3039310B3009060355040613024445310F300D06035504080C0642617965726E31193017060355040A0C104672656973746161742042617965726E" +); // TODO: EdiPartyName const URI: &[u8] = &hex!( "862A687474703A2F2F63726C2E71756F7661646973676C6F62616C2E636F6D2F71767263613267332E63726C" @@ -21,7 +22,9 @@ const OTHER_NAMES: &[u8] = &hex!("301da01b060560865e0202a0120c105249462d472d3230 const RFC822_NAMES: &[u8] = &hex!("30198117456D61696C5F353238343037373733406468732E676F76"); const DNS_NAMES: &[u8] = &hex!("30248222756E7465726E65686D656E736E616368666F6C67652D696E2D62617965726E2E6465"); -const DIRECTORY_NAMES: &[u8] = &hex!("303DA43B3039310B3009060355040613024445310F300D06035504080C0642617965726E31193017060355040A0C104672656973746161742042617965726E"); +const DIRECTORY_NAMES: &[u8] = &hex!( + "303DA43B3039310B3009060355040613024445310F300D06035504080C0642617965726E31193017060355040A0C104672656973746161742042617965726E" +); // TODO: EdiPartyName const URIS: &[u8] = &hex!( "302C862A687474703A2F2F63726C2E71756F7661646973676C6F62616C2E636F6D2F71767263613267332E63726C" diff --git a/x509-cert/tests/name.rs b/x509-cert/tests/name.rs index 3ef1bd01a..d53728122 100644 --- a/x509-cert/tests/name.rs +++ b/x509-cert/tests/name.rs @@ -29,8 +29,11 @@ fn decode_name() { // : } // : } // : } - let rdn1 = - Name::from_der(&hex!("3040310B3009060355040613025553311F301D060355040A1316546573742043657274696669636174657320323031313110300E06035504031307476F6F64204341")[..]); + let rdn1 = Name::from_der( + &hex!( + "3040310B3009060355040613025553311F301D060355040A1316546573742043657274696669636174657320323031313110300E06035504031307476F6F64204341" + )[..], + ); let rdn1a = rdn1.unwrap(); for (counter, atav) in rdn1a.iter().enumerate() { @@ -76,10 +79,17 @@ fn decode_name() { assert_eq!(name, "CN=Good CA,O=Test Certificates 2011,C=US"); // https://github.com/RustCrypto/formats/issues/1121 - let rdn1 = Name::from_der(&hex!("3081c0310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d4d6f756e7461696e205669657731133011060355040a0c0a476f6f676c65204c4c43311e301c06035504030c154f51464176444e4457732e676f6f676c652e636f6d31243022060355040b0c1b6d616e6167656d656e743a64732e67726f75702e3338393131313131293027060a0992268993f22c6401010c196964656e746974793a64732e67726f75702e33383931313131")[..]); + let rdn1 = Name::from_der( + &hex!( + "3081c0310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d4d6f756e7461696e205669657731133011060355040a0c0a476f6f676c65204c4c43311e301c06035504030c154f51464176444e4457732e676f6f676c652e636f6d31243022060355040b0c1b6d616e6167656d656e743a64732e67726f75702e3338393131313131293027060a0992268993f22c6401010c196964656e746974793a64732e67726f75702e33383931313131" + )[..], + ); let rdn1a = rdn1.unwrap(); let name = rdn1a.to_string(); - assert_eq!(name, "UID=identity:ds.group.3891111,OU=management:ds.group.3891111,CN=OQFAvDNDWs.google.com,O=Google LLC,L=Mountain View,ST=California,C=US"); + assert_eq!( + name, + "UID=identity:ds.group.3891111,OU=management:ds.group.3891111,CN=OQFAvDNDWs.google.com,O=Google LLC,L=Mountain View,ST=California,C=US" + ); } } @@ -149,10 +159,12 @@ fn decode_rdn() { assert!(from_scratch2.insert(atav2a.clone()).is_ok()); // allow out-of-order RDNs (see: RustCrypto/formats#625) - assert!(RelativeDistinguishedName::from_der( - &hex!("311F301106035504030C0A4A4F484E20534D495448300A060355040A0C03313233")[..], - ) - .is_ok()); + assert!( + RelativeDistinguishedName::from_der( + &hex!("311F301106035504030C0A4A4F484E20534D495448300A060355040A0C03313233")[..], + ) + .is_ok() + ); } // #[test] diff --git a/x509-cert/tests/pkix_extensions.rs b/x509-cert/tests/pkix_extensions.rs index 67f8cb0c5..a0aff0d12 100644 --- a/x509-cert/tests/pkix_extensions.rs +++ b/x509-cert/tests/pkix_extensions.rs @@ -4,12 +4,12 @@ use const_oid::AssociatedOid; use der::asn1::{Ia5StringRef, OctetString, PrintableStringRef, Utf8StringRef}; use der::{Decode, Encode, ErrorKind, Length, Tag, Tagged}; use hex_literal::hex; +use x509_cert::ext::Extensions; use x509_cert::ext::pkix::crl::dp::{DistributionPoint, ReasonFlags, Reasons}; use x509_cert::ext::pkix::name::{DistributionPointName, GeneralName, GeneralNames}; use x509_cert::ext::pkix::*; -use x509_cert::ext::Extensions; use x509_cert::name::Name; -use x509_cert::{serial_number::SerialNumber, Certificate, Version}; +use x509_cert::{Certificate, Version, serial_number::SerialNumber}; use const_oid::db::rfc5280::*; use const_oid::db::rfc5912::ID_CE_CERTIFICATE_POLICIES; @@ -425,7 +425,10 @@ fn decode_cert() { let gn = gns.first().unwrap(); match gn { GeneralName::UniformResourceIdentifier(uri) => { - assert_eq!("ldap://ldap-pte.identrust.com.test/cn%3DIGC%20Root%20CA1%2Co%3DIdenTrust%2Cc%3DUS%3FcertificateRevocationList%3Bbinary", uri.to_string()); + assert_eq!( + "ldap://ldap-pte.identrust.com.test/cn%3DIGC%20Root%20CA1%2Co%3DIdenTrust%2Cc%3DUS%3FcertificateRevocationList%3Bbinary", + uri.to_string() + ); } _ => { panic!("Expected UniformResourceIdentifier"); @@ -458,9 +461,9 @@ fn decode_cert() { match gn { GeneralName::UniformResourceIdentifier(gn) => { assert_eq!( - "http://http.cite.fpki-lab.gov.test/bridge/caCertsIssuedBytestFBCA.p7c", - gn.to_string() - ); + "http://http.cite.fpki-lab.gov.test/bridge/caCertsIssuedBytestFBCA.p7c", + gn.to_string() + ); } _ => { panic!("Expected UniformResourceIdentifier"); @@ -1136,8 +1139,9 @@ fn decode_idp() { ); // Value incomplete relative to length value - let idp = - IssuingDistributionPoint::from_der(&hex!("3067A060A05EA45C305A310B3009060355040613025553311F301D060355040A131654657374204365727469666963617465732032303137311C301A060355040B13136F6E6C79536F6D65526561736F6E7320434133310C300A0603550403130343524C8304079F80")); + let idp = IssuingDistributionPoint::from_der(&hex!( + "3067A060A05EA45C305A310B3009060355040613025553311F301D060355040A131654657374204365727469666963617465732032303137311C301A060355040B13136F6E6C79536F6D65526561736F6E7320434133310C300A0603550403130343524C8304079F80" + )); let err = idp.err().unwrap(); assert_eq!(err.position().unwrap(), 103u8.into()); assert_eq!( @@ -1182,27 +1186,30 @@ fn decode_idp() { ErrorKind::Noncanonical { tag: Tag::ContextSpecific { constructed: true, - number: TagNumber::new(2) + number: TagNumber(2) } }, err.kind() ); // Boolean value is two bytes long - let idp = - IssuingDistributionPoint::from_der(&hex!("30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C204341358402FFFF")); + let idp = IssuingDistributionPoint::from_der(&hex!( + "30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C204341358402FFFF" + )); let err = idp.err().unwrap(); assert_eq!(ErrorKind::Length { tag: Tag::Boolean }, err.kind()); // Boolean value is neither 0x00 nor 0xFF - let idp = - IssuingDistributionPoint::from_der(&hex!("30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C20434135840175")); + let idp = IssuingDistributionPoint::from_der(&hex!( + "30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C20434135840175" + )); let err = idp.err().unwrap(); assert_eq!(ErrorKind::Noncanonical { tag: Tag::Boolean }, err.kind()); // Length on second RDN in first name indicates more bytes than are present - let idp = - IssuingDistributionPoint::from_der(&hex!("30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13995465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C204341358401FF")); + let idp = IssuingDistributionPoint::from_der(&hex!( + "30820168A0820161A082015DA4753073310B3009060355040613025553311F301D060355040A13995465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434136A4753073310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353129302706035504031320696E6469726563742043524C20666F7220696E64697265637443524C20434137A46D306B310B3009060355040613025553311F301D060355040A13165465737420436572746966696361746573203230313731183016060355040B130F696E64697265637443524C204341353121301F0603550403131843524C3120666F7220696E64697265637443524C204341358401FF" + )); let err = idp.err().unwrap(); assert_eq!( ErrorKind::Length { diff --git a/x509-cert/tests/trust_anchor_format.rs b/x509-cert/tests/trust_anchor_format.rs index 405d3b3ee..c3ce6a3ac 100644 --- a/x509-cert/tests/trust_anchor_format.rs +++ b/x509-cert/tests/trust_anchor_format.rs @@ -1,6 +1,6 @@ use der::{ - asn1::{Ia5StringRef, PrintableStringRef}, Decode, Encode, SliceReader, + asn1::{Ia5StringRef, PrintableStringRef}, }; use hex_literal::hex; use x509_cert::{ From 5782a6556f6a306ab6c672c23fd379b1bcb739d8 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Tue, 25 Feb 2025 20:10:07 -0800 Subject: [PATCH 02/10] pkcs5: rewrite to use `AeadInOut` --- Cargo.lock | 31 +++++++++++++------------------ Cargo.toml | 7 +++++++ pkcs5/Cargo.toml | 4 ++-- pkcs5/src/pbes2/encryption.rs | 6 +++--- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05c06bb72..25598f32c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,17 +20,17 @@ checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aead" version = "0.6.0-rc.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5f451b77e2f92932dc411da6ef9f3d33efad68a6f14a7a83e559453458e85ac" +source = "git+https://github.com/RustCrypto/traits.git#2dc47f8d1461a2a7a22b68e2afafeb4b59e13420" dependencies = [ "crypto-common", + "inout", ] [[package]] name = "aes" -version = "0.9.0-pre.2" +version = "0.9.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7856582c758ade85d71daf27ec6bcea6c1c73913692b07b8dffea2dc03531c9" +checksum = "38e4da00d9978020ddaa556c1747cfcafc3f375cfadb109acfe8b752cfc373bf" dependencies = [ "cfg-if", "cipher", @@ -40,8 +40,7 @@ dependencies = [ [[package]] name = "aes-gcm" version = "0.11.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cce27af05d45b901bb28da33ff8b2b2b2044f595b24fc0f36d4882dae91d484" +source = "git+https://github.com/RustCrypto/AEADs.git#976052da8e274544f0cd6b292f38a0d0a2934849" dependencies = [ "aead", "aes", @@ -193,8 +192,7 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cbc" version = "0.2.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0729a0a8422deb6056b8fcd89c42b724fe27e69458fa006f00c63cbffffd91b" +source = "git+https://github.com/RustCrypto/block-modes.git#3ec1c8191dea30def40c033513bbc8bdb3a9cd78" dependencies = [ "cipher", ] @@ -234,9 +232,9 @@ dependencies = [ [[package]] name = "cipher" -version = "0.5.0-pre.7" +version = "0.5.0-pre.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1425e6ce000f05a73096556cabcfb6a10a3ffe3bb4d75416ca8f00819c0b6a" +checksum = "276974d2acb7cf592603150941fc1ff6442acdeb1dc653ac2825928f4703c131" dependencies = [ "crypto-common", "inout", @@ -342,8 +340,7 @@ dependencies = [ [[package]] name = "crypto-common" version = "0.2.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170d71b5b14dec99db7739f6fc7d6ec2db80b78c3acb77db48392ccc3d8a9ea0" +source = "git+https://github.com/RustCrypto/traits.git#2dc47f8d1461a2a7a22b68e2afafeb4b59e13420" dependencies = [ "hybrid-array", ] @@ -360,8 +357,7 @@ dependencies = [ [[package]] name = "ctr" version = "0.10.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e1482d284b80d7fddb211666d513dc5e23b0cc3a03ad398ff70543827c789f" +source = "git+https://github.com/RustCrypto/block-modes.git#3ec1c8191dea30def40c033513bbc8bdb3a9cd78" dependencies = [ "cipher", ] @@ -414,9 +410,9 @@ dependencies = [ [[package]] name = "des" -version = "0.9.0-pre.2" +version = "0.9.0-pre.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76239c731adb4b5204cfeec47bd06ec1071d9477a0d32bbb83dc7d8c599efe63" +checksum = "fee752f2df22a55f0f703c8eabfeb36990559e1b836263e35580a4186e1cca0a" dependencies = [ "cipher", ] @@ -1222,8 +1218,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" version = "0.11.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1affa54a576c40080654b494bb3f3198fa2fe46e0954b85196d122e3561c2fd0" +source = "git+https://github.com/RustCrypto/stream-ciphers.git#94f861690846f3237e103f8c67ff3c9e4cbda28a" dependencies = [ "cfg-if", "cipher", diff --git a/Cargo.toml b/Cargo.toml index b5e6e0456..cd8056b66 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,8 +77,10 @@ rfc6979 = { git = "https://github.com/RustCrypto/signatures.git" } # https://github.com/RustCrypto/traits/pull/1777 +crypto-common = { git = "https://github.com/RustCrypto/traits.git" } elliptic-curve = { git = "https://github.com/RustCrypto/traits.git" } signature = { git = "https://github.com/RustCrypto/traits.git" } +aead = { git = "https://github.com/RustCrypto/traits.git" } # https://github.com/RustCrypto/RSA/pull/478 # https://github.com/RustCrypto/RSA/pull/504 @@ -95,3 +97,8 @@ crypto-primes = { git = "https://github.com/entropyxyz/crypto-primes.git" } # https://github.com/RustCrypto/elliptic-curves/pull/1125 # https://github.com/RustCrypto/elliptic-curves/pull/1131 p256 = { git = "https://github.com/RustCrypto/elliptic-curves.git" } + +cbc = { git = "https://github.com/RustCrypto/block-modes.git" } +ctr = { git = "https://github.com/RustCrypto/block-modes.git" } +aes-gcm = { git = "https://github.com/RustCrypto/AEADs.git" } +salsa20 = { git = "https://github.com/RustCrypto/stream-ciphers.git" } diff --git a/pkcs5/Cargo.toml b/pkcs5/Cargo.toml index d96a19cd3..37c299d65 100644 --- a/pkcs5/Cargo.toml +++ b/pkcs5/Cargo.toml @@ -21,9 +21,9 @@ spki = { version = "0.8.0-rc.0" } # optional dependencies cbc = { version = "=0.2.0-pre.2", optional = true } -aes = { version = "=0.9.0-pre.2", optional = true, default-features = false } +aes = { version = "=0.9.0-pre.3", optional = true, default-features = false } aes-gcm = { version = "=0.11.0-pre.2", optional = true, default-features = false, features = ["aes"] } -des = { version = "=0.9.0-pre.2", optional = true, default-features = false } +des = { version = "=0.9.0-pre.3", optional = true, default-features = false } pbkdf2 = { version = "=0.13.0-pre.1", optional = true, default-features = false, features = ["hmac"] } rand_core = { version = "0.9", optional = true, default-features = false } scrypt = { version = "=0.12.0-pre.2", optional = true, default-features = false } diff --git a/pkcs5/src/pbes2/encryption.rs b/pkcs5/src/pbes2/encryption.rs index 238fc5032..7171423cd 100644 --- a/pkcs5/src/pbes2/encryption.rs +++ b/pkcs5/src/pbes2/encryption.rs @@ -2,7 +2,7 @@ use super::{EncryptionScheme, Kdf, Parameters, Pbkdf2Params, Pbkdf2Prf, ScryptParams}; use crate::{Error, Result}; -use aes_gcm::{AeadInPlace, KeyInit as GcmKeyInit, Nonce, Tag}; +use aes_gcm::{KeyInit as GcmKeyInit, Nonce, Tag, aead::AeadInOut}; use cbc::cipher::{ BlockCipherDecrypt, BlockCipherEncrypt, BlockModeDecrypt, BlockModeEncrypt, KeyInit, KeyIvInit, block_padding::Pkcs7, @@ -69,7 +69,7 @@ where as GcmKeyInit>::new_from_slice(key.as_slice()) .map_err(|_| es.to_alg_params_invalid())?; let tag = gcm - .encrypt_in_place_detached(&nonce, &[], &mut buffer[..pos]) + .encrypt_inout_detached(&nonce, &[], (&mut buffer[..pos]).into()) .map_err(|_| Error::EncryptFailed)?; buffer[pos..].copy_from_slice(tag.as_ref()); Ok(&buffer[0..pos + TagSize::USIZE]) @@ -99,7 +99,7 @@ where let tag = Tag::try_from(&buffer[msg_len..]).map_err(|_| Error::DecryptFailed)?; if gcm - .decrypt_in_place_detached(&nonce, &[], &mut buffer[..msg_len], &tag) + .decrypt_inout_detached(&nonce, &[], (&mut buffer[..msg_len]).into(), &tag) .is_err() { return Err(Error::DecryptFailed); From fe749629e9a1963b278b38f44b2b734dbe6797db Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Tue, 25 Feb 2025 20:10:07 -0800 Subject: [PATCH 03/10] cms: reunite with the workspace --- .github/workflows/cms.yml | 4 +- Cargo.lock | 48 ++ Cargo.toml | 5 +- cms/Cargo.lock | 921 ---------------------------------- cms/Cargo.toml | 28 +- cms/src/authenticated_data.rs | 2 +- cms/src/authenveloped_data.rs | 2 +- cms/src/builder.rs | 82 ++- cms/src/cert.rs | 4 +- cms/src/content_info.rs | 4 +- cms/src/digested_data.rs | 2 +- cms/src/kemri.rs | 2 +- cms/src/timestamped_data.rs | 2 +- cms/tests/builder.rs | 44 +- 14 files changed, 135 insertions(+), 1015 deletions(-) delete mode 100644 cms/Cargo.lock diff --git a/.github/workflows/cms.yml b/.github/workflows/cms.yml index c77344685..6de3391ad 100644 --- a/.github/workflows/cms.yml +++ b/.github/workflows/cms.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -57,7 +57,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 25598f32c..442304b2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -265,6 +265,34 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +[[package]] +name = "cms" +version = "0.3.0-pre.0" +dependencies = [ + "aes", + "cbc", + "cipher", + "const-oid", + "der", + "ecdsa", + "getrandom 0.3.2", + "hex-literal 0.4.1", + "p256", + "pbkdf2", + "pem-rfc7468", + "pkcs5", + "rand 0.9.0", + "rsa", + "sha1", + "sha2", + "sha3", + "signature", + "spki", + "tokio", + "x509-cert", + "zeroize", +] + [[package]] name = "const-oid" version = "0.10.1" @@ -343,6 +371,7 @@ version = "0.2.0-rc.2" source = "git+https://github.com/RustCrypto/traits.git#2dc47f8d1461a2a7a22b68e2afafeb4b59e13420" dependencies = [ "hybrid-array", + "rand_core 0.9.3", ] [[package]] @@ -728,6 +757,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "keccak" +version = "0.2.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cdd4f0dc5807b9a2b25dd48a3f58e862606fe7bd47f41ecde36e97422d7e90" +dependencies = [ + "cpufeatures", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -1354,6 +1392,16 @@ dependencies = [ "digest", ] +[[package]] +name = "sha3" +version = "0.11.0-pre.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bc997d7a5fa67cc1e352b2001124d28edb948b4e7a16567f9b3c1e51952524" +dependencies = [ + "digest", + "keccak", +] + [[package]] name = "signature" version = "2.3.0-pre.6" diff --git a/Cargo.toml b/Cargo.toml index cd8056b66..141553527 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ members = [ "base32ct", #"base64ct", #"cmpv2", - #"cms", + "cms", "const-oid", #"crmf", "der", @@ -30,7 +30,6 @@ members = [ exclude = [ "base64ct", "cmpv2", - "cms", "crmf", "gss-api", "pkcs12", @@ -49,7 +48,7 @@ base16ct = { path = "./base16ct" } base32ct = { path = "./base32ct" } base64ct = { path = "./base64ct" } #cmpv2 = { path = "./cmpv2" } -#cms = { path = "./cms" } +cms = { path = "./cms" } const-oid = { path = "./const-oid" } #crmf = { path = "./crmf" } der = { path = "./der" } diff --git a/cms/Cargo.lock b/cms/Cargo.lock deleted file mode 100644 index 2ef7272de..000000000 --- a/cms/Cargo.lock +++ /dev/null @@ -1,921 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - -[[package]] -name = "aes" -version = "0.9.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7856582c758ade85d71daf27ec6bcea6c1c73913692b07b8dffea2dc03531c9" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "async-signature" -version = "0.6.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bdb5df8dde2bd1ec515a0981636508bb37d55984d0bae3678d4ac859125431" -dependencies = [ - "signature", -] - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "block-buffer" -version = "0.11.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "block-padding" -version = "0.4.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868e23cd7a5b2e18fb2e9a583910b88b8d645dd21017aafc5d0439cf16ae6d6" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cbc" -version = "0.2.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0729a0a8422deb6056b8fcd89c42b724fe27e69458fa006f00c63cbffffd91b" -dependencies = [ - "cipher", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cipher" -version = "0.5.0-pre.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1425e6ce000f05a73096556cabcfb6a10a3ffe3bb4d75416ca8f00819c0b6a" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "cms" -version = "0.3.0-pre.0" -dependencies = [ - "aes", - "async-signature", - "cbc", - "cipher", - "const-oid", - "der", - "ecdsa", - "getrandom 0.3.1", - "hex-literal", - "p256", - "pbkdf2", - "pem-rfc7468", - "pkcs5", - "rand", - "rsa", - "sha1", - "sha2", - "sha3", - "signature", - "spki", - "tokio", - "x509-cert", - "zeroize", -] - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-bigint" -version = "0.6.0-rc.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d748d1f5b807ee6d0df5a548d0130417295c3aaed1dcbbb3d6a2e7106e11fcca" -dependencies = [ - "hybrid-array", - "num-traits", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.2.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" -dependencies = [ - "getrandom 0.2.15", - "hybrid-array", - "rand_core", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.11.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "ecdsa" -version = "0.17.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e62f2041a28c40b8884b79fbd19bc7457d76c6397767831e9ff4029fc0473a9" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.14.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc43715037532dc2d061e5c97e81b684c28993d52a4fa4eb7d2ce2826d78f2f2" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "group", - "hybrid-array", - "pem-rfc7468", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hmac" -version = "0.13.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b1fb14e4df79f9406b434b60acef9f45c26c50062cccf1346c6103b8c47d58" -dependencies = [ - "digest", -] - -[[package]] -name = "hybrid-array" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" -dependencies = [ - "typenum", - "zeroize", -] - -[[package]] -name = "inout" -version = "0.2.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de49db00f5add6dad75a57946b75de0f26287a6fc95f4f277d48419200422beb" -dependencies = [ - "block-padding", - "hybrid-array", -] - -[[package]] -name = "keccak" -version = "0.2.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cdd4f0dc5807b9a2b25dd48a3f58e862606fe7bd47f41ecde36e97422d7e90" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "libm" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "miniz_oxide" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" -dependencies = [ - "adler2", -] - -[[package]] -name = "num-bigint-dig" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" -dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand", - "smallvec", - "zeroize", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - -[[package]] -name = "p256" -version = "0.14.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71f3fd64a9cad9c26ed7f734b152196d5e56376b9957c832bcca0de48a708080" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "pbkdf2" -version = "0.13.0-pre.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e11753d5193f26dc27ae698e0b536b5e511b7799c5ac475ec10783f26d164a" -dependencies = [ - "digest", - "hmac", -] - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pkcs1" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226eb25e2c46c166ce498ac0f606ac623142d640064879ff445938accddff1e2" -dependencies = [ - "der", - "pkcs8", - "spki", -] - -[[package]] -name = "pkcs5" -version = "0.8.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3d51fbc9292364f5a5562f11461a85529236166f1b4b6baba894fc44119ca" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkcs8" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "primeorder" -version = "0.14.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794117b388378d55629f78f61e64e182baa200bf59c1a8205e0c46508ce5873" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rfc6979" -version = "0.5.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871ee76a3eee98b0f805e5d1caf26929f4565073c580c053a55f886fc15dea49" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "rsa" -version = "0.10.0-pre.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07058e83b684989ab0559f9e22322f4e3f7e49147834ed0bae40486b9e70473c" -dependencies = [ - "const-oid", - "digest", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8", - "rand_core", - "sha2", - "signature", - "spki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "sec1" -version = "0.8.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1988446eff153796413a73669dfaa4caa3f5ce8b25fac89e3821a39c611772e" -dependencies = [ - "base16ct", - "der", - "hybrid-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "sha1" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540978cef7a8498211c1b1c14e5ce920fe5bd524ea84f4a3d72d4602515ae93" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha3" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e485881f388c2818d709796dc883c1ffcadde9d1f0e054f3a5c14974185261a6" -dependencies = [ - "digest", - "keccak", -] - -[[package]] -name = "signature" -version = "2.3.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054d71959c7051b9042c26af337f05cc930575ed2604d7d3ced3158383e59734" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "smallvec" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tls_codec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" -dependencies = [ - "tls_codec_derive", - "zeroize", -] - -[[package]] -name = "tls_codec_derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio" -version = "1.43.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "492a604e2fd7f814268a378409e6c92b5525d747d10db9a229723f55a417958c" -dependencies = [ - "backtrace", - "pin-project-lite", - "tokio-macros", -] - -[[package]] -name = "tokio-macros" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "async-signature", - "const-oid", - "der", - "sha1", - "signature", - "spki", - "tls_codec", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/cms/Cargo.toml b/cms/Cargo.toml index b7429de68..7d5804bd8 100644 --- a/cms/Cargo.toml +++ b/cms/Cargo.toml @@ -11,36 +11,35 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "encoding", "no-std", "parser-implementations"] keywords = ["crypto", "p7b", "pkcs7", "signing"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] -const-oid = { version = "0.10.0-rc.0", features = ["db"] } +const-oid = { version = "0.10", features = ["db"] } der = { version = "0.8.0-rc.0", features = ["alloc", "derive", "oid"] } spki = { version = "0.8.0-rc.0" } x509-cert = { version = "=0.3.0-pre.0", default-features = false } # optional dependencies -aes = { version = "=0.9.0-pre.2", optional = true } -async-signature = { version = "=0.6.0-pre.4", features = ["digest", "rand_core"], optional = true } +aes = { version = "=0.9.0-pre.3", optional = true } cbc = { version = "=0.2.0-pre.2", optional = true } -cipher = { version = "=0.5.0-pre.7", features = ["alloc", "block-padding", "rand_core"], optional = true } -rsa = { version = "=0.10.0-pre.3", optional = true } -sha1 = { version = "=0.11.0-pre.4", optional = true } -sha2 = { version = "=0.11.0-pre.4", optional = true } -sha3 = { version = "=0.11.0-pre.4", optional = true } -signature = { version = "=2.3.0-pre.4", features = ["digest", "alloc"], optional = true } +cipher = { version = "=0.5.0-pre.8", features = ["alloc", "block-padding", "rand_core"], optional = true } +rsa = { version = "=0.10.0-pre.4", optional = true } +sha1 = { version = "=0.11.0-pre.5", optional = true } +sha2 = { version = "=0.11.0-pre.5", optional = true } +sha3 = { version = "=0.11.0-pre.5", optional = true } +signature = { version = "=2.3.0-pre.6", features = ["digest", "alloc"], optional = true } zeroize = { version = "1.8.1", optional = true } [dev-dependencies] -aes = "=0.9.0-pre.2" +aes = "=0.9.0-pre.3" getrandom = "0.3" hex-literal = "0.4" pem-rfc7468 = "1.0.0-rc.1" pkcs5 = "0.8.0-rc.1" pbkdf2 = "0.13.0-pre.0" -rand = "0.8.5" -rsa = { version = "=0.10.0-pre.3", features = ["sha2"] } +rand = "0.9" +rsa = { version = "=0.10.0-pre.4", features = ["sha2"] } ecdsa = { version = "=0.17.0-pre.9", features = ["digest", "pem"] } p256 = "=0.14.0-pre.2" tokio = { version = "1.43.1", features = ["macros", "rt"] } @@ -50,7 +49,6 @@ x509-cert = { version = "=0.3.0-pre.0", features = ["pem"] } std = ["der/std", "spki/std"] builder = [ "dep:aes", - "dep:async-signature", "dep:cbc", "dep:cipher", "dep:rsa", diff --git a/cms/src/authenticated_data.rs b/cms/src/authenticated_data.rs index 4d77e6d5b..a034705fc 100644 --- a/cms/src/authenticated_data.rs +++ b/cms/src/authenticated_data.rs @@ -1,7 +1,7 @@ //! AuthenticatedData-related types -use der::asn1::OctetString; use der::Sequence; +use der::asn1::OctetString; use spki::AlgorithmIdentifierOwned; use x509_cert::attr::Attributes; diff --git a/cms/src/authenveloped_data.rs b/cms/src/authenveloped_data.rs index 44294bb6f..0e7076e79 100644 --- a/cms/src/authenveloped_data.rs +++ b/cms/src/authenveloped_data.rs @@ -1,6 +1,6 @@ //! AuthEnvelopedData-related types -use der::{asn1::SetOfVec, Sequence}; +use der::{Sequence, asn1::SetOfVec}; use x509_cert::attr::Attribute; use crate::{ diff --git a/cms/src/builder.rs b/cms/src/builder.rs index 89bbcdc63..817a64edf 100644 --- a/cms/src/builder.rs +++ b/cms/src/builder.rs @@ -19,11 +19,8 @@ use alloc::borrow::ToOwned; use alloc::boxed::Box; use alloc::string::{String, ToString}; use alloc::vec::Vec; -use async_signature::{AsyncRandomizedSigner, AsyncSigner}; use cipher::{ - block_padding::Pkcs7, - rand_core::{self, CryptoRng, CryptoRngCore, RngCore}, - BlockModeEncrypt, Key, KeyIvInit, KeySizeUser, + BlockModeEncrypt, Key, KeyIvInit, KeySizeUser, block_padding::Pkcs7, rand_core::CryptoRng, }; use const_oid::ObjectIdentifier; use core::cmp::Ordering; @@ -35,8 +32,9 @@ use der::{Any, AnyRef, DateTime, Decode, Encode, ErrorKind, Tag}; use digest::Digest; use rsa::Pkcs1v15Encrypt; use sha2::digest; -use signature::digest::DynDigest; -use signature::{Keypair, RandomizedSigner, Signer}; +use signature::{ + AsyncRandomizedSigner, AsyncSigner, Keypair, RandomizedSigner, Signer, digest::DynDigest, +}; use spki::{ AlgorithmIdentifierOwned, DynSignatureAlgorithmIdentifier, EncodePublicKey, SignatureBitStringEncoding, @@ -57,8 +55,8 @@ pub enum Error { /// Public key errors propagated from the [`spki::Error`] type. PublicKey(spki::Error), - /// RNG error propagated for the [`rand_core::Error`] type. - Rng(rand_core::Error), + /// RNG error. + Rng, /// Signing error propagated for the [`signature::Signer`] type. Signature(signature::Error), @@ -75,7 +73,7 @@ impl fmt::Display for Error { match self { Error::Asn1(err) => write!(f, "ASN.1 error: {}", err), Error::PublicKey(err) => write!(f, "public key error: {}", err), - Error::Rng(err) => write!(f, "rng error: {}", err), + Error::Rng => write!(f, "rng error"), Error::Signature(err) => write!(f, "signature error: {}", err), Error::Builder(message) => write!(f, "builder error: {message}"), } @@ -100,12 +98,6 @@ impl From for Error { } } -impl From for Error { - fn from(err: rand_core::Error) -> Error { - Error::Rng(err) - } -} - type Result = core::result::Result; /// Collect info needed for creating a `SignerInfo`. @@ -407,20 +399,21 @@ impl<'s> SignedDataBuilder<'s> { /// Add a signer info. The signature will be calculated. Note that the encapsulated content /// must not be changed after the first signer info was added. - pub fn add_signer_info_with_rng( + pub fn add_signer_info_with_rng( &mut self, signer_info_builder: SignerInfoBuilder<'_>, signer: &S, - rng: &mut impl CryptoRngCore, + rng: &mut R, ) -> Result<&mut Self> where S: Keypair + DynSignatureAlgorithmIdentifier, S: RandomizedSigner, S::VerifyingKey: EncodePublicKey, Signature: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let signer_info = signer_info_builder - .build_with_rng::(signer, rng) + .build_with_rng::(signer, rng) .map_err(|_| der::Error::from(ErrorKind::Failed))?; self.signer_infos.push(signer_info); @@ -451,20 +444,21 @@ impl<'s> SignedDataBuilder<'s> { /// Add a signer info. The signature will be calculated. Note that the encapsulated content /// must not be changed after the first signer info was added. - pub async fn add_signer_info_with_rng_async( + pub async fn add_signer_info_with_rng_async( &mut self, signer_info_builder: SignerInfoBuilder<'_>, signer: &S, - rng: &mut impl CryptoRngCore, + rng: &mut R, ) -> Result<&mut Self> where S: Keypair + DynSignatureAlgorithmIdentifier, S: AsyncRandomizedSigner, S::VerifyingKey: EncodePublicKey, Signature: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let signer_info = signer_info_builder - .build_with_rng_async::(signer, rng) + .build_with_rng_async::(signer, rng) .await .map_err(|_| der::Error::from(ErrorKind::Failed))?; self.signer_infos.push(signer_info); @@ -585,7 +579,7 @@ impl<'s> SignedDataBuilder<'s> { /// formats. All implementations must implement this trait. pub trait RecipientInfoBuilder { /// Associated Rng type - type Rng: CryptoRngCore; + type Rng: CryptoRng + ?Sized; /// Return the recipient info type fn recipient_info_type(&self) -> RecipientInfoType; @@ -628,7 +622,7 @@ pub enum KeyEncryptionInfo { /// Builds a `KeyTransRecipientInfo` according to RFC 5652 § 6. /// This type uses the recipient's public key to encrypt the content-encryption key. -pub struct KeyTransRecipientInfoBuilder { +pub struct KeyTransRecipientInfoBuilder { /// Identifies the recipient pub rid: RecipientIdentifier, /// Info for key encryption @@ -647,9 +641,9 @@ impl KeyTransRecipientInfoBuilder { } } -impl RecipientInfoBuilder for KeyTransRecipientInfoBuilder +impl RecipientInfoBuilder for KeyTransRecipientInfoBuilder where - R: CryptoRngCore, + R: CryptoRng, { type Rng = R; @@ -699,7 +693,7 @@ where /// This type uses key agreement: the recipient's public key and the sender's /// private key are used to generate a pairwise symmetric key, then /// the content-encryption key is encrypted in the pairwise symmetric key. -pub struct KeyAgreeRecipientInfoBuilder { +pub struct KeyAgreeRecipientInfoBuilder { /// A CHOICE with three alternatives specifying the sender's key agreement public key. pub originator: OriginatorIdentifierOrKey, /// Optional information which helps generating different keys every time. @@ -725,9 +719,9 @@ impl KeyAgreeRecipientInfoBuilder { } } -impl RecipientInfoBuilder for KeyAgreeRecipientInfoBuilder +impl RecipientInfoBuilder for KeyAgreeRecipientInfoBuilder where - R: CryptoRngCore, + R: CryptoRng, { type Rng = R; @@ -756,7 +750,7 @@ where /// Builds a `KekRecipientInfo` according to RFC 5652 § 6. /// Uses symmetric key-encryption keys: the content-encryption key is /// encrypted in a previously distributed symmetric key-encryption key. -pub struct KekRecipientInfoBuilder { +pub struct KekRecipientInfoBuilder { /// Specifies a symmetric key-encryption key that was previously distributed to the sender and /// one or more recipients. pub kek_id: KekIdentifier, @@ -776,9 +770,9 @@ impl KekRecipientInfoBuilder { } } -impl RecipientInfoBuilder for KekRecipientInfoBuilder +impl RecipientInfoBuilder for KekRecipientInfoBuilder where - R: CryptoRngCore, + R: CryptoRng, { type Rng = R; @@ -819,16 +813,16 @@ pub trait PwriEncryptor { /// including eventual parameters (e.g. the used iv). fn key_encryption_algorithm(&self) -> Result; /// Encrypt the padded content-encryption key twice following RFC 3211, § 2.3.1 - fn encrypt_rfc3211( + fn encrypt_rfc3211( &mut self, padded_content_encryption_key: &[u8], - rng: &mut impl CryptoRngCore, + rng: &mut R, ) -> Result>; } /// Builds a `PasswordRecipientInfo` according to RFC 5652 § 6 and RFC 3211. /// Uses a password or shared secret value to encrypt the content-encryption key. -pub struct PasswordRecipientInfoBuilder +pub struct PasswordRecipientInfoBuilder where P: PwriEncryptor, { @@ -867,10 +861,10 @@ where } } -impl PasswordRecipientInfoBuilder +impl PasswordRecipientInfoBuilder where P: PwriEncryptor, - R: CryptoRngCore, + R: CryptoRng, { /// Wrap the content-encryption key according to [RFC 3211, §2.3.1]: /// .... @@ -914,7 +908,7 @@ where impl RecipientInfoBuilder for PasswordRecipientInfoBuilder where P: PwriEncryptor, - R: CryptoRngCore, + R: CryptoRng + ?Sized, { type Rng = R; @@ -950,7 +944,7 @@ where /// Builds an `OtherRecipientInfo` according to RFC 5652 § 6. /// This type makes no assumption about the encryption method or the needed information. -pub struct OtherRecipientInfoBuilder { +pub struct OtherRecipientInfoBuilder { /// Identifies the key management technique. pub ori_type: ObjectIdentifier, /// Contains the protocol data elements needed by a recipient using the identified key @@ -973,7 +967,7 @@ impl OtherRecipientInfoBuilder { impl RecipientInfoBuilder for OtherRecipientInfoBuilder where - R: CryptoRngCore, + R: CryptoRng + ?Sized, { type Rng = R; @@ -1020,7 +1014,7 @@ impl ContentEncryptionAlgorithm { } /// Builds CMS `EnvelopedData` according to RFC 5652 § 6. -pub struct EnvelopedDataBuilder<'c, R> { +pub struct EnvelopedDataBuilder<'c, R: ?Sized> { originator_info: Option, recipient_infos: Vec + 'c>>, unencrypted_content: &'c [u8], @@ -1057,7 +1051,7 @@ impl<'c, R> EnvelopedDataBuilder<'c, R> { impl<'c, R> EnvelopedDataBuilder<'c, R> where - R: CryptoRngCore, + R: CryptoRng + ?Sized, { /// Add recipient info. A builder is used, which generates a `RecipientInfo` according to /// RFC 5652 § 6.2, when `EnvelopedData` is built. @@ -1218,7 +1212,7 @@ fn get_hasher( macro_rules! encrypt_block_mode { ($data:expr, $block_mode:ident::$typ:ident<$alg:ident>, $key:expr, $rng:expr, $oid:expr) => {{ let (key, iv) = match $key { - None => $block_mode::$typ::<$alg>::generate_key_iv_with_rng($rng)?, + None => $block_mode::$typ::<$alg>::generate_key_iv_with_rng($rng), Some(key) => { if key.len() != $alg::key_size() { return Err(Error::Builder(String::from( @@ -1228,7 +1222,7 @@ macro_rules! encrypt_block_mode { ( Key::<$block_mode::$typ<$alg>>::try_from(key) .expect("size invariants violation"), - $block_mode::$typ::<$alg>::generate_iv_with_rng($rng)?, + $block_mode::$typ::<$alg>::generate_iv_with_rng($rng), ) } }; @@ -1256,7 +1250,7 @@ fn encrypt_data( rng: &mut R, ) -> Result<(Vec, Vec, AlgorithmIdentifierOwned)> where - R: CryptoRng + RngCore, + R: CryptoRng + ?Sized, { match encryption_algorithm_identifier { ContentEncryptionAlgorithm::Aes128Cbc => encrypt_block_mode!( diff --git a/cms/src/cert.rs b/cms/src/cert.rs index daac22c99..41ce5cf4f 100644 --- a/cms/src/cert.rs +++ b/cms/src/cert.rs @@ -3,10 +3,10 @@ pub use x509_cert as x509; use core::cmp::Ordering; -use der::{asn1::ObjectIdentifier, Any, Choice, Sequence, ValueOrd}; +use der::{Any, Choice, Sequence, ValueOrd, asn1::ObjectIdentifier}; +use x509_cert::Certificate; use x509_cert::name::Name; use x509_cert::serial_number::SerialNumber; -use x509_cert::Certificate; /// The `CertificateChoices` type is defined in [RFC 5652 Section 10.2.2]. Attribute certificate /// support is not presently implemented. diff --git a/cms/src/content_info.rs b/cms/src/content_info.rs index fca6482db..8c8d3fec4 100644 --- a/cms/src/content_info.rs +++ b/cms/src/content_info.rs @@ -5,9 +5,9 @@ use crate::revocation::RevocationInfoChoices; use crate::signed_data::EncapsulatedContentInfo; use crate::signed_data::{CertificateSet, SignedData, SignerInfos}; use core::cmp::Ordering; -use der::asn1::SetOfVec; use der::Encode; -use der::{asn1::ObjectIdentifier, Any, AnyRef, Enumerated, Sequence, ValueOrd}; +use der::asn1::SetOfVec; +use der::{Any, AnyRef, Enumerated, Sequence, ValueOrd, asn1::ObjectIdentifier}; use x509_cert::{Certificate, PkiPath}; /// The `OtherCertificateFormat` type is defined in [RFC 5652 Section 10.2.5]. diff --git a/cms/src/digested_data.rs b/cms/src/digested_data.rs index 5462cbd2d..61bc3f49a 100644 --- a/cms/src/digested_data.rs +++ b/cms/src/digested_data.rs @@ -1,5 +1,5 @@ //! DigestedData-related types -use der::{asn1::OctetString, Sequence}; +use der::{Sequence, asn1::OctetString}; use spki::AlgorithmIdentifierOwned; diff --git a/cms/src/kemri.rs b/cms/src/kemri.rs index 721da6756..91ab67e61 100644 --- a/cms/src/kemri.rs +++ b/cms/src/kemri.rs @@ -5,7 +5,7 @@ use crate::{ enveloped_data::{EncryptedKey, RecipientIdentifier, UserKeyingMaterial}, }; use const_oid::ObjectIdentifier; -use der::{asn1::OctetString, Sequence}; +use der::{Sequence, asn1::OctetString}; use spki::AlgorithmIdentifierOwned; /// From [RFC9629 Section 3] diff --git a/cms/src/timestamped_data.rs b/cms/src/timestamped_data.rs index a3ebcc5e2..66a01bbb8 100644 --- a/cms/src/timestamped_data.rs +++ b/cms/src/timestamped_data.rs @@ -5,8 +5,8 @@ use crate::content_info::ContentInfo; use alloc::{string::String, vec::Vec}; use const_oid::ObjectIdentifier; use der::{ - asn1::{Ia5String, OctetString, OctetStringRef}, Any, Choice, Enumerated, Sequence, + asn1::{Ia5String, OctetString, OctetStringRef}, }; use spki::AlgorithmIdentifierOwned; use x509_cert::{ diff --git a/cms/tests/builder.rs b/cms/tests/builder.rs index ac3863e83..e3584cf5e 100644 --- a/cms/tests/builder.rs +++ b/cms/tests/builder.rs @@ -4,9 +4,9 @@ use aes::Aes128; use cipher::block_padding::Pkcs7; use cipher::{BlockModeDecrypt, BlockModeEncrypt, BlockSizeUser, Iv, IvSizeUser, KeyIvInit}; use cms::builder::{ - create_signing_time_attribute, ContentEncryptionAlgorithm, EnvelopedDataBuilder, - KeyEncryptionInfo, KeyTransRecipientInfoBuilder, PasswordRecipientInfoBuilder, PwriEncryptor, - SignedDataBuilder, SignerInfoBuilder, + ContentEncryptionAlgorithm, EnvelopedDataBuilder, KeyEncryptionInfo, + KeyTransRecipientInfoBuilder, PasswordRecipientInfoBuilder, PwriEncryptor, SignedDataBuilder, + SignerInfoBuilder, create_signing_time_attribute, }; use cms::cert::{CertificateChoices, IssuerAndSerialNumber}; use cms::content_info::ContentInfo; @@ -18,14 +18,14 @@ use cms::signed_data::{EncapsulatedContentInfo, SignedData, SignerIdentifier}; use const_oid::ObjectIdentifier; use der::asn1::{OctetString, OctetStringRef, PrintableString, SetOfVec}; use der::{Any, AnyRef, Decode, DecodePem, Encode, Tag, Tagged}; -use p256::{pkcs8::DecodePrivateKey, NistP256}; +use p256::{NistP256, pkcs8::DecodePrivateKey}; use pem_rfc7468::LineEnding; use pkcs5::pbes2::Pbkdf2Params; use rand::rngs::OsRng; use rsa::pkcs1::DecodeRsaPrivateKey; -use rsa::rand_core::CryptoRngCore; -use rsa::{pkcs1v15, pss}; +use rsa::rand_core::{CryptoRng, TryRngCore}; use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey}; +use rsa::{pkcs1v15, pss}; use sha2::Sha256; use signature::Verifier; use spki::AlgorithmIdentifierOwned; @@ -152,10 +152,10 @@ fn test_build_signed_data() { &signer_2, ) .expect("error adding P256 signer info") - .add_signer_info_with_rng::, pss::Signature>( + .add_signer_info_with_rng::, pss::Signature, _>( signer_info_builder_3, &signer_3, - &mut OsRng, + &mut OsRng.unwrap_err(), ) .expect("error adding PKCS1v15 RSA signer info") .build() @@ -179,7 +179,7 @@ fn test_build_signed_data() { #[test] fn test_build_enveloped_data() { let recipient_identifier = recipient_identifier(1); - let mut rng = OsRng; + let mut rng = OsRng.unwrap_err(); let bits = 2048; let recipient_private_key = RsaPrivateKey::new(&mut rng, bits).expect("failed to generate a key"); @@ -191,7 +191,7 @@ fn test_build_enveloped_data() { ) .expect("Could not create a KeyTransRecipientInfoBuilder"); - let mut rng = OsRng; + let mut rng = OsRng.unwrap_err(); let mut builder = EnvelopedDataBuilder::new( None, "Arbitrary unencrypted content".as_bytes(), @@ -297,7 +297,7 @@ fn test_build_pkcs7_scep_pkcsreq() { ) .unwrap(); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); // Add recipient info. Multiple recipients are possible, but not used here. let enveloped_data = enveloped_data_builder @@ -426,9 +426,11 @@ fn test_build_pkcs7_scep_pkcsreq() { let verifier_rsa_key = RsaPrivateKey::from_pkcs8_pem(verifier_rsa_key_pem).unwrap(); pkcs1v15::VerifyingKey::::new(RsaPublicKey::from(verifier_rsa_key)) }; - assert!(verifier - .verify(signed_attributes_der.as_slice(), &signature) - .is_ok()); + assert!( + verifier + .verify(signed_attributes_der.as_slice(), &signature) + .is_ok() + ); } // Decode contained enveloped data @@ -648,10 +650,10 @@ async fn async_builder() { ) .await .expect("error adding PKCS1v15 RSA signer info") - .add_signer_info_with_rng_async::, pss::Signature>( + .add_signer_info_with_rng_async::, pss::Signature, _>( signer_info_builder_3, &signer_3, - &mut OsRng, + &mut OsRng.unwrap_err(), ) .await .expect("error adding PKCS1v15 RSA signer info") @@ -684,7 +686,7 @@ fn test_create_password_recipient_info() { key_derivation_params: pkcs5::pbes2::Pbkdf2Params, } impl<'a> Aes128CbcPwriEncryptor<'a> { - pub fn new(challenge_password: &'a [u8], rng: &mut impl CryptoRngCore) -> Self { + pub fn new(challenge_password: &'a [u8], rng: &mut R) -> Self { let mut key_encryption_iv = [0u8; 16]; rng.fill_bytes(key_encryption_iv.as_mut_slice()); let key_encryption_iv = key_encryption_iv.into(); @@ -702,10 +704,10 @@ fn test_create_password_recipient_info() { } impl PwriEncryptor for Aes128CbcPwriEncryptor<'_> { const BLOCK_LENGTH_BITS: usize = 128; // AES block length - fn encrypt_rfc3211( + fn encrypt_rfc3211( &mut self, padded_content_encryption_key: &[u8], - _rng: &mut impl CryptoRngCore, + _rng: &mut R, ) -> Result, cms::builder::Error> { if padded_content_encryption_key.len() < 2 * Self::BLOCK_LENGTH_BITS / 8 { return Err(cms::builder::Error::Builder( @@ -892,7 +894,7 @@ fn test_create_password_recipient_info() { content_encryption_key } - let mut the_one_and_only_rng = OsRng; + let mut the_one_and_only_rng = OsRng.unwrap_err(); // Encrypt the content-encryption key (CEK) using custom encryptor // of type `Aes128CbcPwriEncryptor`: @@ -913,7 +915,7 @@ fn test_create_password_recipient_info() { let enveloped_data = builder .add_recipient_info(recipient_info_builder) .expect("Could not add a recipient info") - .build_with_rng(&mut the_one_and_only_rng) + .build_with_rng(&mut the_one_and_only_rng.unwrap_mut()) .expect("Building EnvelopedData failed"); let enveloped_data_der = enveloped_data .to_der() From c9130bb89863119204c0988178bf1d34267ae8b8 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 21:20:02 -0800 Subject: [PATCH 04/10] crmf: reunite in the workspace --- .github/workflows/crmf.yml | 4 +- Cargo.lock | 11 +++ Cargo.toml | 5 +- crmf/Cargo.lock | 139 ------------------------------------- crmf/Cargo.toml | 4 +- crmf/src/request.rs | 15 ++-- 6 files changed, 24 insertions(+), 154 deletions(-) delete mode 100644 crmf/Cargo.lock diff --git a/.github/workflows/crmf.yml b/.github/workflows/crmf.yml index 7845dcb50..ed1efe654 100644 --- a/.github/workflows/crmf.yml +++ b/.github/workflows/crmf.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -52,7 +52,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 442304b2e..95fd3cacf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -346,6 +346,17 @@ dependencies = [ "itertools", ] +[[package]] +name = "crmf" +version = "0.3.0-pre.0" +dependencies = [ + "cms", + "const-oid", + "der", + "spki", + "x509-cert", +] + [[package]] name = "crunchy" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index 141553527..66d0e2761 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = [ #"cmpv2", "cms", "const-oid", - #"crmf", + "crmf", "der", "der_derive", #"gss-api", @@ -30,7 +30,6 @@ members = [ exclude = [ "base64ct", "cmpv2", - "crmf", "gss-api", "pkcs12", "x509-tsp", @@ -50,7 +49,7 @@ base64ct = { path = "./base64ct" } #cmpv2 = { path = "./cmpv2" } cms = { path = "./cms" } const-oid = { path = "./const-oid" } -#crmf = { path = "./crmf" } +crmf = { path = "./crmf" } der = { path = "./der" } der_derive = { path = "./der_derive" } pem-rfc7468 = { path = "./pem-rfc7468" } diff --git a/crmf/Cargo.lock b/crmf/Cargo.lock deleted file mode 100644 index af2ba6d79..000000000 --- a/crmf/Cargo.lock +++ /dev/null @@ -1,139 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "cms" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956098b1603285c33972193d6f62c8389d3d8548693a4077baa08ff0a8da97c7" -dependencies = [ - "const-oid", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "crmf" -version = "0.3.0-pre.0" -dependencies = [ - "cms", - "const-oid", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/crmf/Cargo.toml b/crmf/Cargo.toml index 81de60778..63ecee760 100644 --- a/crmf/Cargo.toml +++ b/crmf/Cargo.toml @@ -12,8 +12,8 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "data-structures", "encoding", "no-std"] keywords = ["crypto"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] cms = "=0.3.0-pre.0" diff --git a/crmf/src/request.rs b/crmf/src/request.rs index 4a44a6286..339d3d416 100644 --- a/crmf/src/request.rs +++ b/crmf/src/request.rs @@ -1,16 +1,15 @@ //! Request-related types use alloc::vec::Vec; -use der::asn1::{BitString, Int}; -use der::Sequence; +use der::{ + Sequence, + asn1::{BitString, Int}, +}; use spki::{AlgorithmIdentifierOwned, SubjectPublicKeyInfoOwned}; -use x509_cert::attr::Attribute; -use x509_cert::ext::Extensions; -use x509_cert::name::Name; -use x509_cert::serial_number::SerialNumber; -use x509_cert::time::Time; -use x509_cert::Version; +use x509_cert::{ + Version, attr::Attribute, ext::Extensions, name::Name, serial_number::SerialNumber, time::Time, +}; use crate::controls::Controls; use crate::pop::ProofOfPossession; From 18b974aeaab23c1435f1ff9521b6a3f60b021b02 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 21:56:09 -0800 Subject: [PATCH 05/10] cmpv2: reunite with workspace --- .github/workflows/cmpv2.yml | 4 +- Cargo.lock | 12 +++ Cargo.toml | 5 +- cmpv2/Cargo.lock | 158 ------------------------------------ cmpv2/Cargo.toml | 4 +- cmpv2/src/ann.rs | 2 +- cmpv2/src/body.rs | 4 +- cmpv2/src/{gen.rs => gp.rs} | 0 cmpv2/src/header.rs | 4 +- cmpv2/src/lib.rs | 2 +- cmpv2/src/message.rs | 2 +- cmpv2/src/oob.rs | 2 +- cmpv2/src/parameter.rs | 2 +- cmpv2/src/pop.rs | 2 +- cmpv2/src/response.rs | 2 +- cmpv2/src/status.rs | 2 +- cmpv2/tests/cert_req.rs | 2 +- cmpv2/tests/init_req.rs | 2 +- cmpv2/tests/p10cr_req.rs | 2 +- 19 files changed, 33 insertions(+), 180 deletions(-) delete mode 100644 cmpv2/Cargo.lock rename cmpv2/src/{gen.rs => gp.rs} (100%) diff --git a/.github/workflows/cmpv2.yml b/.github/workflows/cmpv2.yml index a8bfa8bc7..b9f8b0578 100644 --- a/.github/workflows/cmpv2.yml +++ b/.github/workflows/cmpv2.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -52,7 +52,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 95fd3cacf..fcfd2237a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -265,6 +265,18 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +[[package]] +name = "cmpv2" +version = "0.3.0-pre.0" +dependencies = [ + "const-oid", + "crmf", + "der", + "hex-literal 0.4.1", + "spki", + "x509-cert", +] + [[package]] name = "cms" version = "0.3.0-pre.0" diff --git a/Cargo.toml b/Cargo.toml index 66d0e2761..771e12d3f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "base16ct", "base32ct", #"base64ct", - #"cmpv2", + "cmpv2", "cms", "const-oid", "crmf", @@ -29,7 +29,6 @@ members = [ ] exclude = [ "base64ct", - "cmpv2", "gss-api", "pkcs12", "x509-tsp", @@ -46,7 +45,7 @@ opt-level = 2 base16ct = { path = "./base16ct" } base32ct = { path = "./base32ct" } base64ct = { path = "./base64ct" } -#cmpv2 = { path = "./cmpv2" } +cmpv2 = { path = "./cmpv2" } cms = { path = "./cms" } const-oid = { path = "./const-oid" } crmf = { path = "./crmf" } diff --git a/cmpv2/Cargo.lock b/cmpv2/Cargo.lock deleted file mode 100644 index 7b11b48ad..000000000 --- a/cmpv2/Cargo.lock +++ /dev/null @@ -1,158 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "cmpv2" -version = "0.3.0-pre.0" -dependencies = [ - "const-oid", - "crmf", - "der", - "hex-literal", - "spki", - "x509-cert", -] - -[[package]] -name = "cms" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956098b1603285c33972193d6f62c8389d3d8548693a4077baa08ff0a8da97c7" -dependencies = [ - "const-oid", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "crmf" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7deedb0754953b9cac4b8650735d37e83d339e98803ac0a30d417489d17e023" -dependencies = [ - "cms", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/cmpv2/Cargo.toml b/cmpv2/Cargo.toml index 224c038ef..d53332780 100644 --- a/cmpv2/Cargo.toml +++ b/cmpv2/Cargo.toml @@ -12,8 +12,8 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "data-structures", "encoding", "no-std"] keywords = ["crypto"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] crmf = "=0.3.0-pre.0" diff --git a/cmpv2/src/ann.rs b/cmpv2/src/ann.rs index 9e4e3bb99..3b34bf44e 100644 --- a/cmpv2/src/ann.rs +++ b/cmpv2/src/ann.rs @@ -2,8 +2,8 @@ use alloc::boxed::Box; use alloc::vec::Vec; -use der::asn1::GeneralizedTime; use der::Sequence; +use der::asn1::GeneralizedTime; use crmf::controls::CertId; use x509_cert::{crl::CertificateList, ext::Extensions}; diff --git a/cmpv2/src/body.rs b/cmpv2/src/body.rs index ca01add8e..ec88aa140 100644 --- a/cmpv2/src/body.rs +++ b/cmpv2/src/body.rs @@ -1,14 +1,14 @@ //! PKIBody type -use der::asn1::Null; use der::Choice; +use der::asn1::Null; use crmf::request::CertReqMessages; use x509_cert::request::CertReq; use crate::ann::{CaKeyUpdAnnContent, CertAnnContent, CrlAnnContent, RevAnnContent}; use crate::certified_key_pair::KeyRecRepContent; -use crate::gen::{GenMsgContent, GenRepContent}; +use crate::gp::{GenMsgContent, GenRepContent}; use crate::message::PkiMessages; use crate::poll::{PollRepContent, PollReqContent}; use crate::pop::{PopoDecKeyChallContent, PopoDecKeyRespContent}; diff --git a/cmpv2/src/gen.rs b/cmpv2/src/gp.rs similarity index 100% rename from cmpv2/src/gen.rs rename to cmpv2/src/gp.rs diff --git a/cmpv2/src/header.rs b/cmpv2/src/header.rs index e0d680ae4..b3b9bec93 100644 --- a/cmpv2/src/header.rs +++ b/cmpv2/src/header.rs @@ -5,10 +5,10 @@ use der::asn1::{GeneralizedTime, OctetString, Utf8StringRef}; use der::{Enumerated, Sequence}; use spki::AlgorithmIdentifierOwned; -use x509_cert::ext::pkix::name::GeneralName; use x509_cert::Certificate; +use x509_cert::ext::pkix::name::GeneralName; -use crate::gen::InfoTypeAndValue; +use crate::gp::InfoTypeAndValue; /// The `PKIHeader` type is defined in [RFC 4210 Section 5.1.1]. /// diff --git a/cmpv2/src/lib.rs b/cmpv2/src/lib.rs index d81d9f76f..73b1bc077 100644 --- a/cmpv2/src/lib.rs +++ b/cmpv2/src/lib.rs @@ -21,7 +21,7 @@ extern crate std; pub mod ann; pub mod body; pub mod certified_key_pair; -pub mod gen; +pub mod gp; pub mod header; pub mod message; pub mod oob; diff --git a/cmpv2/src/message.rs b/cmpv2/src/message.rs index 97769c021..53d0a306c 100644 --- a/cmpv2/src/message.rs +++ b/cmpv2/src/message.rs @@ -1,8 +1,8 @@ //! PKIMessage type use alloc::vec::Vec; -use der::asn1::BitString; use der::Sequence; +use der::asn1::BitString; use crate::body::PkiBody; use crate::header::{CmpCertificate, PkiHeader}; diff --git a/cmpv2/src/oob.rs b/cmpv2/src/oob.rs index 52552f2a7..7bb4e3014 100644 --- a/cmpv2/src/oob.rs +++ b/cmpv2/src/oob.rs @@ -1,7 +1,7 @@ //! OOB-related types -use der::asn1::BitString; use der::Sequence; +use der::asn1::BitString; use crmf::controls::CertId; use spki::AlgorithmIdentifierOwned; diff --git a/cmpv2/src/parameter.rs b/cmpv2/src/parameter.rs index 4614f1f9d..40f951f15 100644 --- a/cmpv2/src/parameter.rs +++ b/cmpv2/src/parameter.rs @@ -1,7 +1,7 @@ //! Parameter types -use der::asn1::OctetString; use der::Sequence; +use der::asn1::OctetString; use spki::AlgorithmIdentifierOwned; diff --git a/cmpv2/src/pop.rs b/cmpv2/src/pop.rs index b3008f1e6..49d500cfb 100644 --- a/cmpv2/src/pop.rs +++ b/cmpv2/src/pop.rs @@ -2,8 +2,8 @@ use alloc::vec::Vec; -use der::asn1::{OctetString, UintRef}; use der::Sequence; +use der::asn1::{OctetString, UintRef}; use spki::AlgorithmIdentifierOwned; use x509_cert::ext::pkix::name::GeneralName; diff --git a/cmpv2/src/response.rs b/cmpv2/src/response.rs index be7375fff..51ae023a0 100644 --- a/cmpv2/src/response.rs +++ b/cmpv2/src/response.rs @@ -2,8 +2,8 @@ use alloc::vec::Vec; -use der::asn1::{Int, OctetString}; use der::Sequence; +use der::asn1::{Int, OctetString}; use crate::{certified_key_pair::CertifiedKeyPair, header::CmpCertificate, status::PkiStatusInfo}; diff --git a/cmpv2/src/status.rs b/cmpv2/src/status.rs index 514063470..ad50960ab 100644 --- a/cmpv2/src/status.rs +++ b/cmpv2/src/status.rs @@ -3,7 +3,7 @@ use crate::header::PkiFreeText; use alloc::vec::Vec; use der::asn1::{Int, OctetString}; -use der::flagset::{flags, FlagSet}; +use der::flagset::{FlagSet, flags}; use der::{Enumerated, Sequence}; /// The `PKIStatus` type is defined in [RFC 4210 Section 5.2.3]. diff --git a/cmpv2/tests/cert_req.rs b/cmpv2/tests/cert_req.rs index 322e8aa52..f9cae8ee8 100644 --- a/cmpv2/tests/cert_req.rs +++ b/cmpv2/tests/cert_req.rs @@ -5,8 +5,8 @@ use const_oid::ObjectIdentifier; use crmf::pop::ProofOfPossession; use der::{Decode, Encode}; use hex_literal::hex; -use x509_cert::ext::pkix::name::GeneralName; use x509_cert::Certificate; +use x509_cert::ext::pkix::name::GeneralName; #[test] fn cr_req_message_test() { diff --git a/cmpv2/tests/init_req.rs b/cmpv2/tests/init_req.rs index a3e5d866a..bf014616d 100644 --- a/cmpv2/tests/init_req.rs +++ b/cmpv2/tests/init_req.rs @@ -7,8 +7,8 @@ use const_oid::ObjectIdentifier; use crmf::pop::ProofOfPossession; use der::{Decode, Encode}; use hex_literal::hex; -use x509_cert::ext::pkix::name::GeneralName; use x509_cert::Certificate; +use x509_cert::ext::pkix::name::GeneralName; #[test] fn ir_req_header_test() { diff --git a/cmpv2/tests/p10cr_req.rs b/cmpv2/tests/p10cr_req.rs index d771c5940..9ee72e375 100644 --- a/cmpv2/tests/p10cr_req.rs +++ b/cmpv2/tests/p10cr_req.rs @@ -2,8 +2,8 @@ use cmpv2::body::PkiBody; use cmpv2::message::PkiMessage; use der::{Decode, Encode}; use hex_literal::hex; -use x509_cert::ext::pkix::name::GeneralName; use x509_cert::Certificate; +use x509_cert::ext::pkix::name::GeneralName; #[test] fn p10cr_req_message_test() { From a0297556df815f1e3bc9b39921c27b10929bda3c Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 21:57:12 -0800 Subject: [PATCH 06/10] gss-api: reunite with the workspace --- .github/workflows/gss-api.yml | 4 +- Cargo.lock | 10 +++ Cargo.toml | 3 +- gss-api/Cargo.lock | 132 ---------------------------------- gss-api/Cargo.toml | 4 +- gss-api/src/lib.rs | 14 ++-- gss-api/src/negotiation.rs | 14 ++-- 7 files changed, 34 insertions(+), 147 deletions(-) delete mode 100644 gss-api/Cargo.lock diff --git a/.github/workflows/gss-api.yml b/.github/workflows/gss-api.yml index 0ddf1e830..746773457 100644 --- a/.github/workflows/gss-api.yml +++ b/.github/workflows/gss-api.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -52,7 +52,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index fcfd2237a..abb933c67 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -662,6 +662,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "gss-api" +version = "0.2.0-pre" +dependencies = [ + "der", + "hex-literal 0.4.1", + "spki", + "x509-cert", +] + [[package]] name = "half" version = "2.6.0" diff --git a/Cargo.toml b/Cargo.toml index 771e12d3f..d72df445c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ members = [ "crmf", "der", "der_derive", - #"gss-api", + "gss-api", "pem-rfc7468", "pkcs1", "pkcs5", @@ -29,7 +29,6 @@ members = [ ] exclude = [ "base64ct", - "gss-api", "pkcs12", "x509-tsp", "x509-ocsp" diff --git a/gss-api/Cargo.lock b/gss-api/Cargo.lock deleted file mode 100644 index ad6a6b5c7..000000000 --- a/gss-api/Cargo.lock +++ /dev/null @@ -1,132 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "gss-api" -version = "0.2.0-pre" -dependencies = [ - "der", - "hex-literal", - "spki", - "x509-cert", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/gss-api/Cargo.toml b/gss-api/Cargo.toml index cb5e9ee95..cfd83b1fa 100644 --- a/gss-api/Cargo.toml +++ b/gss-api/Cargo.toml @@ -12,8 +12,8 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "authentication", "encoding", "no-std", "parser-implementations"] keywords = ["crypto", "gssapi", "kerberos", "krb5"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] der = { version = "0.8.0-rc.0", features = ["oid", "alloc"] } diff --git a/gss-api/src/lib.rs b/gss-api/src/lib.rs index 82c46c1ec..68c0ba8de 100644 --- a/gss-api/src/lib.rs +++ b/gss-api/src/lib.rs @@ -57,7 +57,7 @@ pub struct InitialContextToken<'a> { impl FixedTag for InitialContextToken<'_> { const TAG: Tag = Tag::Application { constructed: true, - number: TagNumber::new(0), + number: TagNumber(0), }; } @@ -130,8 +130,12 @@ mod tests { #[test] fn initial_context_token() { - let gss_bytes = hex!("604806062b0601050502a03e303ca00e300c060a2b06010401823702020aa22a04284e544c4d535350000100000005028862000000000000000000000000000000000601b01d0000000f"); - let inner_bytes = hex!("303ca00e300c060a2b06010401823702020aa22a04284e544c4d535350000100000005028862000000000000000000000000000000000601b01d0000000f"); + let gss_bytes = hex!( + "604806062b0601050502a03e303ca00e300c060a2b06010401823702020aa22a04284e544c4d535350000100000005028862000000000000000000000000000000000601b01d0000000f" + ); + let inner_bytes = hex!( + "303ca00e300c060a2b06010401823702020aa22a04284e544c4d535350000100000005028862000000000000000000000000000000000601b01d0000000f" + ); let gss = InitialContextToken::from_der(&gss_bytes).unwrap(); @@ -140,7 +144,7 @@ mod tests { AnyRef::new( Tag::ContextSpecific { constructed: true, - number: TagNumber::new(0) + number: TagNumber(0) }, &inner_bytes ) @@ -153,7 +157,7 @@ mod tests { inner_context_token: AnyRef::new( Tag::ContextSpecific { constructed: true, - number: TagNumber::new(0), + number: TagNumber(0), }, &inner_bytes, ) diff --git a/gss-api/src/negotiation.rs b/gss-api/src/negotiation.rs index 06b36652e..22a22e59c 100644 --- a/gss-api/src/negotiation.rs +++ b/gss-api/src/negotiation.rs @@ -1,7 +1,7 @@ //! Negotiation-related types use der::{ - asn1::{BitString, OctetStringRef}, AnyRef, Choice, Enumerated, Sequence, + asn1::{BitString, OctetStringRef}, }; use crate::MechType; @@ -378,7 +378,9 @@ mod tests { #[test] fn token_init() { - let neg_token_init_bytes = hex!("303ca00e300c060a2b06010401823702020aa32a3028a0261b246e6f745f646566696e65645f696e5f5246433431373840706c656173655f69676e6f7265"); + let neg_token_init_bytes = hex!( + "303ca00e300c060a2b06010401823702020aa32a3028a0261b246e6f745f646566696e65645f696e5f5246433431373840706c656173655f69676e6f7265" + ); let neg_token = NegTokenInit2::from_der(&neg_token_init_bytes).unwrap(); assert_eq!( 1, @@ -393,7 +395,9 @@ mod tests { #[test] fn token_response() { - let neg_token_resp_bytes = hex!("308199a0030a0101a10c060a2b06010401823702020aa281830481804e544c4d53535000020000000a000a003800000005028a6234805409a0e0e1f900000000000000003e003e0042000000060100000000000f530041004d004200410002000a00530041004d004200410001000a00530041004d00420041000400000003000a00730061006d00620061000700080036739dbd327fd90100000000"); + let neg_token_resp_bytes = hex!( + "308199a0030a0101a10c060a2b06010401823702020aa281830481804e544c4d53535000020000000a000a003800000005028a6234805409a0e0e1f900000000000000003e003e0042000000060100000000000f530041004d004200410002000a00530041004d004200410001000a00530041004d00420041000400000003000a00730061006d00620061000700080036739dbd327fd90100000000" + ); let neg_token_resp = NegTokenResp::from_der(&neg_token_resp_bytes).unwrap(); assert_eq!( ObjectIdentifier::new_unwrap("1.3.6.1.4.1.311.2.2.10"), @@ -404,7 +408,9 @@ mod tests { #[cfg(feature = "rfc2478")] #[test] fn decode_rfc2478() { - let neg_token_targ_bytes = hex!("308199a0030a0101a10c060a2b06010401823702020aa281830481804e544c4d53535000020000000a000a003800000005028a6234805409a0e0e1f900000000000000003e003e0042000000060100000000000f530041004d004200410002000a00530041004d004200410001000a00530041004d00420041000400000003000a00730061006d00620061000700080036739dbd327fd90100000000"); + let neg_token_targ_bytes = hex!( + "308199a0030a0101a10c060a2b06010401823702020aa281830481804e544c4d53535000020000000a000a003800000005028a6234805409a0e0e1f900000000000000003e003e0042000000060100000000000f530041004d004200410002000a00530041004d004200410001000a00530041004d00420041000400000003000a00730061006d00620061000700080036739dbd327fd90100000000" + ); let neg_token_targ = NegTokenTarg::from_der(&neg_token_targ_bytes).unwrap(); assert_eq!( NegResult::AcceptIncomplete, From 93504e77366acc79d2b1b9265930651e796ce0a3 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 22:01:17 -0800 Subject: [PATCH 07/10] pkcs12: reunite with the workspace --- Cargo.lock | 27 ++ Cargo.toml | 5 +- pkcs12/Cargo.lock | 600 ----------------------------------------- pkcs12/Cargo.toml | 10 +- pkcs12/src/safe_bag.rs | 4 +- 5 files changed, 36 insertions(+), 610 deletions(-) delete mode 100644 pkcs12/Cargo.lock diff --git a/Cargo.lock b/Cargo.lock index abb933c67..25c0cbdae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -931,6 +931,24 @@ dependencies = [ "tempfile", ] +[[package]] +name = "pkcs12" +version = "0.2.0-pre" +dependencies = [ + "cms", + "const-oid", + "der", + "digest", + "hex-literal 1.0.0", + "pkcs5", + "pkcs8", + "sha2", + "spki", + "whirlpool", + "x509-cert", + "zeroize", +] + [[package]] name = "pkcs5" version = "0.8.0-rc.3" @@ -1707,6 +1725,15 @@ dependencies = [ "wit-bindgen-rt", ] +[[package]] +name = "whirlpool" +version = "0.11.0-pre.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fbe8695cb6a786fed7267063bda1ad9be6d3d9067b071e6e4cc6d8ac19b176" +dependencies = [ + "digest", +] + [[package]] name = "winapi-util" version = "0.1.9" diff --git a/Cargo.toml b/Cargo.toml index d72df445c..ea36dacc7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = [ "pkcs1", "pkcs5", "pkcs8", - #"pkcs12", + "pkcs12", "sec1", "serdect", "spki", @@ -29,7 +29,6 @@ members = [ ] exclude = [ "base64ct", - "pkcs12", "x509-tsp", "x509-ocsp" ] @@ -54,7 +53,7 @@ pem-rfc7468 = { path = "./pem-rfc7468" } pkcs1 = { path = "./pkcs1" } pkcs5 = { path = "./pkcs5" } pkcs8 = { path = "./pkcs8" } -#pkcs12 = { path = "./pkcs12" } +pkcs12 = { path = "./pkcs12" } sec1 = { path = "./sec1" } serdect = { path = "./serdect" } spki = { path = "./spki" } diff --git a/pkcs12/Cargo.lock b/pkcs12/Cargo.lock deleted file mode 100644 index eac27e689..000000000 --- a/pkcs12/Cargo.lock +++ /dev/null @@ -1,600 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "aead" -version = "0.6.0-rc.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5f451b77e2f92932dc411da6ef9f3d33efad68a6f14a7a83e559453458e85ac" -dependencies = [ - "crypto-common", -] - -[[package]] -name = "aes" -version = "0.9.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7856582c758ade85d71daf27ec6bcea6c1c73913692b07b8dffea2dc03531c9" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aes-gcm" -version = "0.11.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cce27af05d45b901bb28da33ff8b2b2b2044f595b24fc0f36d4882dae91d484" -dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", - "subtle", -] - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "block-buffer" -version = "0.11.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "block-padding" -version = "0.4.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868e23cd7a5b2e18fb2e9a583910b88b8d645dd21017aafc5d0439cf16ae6d6" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "cbc" -version = "0.2.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0729a0a8422deb6056b8fcd89c42b724fe27e69458fa006f00c63cbffffd91b" -dependencies = [ - "cipher", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cipher" -version = "0.5.0-pre.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1425e6ce000f05a73096556cabcfb6a10a3ffe3bb4d75416ca8f00819c0b6a" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "cms" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956098b1603285c33972193d6f62c8389d3d8548693a4077baa08ff0a8da97c7" -dependencies = [ - "const-oid", - "der", - "spki", - "x509-cert", -] - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-common" -version = "0.2.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" -dependencies = [ - "getrandom 0.2.15", - "hybrid-array", - "rand_core 0.6.4", -] - -[[package]] -name = "ctr" -version = "0.10.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e1482d284b80d7fddb211666d513dc5e23b0cc3a03ad398ff70543827c789f" -dependencies = [ - "cipher", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "des" -version = "0.9.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76239c731adb4b5204cfeec47bd06ec1071d9477a0d32bbb83dc7d8c599efe63" -dependencies = [ - "cipher", -] - -[[package]] -name = "digest" -version = "0.11.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets", -] - -[[package]] -name = "ghash" -version = "0.6.0-rc.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b92860fda25ab571512af210134cde2c42732cd53253bcee3f21b288b7afbc4" -dependencies = [ - "opaque-debug", - "polyval", -] - -[[package]] -name = "hex-literal" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" - -[[package]] -name = "hmac" -version = "0.13.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b1fb14e4df79f9406b434b60acef9f45c26c50062cccf1346c6103b8c47d58" -dependencies = [ - "digest", -] - -[[package]] -name = "hybrid-array" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" -dependencies = [ - "typenum", -] - -[[package]] -name = "inout" -version = "0.2.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de49db00f5add6dad75a57946b75de0f26287a6fc95f4f277d48419200422beb" -dependencies = [ - "block-padding", - "hybrid-array", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "pbkdf2" -version = "0.13.0-pre.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e11753d5193f26dc27ae698e0b536b5e511b7799c5ac475ec10783f26d164a" -dependencies = [ - "digest", - "hmac", -] - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pkcs12" -version = "0.2.0-pre" -dependencies = [ - "cms", - "const-oid", - "der", - "digest", - "hex-literal", - "pkcs5", - "pkcs8", - "sha2", - "spki", - "whirlpool", - "x509-cert", - "zeroize", -] - -[[package]] -name = "pkcs5" -version = "0.8.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3d51fbc9292364f5a5562f11461a85529236166f1b4b6baba894fc44119ca" -dependencies = [ - "aes", - "aes-gcm", - "cbc", - "der", - "des", - "pbkdf2", - "rand_core 0.9.2", - "scrypt", - "sha2", - "spki", -] - -[[package]] -name = "pkcs8" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" -dependencies = [ - "der", - "pkcs5", - "rand_core 0.9.2", - "spki", -] - -[[package]] -name = "polyval" -version = "0.7.0-rc.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01cbf5c028f9f862c6f7f5a5544307d7858634df190488d432ec470c8fbc063" -dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_core" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c" -dependencies = [ - "getrandom 0.3.1", - "zerocopy", -] - -[[package]] -name = "salsa20" -version = "0.11.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1affa54a576c40080654b494bb3f3198fa2fe46e0954b85196d122e3561c2fd0" -dependencies = [ - "cfg-if", - "cipher", -] - -[[package]] -name = "scrypt" -version = "0.12.0-pre.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a91394d9fa36fde88b8b976973db9fe6a0e4b32eea79f0ca13ba1b818daa3b2" -dependencies = [ - "pbkdf2", - "salsa20", - "sha2", -] - -[[package]] -name = "sha2" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "universal-hash" -version = "0.6.0-rc.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3517d72c5ca6d60f9f2e85d2c772e2652830062a685105a528d19dd823cf87d5" -dependencies = [ - "crypto-common", - "subtle", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "whirlpool" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a50f4a23b3461a8731a33838634270ed638b266a4d5cbf0215eefce1f0fa08" -dependencies = [ - "digest", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "const-oid", - "der", - "spki", -] - -[[package]] -name = "zerocopy" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde3bb8c68a8f3f1ed4ac9221aad6b10cece3e60a8e2ea54a6a2dec806d0084c" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/pkcs12/Cargo.toml b/pkcs12/Cargo.toml index 5e296bf65..3fc0a3baa 100644 --- a/pkcs12/Cargo.toml +++ b/pkcs12/Cargo.toml @@ -19,23 +19,23 @@ rust-version = "1.85" der = { version = "0.8.0-rc.0", features = ["alloc", "derive", "oid"], default-features = false } spki = { version = "0.8.0-rc.0", default-features = false } x509-cert = { version = "=0.3.0-pre.0", default-features = false } -const-oid = { version = "0.10.0-rc.0", features = ["db"], default-features = false } +const-oid = { version = "0.10.0", features = ["db"], default-features = false } cms = { version = "=0.3.0-pre.0", default-features = false } # optional dependencies -digest = { version = "0.11.0-pre.9", features = ["alloc"], optional = true } +digest = { version = "0.11.0-pre.10", features = ["alloc"], optional = true } zeroize = { version = "1.8.1", optional = true, default-features = false } [dev-dependencies] hex-literal = "1" pkcs8 = { version = "0.11.0-rc.1", features = ["pkcs5", "getrandom"] } pkcs5 = { version = "0.8.0-rc.0", features = ["pbes2", "3des"] } -sha2 = "=0.11.0-pre.4" -whirlpool = "=0.11.0-pre.4" +sha2 = "=0.11.0-pre.5" +whirlpool = "=0.11.0-pre.5" [features] default = ["pem"] -kdf = ["dep:digest", "dep:zeroize"] +kdf = ["dep:digest", "zeroize/alloc"] pem = ["der/pem", "x509-cert/pem"] [package.metadata.docs.rs] diff --git a/pkcs12/src/safe_bag.rs b/pkcs12/src/safe_bag.rs index 91ca4f238..6c12bfc6c 100644 --- a/pkcs12/src/safe_bag.rs +++ b/pkcs12/src/safe_bag.rs @@ -65,7 +65,7 @@ impl ::der::EncodeValue for SafeBag { [ self.bag_id.encoded_len()?, ::der::asn1::ContextSpecificRef { - tag_number: ::der::TagNumber::new(0), + tag_number: ::der::TagNumber(0), tag_mode: ::der::TagMode::Explicit, value: &content, } @@ -80,7 +80,7 @@ impl ::der::EncodeValue for SafeBag { self.bag_id.encode(writer)?; let content = AnyRef::from_der(&self.bag_value)?; ::der::asn1::ContextSpecificRef { - tag_number: ::der::TagNumber::new(0), + tag_number: ::der::TagNumber(0), tag_mode: ::der::TagMode::Explicit, value: &content, } From 5b8946487692c1a16a1f29685470cfbebe628c7a Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 22:02:30 -0800 Subject: [PATCH 08/10] x509-tsp: reunite with the workspace --- .github/workflows/x509-tsp.yml | 4 ++-- Cargo.lock | 11 +++++++++++ Cargo.toml | 5 ++--- x509-tsp/Cargo.toml | 4 ++-- x509-tsp/src/lib.rs | 12 ++++++++---- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/.github/workflows/x509-tsp.yml b/.github/workflows/x509-tsp.yml index ac8ead53f..f98a9f877 100644 --- a/.github/workflows/x509-tsp.yml +++ b/.github/workflows/x509-tsp.yml @@ -29,7 +29,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -54,7 +54,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 25c0cbdae..8070228ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1866,6 +1866,17 @@ dependencies = [ "tempfile", ] +[[package]] +name = "x509-tsp" +version = "0.2.0-pre" +dependencies = [ + "cmpv2", + "cms", + "der", + "hex-literal 0.4.1", + "x509-cert", +] + [[package]] name = "zerocopy" version = "0.8.24" diff --git a/Cargo.toml b/Cargo.toml index ea36dacc7..a2f19844c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,14 +22,13 @@ members = [ "tai64", "tls_codec", "tls_codec/derive", - #"x509-tsp", + "x509-tsp", "x509-cert", "x509-cert/test-support", #"x509-ocsp" ] exclude = [ "base64ct", - "x509-tsp", "x509-ocsp" ] @@ -60,7 +59,7 @@ spki = { path = "./spki" } tai64 = { path = "./tai64" } tls_codec = { path = "./tls_codec" } tls_codec_derive = { path = "./tls_codec/derive" } -#x509-tsp = { path = "./x509-tsp" } +x509-tsp = { path = "./x509-tsp" } x509-cert = { path = "./x509-cert" } #x509-ocsp = { path = "./x509-ocsp" } diff --git a/x509-tsp/Cargo.toml b/x509-tsp/Cargo.toml index d86b90d15..7bcf1ecea 100644 --- a/x509-tsp/Cargo.toml +++ b/x509-tsp/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "x509-tsp" version = "0.2.0-pre" -edition = "2021" +edition = "2024" description = """ Pure Rust implementation of the Timestamping Protocol as described in RFC 3161. """ @@ -12,7 +12,7 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "encoding", "no-std", "parser-implementations"] keywords = ["crypto", "tsp", "timestamp"] readme = "README.md" -rust-version = "1.81" +rust-version = "1.85" [dependencies] der = { version = "0.8.0-rc.0", features = ["alloc", "derive", "oid", "pem"] } diff --git a/x509-tsp/src/lib.rs b/x509-tsp/src/lib.rs index 333beac18..0c92efada 100644 --- a/x509-tsp/src/lib.rs +++ b/x509-tsp/src/lib.rs @@ -11,12 +11,12 @@ extern crate alloc; use cmpv2::status::PkiStatusInfo; use cms::content_info::ContentInfo; use der::{ + Any, Enumerated, Sequence, asn1::{GeneralizedTime, Int, OctetString}, oid::ObjectIdentifier, - Any, Enumerated, Sequence, }; use x509_cert::{ - ext::{pkix::name::GeneralName, Extensions}, + ext::{Extensions, pkix::name::GeneralName}, spki::AlgorithmIdentifier, }; @@ -189,7 +189,9 @@ mod tests { #[test] fn request_test() { // openssl ts --query --data abc.txt -out query.tsq - let enc_req = hex!("30400201013031300D060960864801650304020105000420BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD0208314CFCE4E0651827"); + let enc_req = hex!( + "30400201013031300D060960864801650304020105000420BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD0208314CFCE4E0651827" + ); let req = TimeStampReq::from_der(&enc_req).unwrap(); assert_eq!(req.version, TspVersion::V1); assert_eq!(req.message_imprint.hash_algorithm.oid, ID_SHA_256); @@ -202,7 +204,9 @@ mod tests { #[test] fn response_test() { // openssl ts -reply -queryfile query.tsq -signer ec384-tsa-key.crt -inkey ec384-tsa-key.pem -out response.tsr -config tsa.cnf - let enc_resp = hex!("3082028430030201003082027B06092A864886F70D010702A082026C30820268020103310F300D060960864801650304020105003081C9060B2A864886F70D0109100104A081B90481B63081B302010106042A0304013031300D060960864801650304020105000420BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD020104180F32303233303630373131323632365A300A020101800201F48101640101FF0208314CFCE4E0651827A048A4463044310B30090603550406130255533113301106035504080C0A536F6D652D5374617465310D300B060355040A0C04546573743111300F06035504030C0854657374205453413182018430820180020101305C3044310B30090603550406130255533113301106035504080C0A536F6D652D5374617465310D300B060355040A0C04546573743111300F06035504030C08546573742054534102146A0DCC59137C11D1C2B092042B4BC51C0D634D24300D06096086480165030402010500A08198301A06092A864886F70D010903310D060B2A864886F70D0109100104301C06092A864886F70D010905310F170D3233303630373131323632365A302B060B2A864886F70D010910020C311C301A3018301604142F36B1B52456F5AC3A1CA09794AE3D0D64AD38C2302F06092A864886F70D01090431220420BAF4CCF82E9B5B3956EADCC87346B407684F26D82B68D0E7DE0D31EA79AF648C300A06082A8648CE3D0403020467306502305A6E1C175B20A93FAB25D14CC5F5A2836D726D6D4A964B66FFBFFCE46276A96475F1408728B3385DCA37C2BA46BE17E1023100C46B7F08D03409A8ECCFD7637765412C3C5EC050E0D39CF48F0F5015950342CB18D8434FF331BA4463C086297C37D07B"); + let enc_resp = hex!( + "3082028430030201003082027B06092A864886F70D010702A082026C30820268020103310F300D060960864801650304020105003081C9060B2A864886F70D0109100104A081B90481B63081B302010106042A0304013031300D060960864801650304020105000420BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD020104180F32303233303630373131323632365A300A020101800201F48101640101FF0208314CFCE4E0651827A048A4463044310B30090603550406130255533113301106035504080C0A536F6D652D5374617465310D300B060355040A0C04546573743111300F06035504030C0854657374205453413182018430820180020101305C3044310B30090603550406130255533113301106035504080C0A536F6D652D5374617465310D300B060355040A0C04546573743111300F06035504030C08546573742054534102146A0DCC59137C11D1C2B092042B4BC51C0D634D24300D06096086480165030402010500A08198301A06092A864886F70D010903310D060B2A864886F70D0109100104301C06092A864886F70D010905310F170D3233303630373131323632365A302B060B2A864886F70D010910020C311C301A3018301604142F36B1B52456F5AC3A1CA09794AE3D0D64AD38C2302F06092A864886F70D01090431220420BAF4CCF82E9B5B3956EADCC87346B407684F26D82B68D0E7DE0D31EA79AF648C300A06082A8648CE3D0403020467306502305A6E1C175B20A93FAB25D14CC5F5A2836D726D6D4A964B66FFBFFCE46276A96475F1408728B3385DCA37C2BA46BE17E1023100C46B7F08D03409A8ECCFD7637765412C3C5EC050E0D39CF48F0F5015950342CB18D8434FF331BA4463C086297C37D07B" + ); let resp = TimeStampResp::from_der(&enc_resp).unwrap(); let content = resp.time_stamp_token.unwrap().content; let sd = SignedData::from_der(&content.to_der().unwrap()).unwrap(); From d727a085e12f70a6274e05655a963ad5880f7c41 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 22:05:16 -0800 Subject: [PATCH 09/10] x509-ocsp: reunite with the workspace --- .github/workflows/x509-ocsp.yml | 4 +- Cargo.lock | 19 ++ Cargo.toml | 5 +- x509-ocsp/Cargo.lock | 475 ------------------------------ x509-ocsp/Cargo.toml | 18 +- x509-ocsp/src/basic.rs | 12 +- x509-ocsp/src/builder/request.rs | 13 +- x509-ocsp/src/builder/response.rs | 13 +- x509-ocsp/src/cert_id.rs | 8 +- x509-ocsp/src/cert_status.rs | 2 +- x509-ocsp/src/ext.rs | 10 +- x509-ocsp/src/request.rs | 10 +- x509-ocsp/src/responder_id.rs | 2 +- x509-ocsp/src/response.rs | 2 +- x509-ocsp/src/time.rs | 2 +- x509-ocsp/tests/builder.rs | 4 +- x509-ocsp/tests/ext.rs | 6 +- x509-ocsp/tests/ocsp.rs | 28 +- x509-ocsp/tests/requests.rs | 2 +- x509-ocsp/tests/responses.rs | 4 +- 20 files changed, 102 insertions(+), 537 deletions(-) delete mode 100644 x509-ocsp/Cargo.lock diff --git a/.github/workflows/x509-ocsp.yml b/.github/workflows/x509-ocsp.yml index 2878dfa1b..c85ccacde 100644 --- a/.github/workflows/x509-ocsp.yml +++ b/.github/workflows/x509-ocsp.yml @@ -26,7 +26,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable target: - thumbv7em-none-eabi @@ -51,7 +51,7 @@ jobs: strategy: matrix: rust: - - 1.81.0 # MSRV + - 1.85.0 # MSRV - stable steps: - uses: actions/checkout@v4 diff --git a/Cargo.lock b/Cargo.lock index 8070228ae..5047ac05f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1866,6 +1866,25 @@ dependencies = [ "tempfile", ] +[[package]] +name = "x509-ocsp" +version = "0.3.0-pre" +dependencies = [ + "const-oid", + "der", + "digest", + "hex-literal 0.4.1", + "lazy_static", + "rand 0.9.0", + "rand_core 0.9.3", + "rsa", + "sha1", + "sha2", + "signature", + "spki", + "x509-cert", +] + [[package]] name = "x509-tsp" version = "0.2.0-pre" diff --git a/Cargo.toml b/Cargo.toml index a2f19844c..68845726c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,11 +25,10 @@ members = [ "x509-tsp", "x509-cert", "x509-cert/test-support", - #"x509-ocsp" + "x509-ocsp" ] exclude = [ "base64ct", - "x509-ocsp" ] [profile.dev] @@ -61,7 +60,7 @@ tls_codec = { path = "./tls_codec" } tls_codec_derive = { path = "./tls_codec/derive" } x509-tsp = { path = "./x509-tsp" } x509-cert = { path = "./x509-cert" } -#x509-ocsp = { path = "./x509-ocsp" } +x509-ocsp = { path = "./x509-ocsp" } # https://github.com/RustCrypto/signatures/pull/913 diff --git a/x509-ocsp/Cargo.lock b/x509-ocsp/Cargo.lock deleted file mode 100644 index 8cfeb52ea..000000000 --- a/x509-ocsp/Cargo.lock +++ /dev/null @@ -1,475 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "autocfg" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "block-buffer" -version = "0.11.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd016a0ddc7cb13661bf5576073ce07330a693f8608a1320b4e20561cc12cdc" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-common" -version = "0.2.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0b8ce8218c97789f16356e7896b3714f26c2ee1079b79c0b7ae7064bb9089fa" -dependencies = [ - "hybrid-array", -] - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "der_derive", - "flagset", - "zeroize", -] - -[[package]] -name = "der_derive" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "211bea8bb45f5f61bc857104606913ef8ac8b5ec698143aa2aa96a7ffdc94991" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.11.0-pre.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2e3d6615d99707295a9673e889bf363a04b2a466bd320c65a72536f7577379" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", -] - -[[package]] -name = "flagset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hybrid-array" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" -dependencies = [ - "typenum", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "libm" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" - -[[package]] -name = "num-bigint-dig" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" -dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand", - "smallvec", - "zeroize", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "pkcs1" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226eb25e2c46c166ce498ac0f606ac623142d640064879ff445938accddff1e2" -dependencies = [ - "der", - "pkcs8", - "spki", -] - -[[package]] -name = "pkcs8" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rsa" -version = "0.10.0-pre.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07058e83b684989ab0559f9e22322f4e3f7e49147834ed0bae40486b9e70473c" -dependencies = [ - "const-oid", - "digest", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8", - "rand_core", - "sha2", - "signature", - "spki", - "subtle", - "zeroize", -] - -[[package]] -name = "sha1" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540978cef7a8498211c1b1c14e5ce920fe5bd524ea84f4a3d72d4602515ae93" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha2" -version = "0.11.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c0893cce56cdbcfebcec191ec8e0f470dd1889b6e7a0b503e310a94a168f5" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "signature" -version = "2.3.0-pre.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054d71959c7051b9042c26af337f05cc930575ed2604d7d3ced3158383e59734" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "smallvec" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tls_codec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" -dependencies = [ - "tls_codec_derive", - "zeroize", -] - -[[package]] -name = "tls_codec_derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "x509-cert" -version = "0.3.0-pre.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2db382aa43c1fb5c419a960f72c3847ab0f383f635fc2e25f0bd6c5fb94371d1" -dependencies = [ - "const-oid", - "der", - "spki", - "tls_codec", -] - -[[package]] -name = "x509-ocsp" -version = "0.3.0-pre" -dependencies = [ - "const-oid", - "der", - "digest", - "hex-literal", - "lazy_static", - "rand", - "rand_core", - "rsa", - "sha1", - "sha2", - "signature", - "spki", - "x509-cert", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/x509-ocsp/Cargo.toml b/x509-ocsp/Cargo.toml index 4072a1364..0ce96ab39 100644 --- a/x509-ocsp/Cargo.toml +++ b/x509-ocsp/Cargo.toml @@ -12,8 +12,8 @@ repository = "https://github.com/RustCrypto/formats" categories = ["cryptography", "data-structures", "encoding", "no-std"] keywords = ["crypto", "x509"] readme = "README.md" -edition = "2021" -rust-version = "1.81" +edition = "2024" +rust-version = "1.85" [dependencies] const-oid = { version = "0.10.0-rc.0", default-features = false, features = ["db"] } @@ -22,17 +22,17 @@ spki = { version = "0.8.0-rc.0", features = ["alloc"] } x509-cert = { version = "=0.3.0-pre.0", default-features = false } # Optional -digest = { version = "=0.11.0-pre.9", optional = true, default-features = false, features = ["oid"] } -rand_core = { version = "0.6.4", optional = true, default-features = false } -signature = { version = "=2.3.0-pre.4", optional = true, default-features = false, features = ["digest", "rand_core"] } +digest = { version = "=0.11.0-pre.10", optional = true, default-features = false, features = ["oid"] } +rand_core = { version = "0.9", optional = true, default-features = false } +signature = { version = "=2.3.0-pre.6", optional = true, default-features = false, features = ["digest", "rand_core"] } [dev-dependencies] hex-literal = "0.4.1" lazy_static = "1.5.0" -rand = "0.8.5" -rsa = { version = "=0.10.0-pre.3", default-features = false, features = ["sha2"] } -sha1 = { version = "=0.11.0-pre.4", default-features = false, features = ["oid"] } -sha2 = { version = "=0.11.0-pre.4", default-features = false, features = ["oid"] } +rand = "0.9" +rsa = { version = "=0.10.0-pre.4", default-features = false, features = ["sha2"] } +sha1 = { version = "=0.11.0-pre.5", default-features = false, features = ["oid"] } +sha2 = { version = "=0.11.0-pre.5", default-features = false, features = ["oid"] } [features] rand = ["rand_core"] diff --git a/x509-ocsp/src/basic.rs b/x509-ocsp/src/basic.rs index 876e01563..62d39a413 100644 --- a/x509-ocsp/src/basic.rs +++ b/x509-ocsp/src/basic.rs @@ -1,17 +1,17 @@ //! Basic OCSP Response use crate::{ - ext::Nonce, AsResponseBytes, CertId, CertStatus, OcspGeneralizedTime, ResponderId, Version, + AsResponseBytes, CertId, CertStatus, OcspGeneralizedTime, ResponderId, Version, ext::Nonce, }; use alloc::vec::Vec; use const_oid::{ - db::rfc6960::{ID_PKIX_OCSP_BASIC, ID_PKIX_OCSP_NONCE}, AssociatedOid, + db::rfc6960::{ID_PKIX_OCSP_BASIC, ID_PKIX_OCSP_NONCE}, }; use core::{default::Default, option::Option}; use der::{ - asn1::{BitString, ObjectIdentifier}, Decode, Sequence, + asn1::{BitString, ObjectIdentifier}, }; use spki::AlgorithmIdentifierOwned; use x509_cert::{certificate::Certificate, ext::Extensions}; @@ -126,12 +126,12 @@ pub struct SingleResponse { #[cfg(feature = "builder")] mod builder { - use crate::{builder::Error, CertId, CertStatus, OcspGeneralizedTime, SingleResponse}; + use crate::{CertId, CertStatus, OcspGeneralizedTime, SingleResponse, builder::Error}; use const_oid::AssociatedOid; use digest::Digest; use x509_cert::{ - crl::CertificateList, ext::AsExtension, name::Name, serial_number::SerialNumber, - Certificate, + Certificate, crl::CertificateList, ext::AsExtension, name::Name, + serial_number::SerialNumber, }; impl SingleResponse { diff --git a/x509-ocsp/src/builder/request.rs b/x509-ocsp/src/builder/request.rs index a33b6f218..607306eb3 100644 --- a/x509-ocsp/src/builder/request.rs +++ b/x509-ocsp/src/builder/request.rs @@ -1,16 +1,16 @@ //! OCSP request builder -use crate::{builder::Error, OcspRequest, Request, Signature, TbsRequest, Version}; +use crate::{OcspRequest, Request, Signature, TbsRequest, Version, builder::Error}; use alloc::vec::Vec; use der::Encode; -use rand_core::CryptoRngCore; +use rand_core::CryptoRng; use signature::{RandomizedSigner, Signer}; use spki::{DynSignatureAlgorithmIdentifier, SignatureBitStringEncoding}; use x509_cert::{ + Certificate, certificate::Rfc5280, - ext::{pkix::name::GeneralName, AsExtension}, + ext::{AsExtension, pkix::name::GeneralName}, name::Name, - Certificate, }; /// X509 OCSP Request builder @@ -139,15 +139,16 @@ impl OcspRequestBuilder { /// Consumes the builder and returns a signed [`OcspRequest`]. Errors when the algorithm /// identifier encoding, message encoding, or signature generation fails. - pub fn sign_with_rng( + pub fn sign_with_rng( self, signer: &mut S, - rng: &mut impl CryptoRngCore, + rng: &mut R, certificate_chain: Option>, ) -> Result where S: RandomizedSigner + DynSignatureAlgorithmIdentifier, Sig: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let signature_algorithm = signer.signature_algorithm_identifier()?; let signature = signer diff --git a/x509-ocsp/src/builder/response.rs b/x509-ocsp/src/builder/response.rs index c283251d5..b355fd642 100644 --- a/x509-ocsp/src/builder/response.rs +++ b/x509-ocsp/src/builder/response.rs @@ -1,18 +1,18 @@ //! OCSP response builder use crate::{ - builder::Error, BasicOcspResponse, OcspGeneralizedTime, OcspResponse, ResponderId, - ResponseData, SingleResponse, Version, + BasicOcspResponse, OcspGeneralizedTime, OcspResponse, ResponderId, ResponseData, + SingleResponse, Version, builder::Error, }; use alloc::vec::Vec; use der::Encode; -use rand_core::CryptoRngCore; +use rand_core::CryptoRng; use signature::{RandomizedSigner, Signer}; use spki::{DynSignatureAlgorithmIdentifier, SignatureBitStringEncoding}; use x509_cert::{ + Certificate, ext::{AsExtension, Extensions}, name::Name, - Certificate, }; /// X509 OCSP Response builder @@ -158,16 +158,17 @@ impl OcspResponseBuilder { /// signed. /// /// [RFC 6960 Section 2.4]: https://datatracker.ietf.org/doc/html/rfc6960#section-2.4 - pub fn sign_with_rng( + pub fn sign_with_rng( self, signer: &mut S, - rng: &mut impl CryptoRngCore, + rng: &mut R, certificate_chain: Option>, produced_at: OcspGeneralizedTime, ) -> Result where S: RandomizedSigner + DynSignatureAlgorithmIdentifier, Sig: SignatureBitStringEncoding, + R: CryptoRng + ?Sized, { let tbs_response_data = self.into_response_data(produced_at); let signature_algorithm = signer.signature_algorithm_identifier()?; diff --git a/x509-ocsp/src/cert_id.rs b/x509-ocsp/src/cert_id.rs index fcc153c4c..fc7250c9f 100644 --- a/x509-ocsp/src/cert_id.rs +++ b/x509-ocsp/src/cert_id.rs @@ -1,6 +1,6 @@ //! X.509 OCSP CertID -use der::{asn1::OctetString, Sequence}; +use der::{Sequence, asn1::OctetString}; use spki::AlgorithmIdentifierOwned; use x509_cert::{ certificate::{Profile, Rfc5280}, @@ -36,15 +36,15 @@ impl From<&CertId> for CertId { #[cfg(feature = "builder")] mod builder { - use crate::{builder::Error, CertId}; + use crate::{CertId, builder::Error}; use const_oid::AssociatedOid; use der::{ - asn1::{Null, OctetString}, Encode, + asn1::{Null, OctetString}, }; use digest::Digest; use spki::AlgorithmIdentifierOwned; - use x509_cert::{serial_number::SerialNumber, Certificate}; + use x509_cert::{Certificate, serial_number::SerialNumber}; impl CertId { /// Generates a `CertID` by running the issuer's subject and key through the specified diff --git a/x509-ocsp/src/cert_status.rs b/x509-ocsp/src/cert_status.rs index e66d03fb5..35b1675cf 100644 --- a/x509-ocsp/src/cert_status.rs +++ b/x509-ocsp/src/cert_status.rs @@ -3,7 +3,7 @@ use crate::OcspGeneralizedTime; use const_oid::AssociatedOid; use core::option::Option; -use der::{asn1::Null, Choice, Decode, Sequence}; +use der::{Choice, Decode, Sequence, asn1::Null}; use x509_cert::{crl::RevokedCert, ext::pkix::CrlReason}; /// CertStatus structure as defined in [RFC 6960 Section 4.2.1]. diff --git a/x509-ocsp/src/ext.rs b/x509-ocsp/src/ext.rs index ea76258b0..cb27f77f4 100644 --- a/x509-ocsp/src/ext.rs +++ b/x509-ocsp/src/ext.rs @@ -3,25 +3,25 @@ use crate::OcspGeneralizedTime; use alloc::vec::Vec; use const_oid::{ + AssociatedOid, db::rfc6960::{ ID_PKIX_OCSP_ARCHIVE_CUTOFF, ID_PKIX_OCSP_CRL, ID_PKIX_OCSP_NONCE, ID_PKIX_OCSP_PREF_SIG_ALGS, ID_PKIX_OCSP_RESPONSE, ID_PKIX_OCSP_SERVICE_LOCATOR, }, - AssociatedOid, }; use der::{ - asn1::{Ia5String, ObjectIdentifier, OctetString, Uint}, Sequence, ValueOrd, + asn1::{Ia5String, ObjectIdentifier, OctetString, Uint}, }; use spki::AlgorithmIdentifierOwned; use x509_cert::{ - ext::{pkix::AuthorityInfoAccessSyntax, AsExtension, Extension}, + ext::{AsExtension, Extension, pkix::AuthorityInfoAccessSyntax}, impl_newtype, name::Name, }; #[cfg(feature = "rand")] -use rand_core::CryptoRngCore; +use rand_core::CryptoRng; // x509-cert's is not exported macro_rules! impl_extension { @@ -64,7 +64,7 @@ impl Nonce { #[cfg(feature = "rand")] pub fn generate(rng: &mut R, length: usize) -> Result where - R: CryptoRngCore, + R: CryptoRng + ?Sized, { let mut bytes = alloc::vec![0; length]; rng.fill_bytes(&mut bytes); diff --git a/x509-ocsp/src/request.rs b/x509-ocsp/src/request.rs index 4d2f25aee..db0a62324 100644 --- a/x509-ocsp/src/request.rs +++ b/x509-ocsp/src/request.rs @@ -1,14 +1,14 @@ //! OCSP Request -use crate::{ext::Nonce, CertId, Version}; +use crate::{CertId, Version, ext::Nonce}; use alloc::vec::Vec; use const_oid::db::rfc6960::ID_PKIX_OCSP_NONCE; use core::{default::Default, option::Option}; -use der::{asn1::BitString, Decode, Sequence}; +use der::{Decode, Sequence, asn1::BitString}; use spki::AlgorithmIdentifierOwned; use x509_cert::{ certificate::{CertificateInner, Profile, Rfc5280}, - ext::{pkix::name::GeneralName, Extensions}, + ext::{Extensions, pkix::name::GeneralName}, }; /// OCSPRequest structure as defined in [RFC 6960 Section 4.1.1]. @@ -124,10 +124,10 @@ pub struct Request { #[cfg(feature = "builder")] mod builder { - use crate::{builder::Error, CertId, Request}; + use crate::{CertId, Request, builder::Error}; use const_oid::AssociatedOid; use digest::Digest; - use x509_cert::{ext::AsExtension, name::Name, serial_number::SerialNumber, Certificate}; + use x509_cert::{Certificate, ext::AsExtension, name::Name, serial_number::SerialNumber}; impl Request { /// Returns a new `Request` with the specified `CertID` diff --git a/x509-ocsp/src/responder_id.rs b/x509-ocsp/src/responder_id.rs index 097a39a33..211e3735e 100644 --- a/x509-ocsp/src/responder_id.rs +++ b/x509-ocsp/src/responder_id.rs @@ -1,6 +1,6 @@ //! X.509 OCSP ResponderID -use der::{asn1::OctetString, Choice}; +use der::{Choice, asn1::OctetString}; use x509_cert::name::Name; /// ResponderID structure as defined in [RFC 6960 Section 4.2.1]. diff --git a/x509-ocsp/src/response.rs b/x509-ocsp/src/response.rs index 75dd53499..3ed09991c 100644 --- a/x509-ocsp/src/response.rs +++ b/x509-ocsp/src/response.rs @@ -3,8 +3,8 @@ use const_oid::AssociatedOid; use core::option::Option; use der::{ - asn1::{Null, ObjectIdentifier, OctetString}, Enumerated, Sequence, + asn1::{Null, ObjectIdentifier, OctetString}, }; /// OcspNoCheck as defined in [RFC 6960 Section 4.2.2.2.1]. diff --git a/x509-ocsp/src/time.rs b/x509-ocsp/src/time.rs index b567b9491..1cdcb2d31 100644 --- a/x509-ocsp/src/time.rs +++ b/x509-ocsp/src/time.rs @@ -1,8 +1,8 @@ //! OCSP GeneralizedTime implementation use der::{ - asn1::{GeneralizedTime, UtcTime}, DateTime, + asn1::{GeneralizedTime, UtcTime}, }; use x509_cert::{impl_newtype, time::Time}; diff --git a/x509-ocsp/tests/builder.rs b/x509-ocsp/tests/builder.rs index 286c4a9d1..fe85c6090 100644 --- a/x509-ocsp/tests/builder.rs +++ b/x509-ocsp/tests/builder.rs @@ -4,10 +4,10 @@ use der::{DateTime, Decode, Encode}; use hex_literal::hex; use lazy_static::lazy_static; -use rsa::{pkcs1v15::SigningKey, pkcs8::DecodePrivateKey, RsaPrivateKey}; +use rsa::{RsaPrivateKey, pkcs1v15::SigningKey, pkcs8::DecodePrivateKey}; use sha1::Sha1; use sha2::{Sha224, Sha256, Sha384, Sha512}; -use x509_cert::{name::Name, serial_number::SerialNumber, Certificate}; +use x509_cert::{Certificate, name::Name, serial_number::SerialNumber}; use x509_ocsp::builder::*; use x509_ocsp::{ext::*, *}; diff --git a/x509-ocsp/tests/ext.rs b/x509-ocsp/tests/ext.rs index 175856adc..d4dcb526c 100644 --- a/x509-ocsp/tests/ext.rs +++ b/x509-ocsp/tests/ext.rs @@ -2,8 +2,8 @@ use core::str::FromStr; use der::{ - asn1::{Ia5String, Null, ObjectIdentifier, Uint}, DateTime, Encode, + asn1::{Ia5String, Null, ObjectIdentifier, Uint}, }; use hex_literal::hex; use spki::AlgorithmIdentifierOwned; @@ -14,7 +14,7 @@ use x509_cert::{ }, name::Name, }; -use x509_ocsp::{ext::*, OcspGeneralizedTime}; +use x509_ocsp::{OcspGeneralizedTime, ext::*}; const ID_AD_OCSP: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.3.6.1.5.5.7.48.1"); const ID_PKIX_OCSP_BASIC: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.3.6.1.5.5.7.48.1.1"); @@ -41,7 +41,7 @@ fn as_extension_nonce() { #[cfg(feature = "rand")] #[test] fn nonce_generation() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let nonce = Nonce::generate(&mut rng, 10).unwrap(); assert_eq!(nonce.0.as_bytes().len(), 10); let nonce = Nonce::generate(&mut rng, 5).unwrap(); diff --git a/x509-ocsp/tests/ocsp.rs b/x509-ocsp/tests/ocsp.rs index 97a0b8922..6919600b1 100644 --- a/x509-ocsp/tests/ocsp.rs +++ b/x509-ocsp/tests/ocsp.rs @@ -46,7 +46,12 @@ fn decode_ocsp_req_ca_signed() { ); let reenc = ocsp_req.to_der().unwrap(); - assert_eq!(reenc, &hex!("3051304F304D304B3049300906052B0E03021A05000414A87E303106E4E88565CFE952598FA6DA7C00532F0414246E2B2DD06A925151256901AA9A47A689E7402002100E4239AB85E2E6A27C52C6DE9B9078D9")[..]) + assert_eq!( + reenc, + &hex!( + "3051304F304D304B3049300906052B0E03021A05000414A87E303106E4E88565CFE952598FA6DA7C00532F0414246E2B2DD06A925151256901AA9A47A689E7402002100E4239AB85E2E6A27C52C6DE9B9078D9" + )[..] + ) } #[test] @@ -159,7 +164,12 @@ fn decode_ocsp_resp_ca_signed() { ); let reenc = ocsp_resp.to_der().unwrap(); - assert_eq!(reenc, &hex!("308201D30A0100A08201CC308201C806092B0601050507300101048201B9308201B530819EA2160414246E2B2DD06A925151256901AA9A47A689E74020180F32303232303230323034313232355A307330713049300906052B0E03021A05000414A87E303106E4E88565CFE952598FA6DA7C00532F0414246E2B2DD06A925151256901AA9A47A689E7402002100E4239AB85E2E6A27C52C6DE9B9078D98000180F32303232303230323033353730315AA011180F32303232303230393033313230315A300D06092A864886F70D01010B0500038201010089DC0913BD91DB172C314AE8F78E6574950353618FFBBF2F12B1F134F21EC20063E66C60AC463BDB926A9D5B699EB39689032659D43C441863BAC9D8B7CC84137B558503D2631348EDA79AEC9FD4B69AE988F68A752470D3D4BA46F41B9FD41A974A5311BAA191AFBA370F0B051F035297FA76A2133B98FF471BDA4BFBFDA275B4FA1CF8377EEB2B2141F9C998ACE27C60F11E221D6732A5D538FEDF9A01D776E1877BCF70A8C953630B2C66752A66DF087C075794F5A2C0023C964CD73476EA2556F091F6C191B30B74E2523F668F32CE10AFB3D51CE053D4D41E62214B60171093AB915DBBA497F09B3C279127E1D25C7AA6A7048BBEA41A23F4F827BD108F")[..]) + assert_eq!( + reenc, + &hex!( + "308201D30A0100A08201CC308201C806092B0601050507300101048201B9308201B530819EA2160414246E2B2DD06A925151256901AA9A47A689E74020180F32303232303230323034313232355A307330713049300906052B0E03021A05000414A87E303106E4E88565CFE952598FA6DA7C00532F0414246E2B2DD06A925151256901AA9A47A689E7402002100E4239AB85E2E6A27C52C6DE9B9078D98000180F32303232303230323033353730315AA011180F32303232303230393033313230315A300D06092A864886F70D01010B0500038201010089DC0913BD91DB172C314AE8F78E6574950353618FFBBF2F12B1F134F21EC20063E66C60AC463BDB926A9D5B699EB39689032659D43C441863BAC9D8B7CC84137B558503D2631348EDA79AEC9FD4B69AE988F68A752470D3D4BA46F41B9FD41A974A5311BAA191AFBA370F0B051F035297FA76A2133B98FF471BDA4BFBFDA275B4FA1CF8377EEB2B2141F9C998ACE27C60F11E221D6732A5D538FEDF9A01D776E1877BCF70A8C953630B2C66752A66DF087C075794F5A2C0023C964CD73476EA2556F091F6C191B30B74E2523F668F32CE10AFB3D51CE053D4D41E62214B60171093AB915DBBA497F09B3C279127E1D25C7AA6A7048BBEA41A23F4F827BD108F" + )[..] + ) } #[test] @@ -199,7 +209,12 @@ fn decode_ocsp_req_delegated() { assert_eq!(req.req_cert.serial_number.as_bytes(), &hex!("01017467")); let reenc = ocsp_req.to_der().unwrap(); - assert_eq!(reenc, &hex!("304530433041303F303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017467")[..]) + assert_eq!( + reenc, + &hex!( + "304530433041303F303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017467" + )[..] + ) } #[test] @@ -312,5 +327,10 @@ fn decode_ocsp_resp_delegated() { ); let reenc = ocsp_resp.to_der().unwrap(); - assert_eq!(reenc, &hex!("30820FA10A0100A0820F9A30820F9606092B060105050730010104820F8730820F83308209F1A2160414ADB0A9B2DDE9D444B4DF80F599598E84AC5EC687180F32303232303230333135303233365A308209C4307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017456A116180F32303231303532303138303635305AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017457A116180F32303231303730373139353830355AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017459A116180F32303231303532303138303634395AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745AA116180F32303231303132323136303832375AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745BA116180F32303231303731393138353734355AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745CA116180F32303231303132323136303832365AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745EA116180F32303231303432323132323332335AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017460A116180F32303231303731393138353734335AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017462A116180F32303231303932393136353734375AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017464A116180F32303231303432323132323332325AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017467A116180F32303231303932393136353734375AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017477A116180F32303231303730313138313934365AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017479A116180F32303232303130353138313532325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747AA116180F32303231313130343131353932395AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747BA116180F32303231303730313138313934325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747CA116180F32303232303130353138313532325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747DA116180F32303231303231303136333032315AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747EA116180F32303231313130343131353932325AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017480A116180F32303231303231303136333032305AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017481A116180F32303231303132323133353031395AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A300D06092A864886F70D01010B050003820101008946FF8FF3009FC7265CB687D56960190379BEF6537FAC541A2306ED709B51AACD79B313331E297495AC4E26ABD94030CC407FDCE26CFC0B7A2BE1F226906182863FF1F140D628FA02B1D0BE1A1697E2F9C17AEF5FEC32AA4D120FAF0F58474AC2718964033076286DC358F5E96B08A5C83323CA4CA2B881D8FFA8E0EA3DB9A90863D378A3349EBF189030DA11891C6695950C5B93CBD440D998E67C0137655AC9DA40826B51211AD5985918336939131A4D1BF9E9A2A88CFB3C5059E3D1CE0D9B19F487EC018C60A0279E24270C7090006A4EC728E5C4A1F86829AFA236AF9979165DF1E7F0F5544217864F9C348ABF2B17C2FCD7DDE35838A99BC4A7256821A0820476308204723082046E30820356A0030201020203358762300D06092A864886F70D01010B0500305D310B300906035504061302555331183016060355040A130F552E532E20476F7665726E6D656E74310C300A060355040B1303446F44310C300A060355040B1303504B49311830160603550403130F444F4420454D41494C2043412D3539301E170D3232303132353030303035315A170D3232303331313030303035315A3064310B300906035504061302555331183016060355040A130F552E532E20476F7665726E6D656E74310C300A060355040B1303446F44310C300A060355040B1303504B49311F301D06035504031316444F44204E4950524E4554204F43535020313244203230820122300D06092A864886F70D01010105000382010F003082010A0282010100BF8A691DDB447562EFCDCB6C4DED76DDB200D1A188E01A3BA4EEEE1C42A7E5E78C0784C512F5CF64DD1A407A2EBC1F280761C1372351E03AED90C2DA0556066398E555EEE91C92988A62CDA1FD1F4E2E5F6EC6C022821C0D7C8B0E90E7CCF203CE8F102CBF4756D9B8CD09A2F16CF08F1E944311C8CD2120B98F6BCAEA1E60D1841A933815C8936BD20CC984FA1F5BF7AFFFFF2886DE53FDF3AE80E8394E09D441AE615693A78FE0051942B724147595DF049382897E26BBEA4E6902376C494F31141D1693005AA4E8AEBE4FEC342D10BFD90661935FB00D61A1FF7CB3B8FF45E473B3FFDD6D2C692FA8C0DE23373F1A6AD84109E7A9274008C5E94E28CE91850203010001A382012E3082012A301F0603551D23041830168014771441A65D9526D01DFF953B628CEAB7B55D3B92304606082B06010505070101043A3038303606082B06010505073002862A687474703A2F2F63726C2E646973612E6D696C2F7369676E2F444F44454D41494C43415F35392E63657230160603551D250101FF040C300A06082B06010505070309300E0603551D0F0101FF040403020780300F06092B060105050730010504020500301D0603551D0E04160414ADB0A9B2DDE9D444B4DF80F599598E84AC5EC68730670603551D200460305E300B0609608648016502010B24300B0609608648016502010B27300B0609608648016502010B2A300B0609608648016502010B3B300C060A6086480165030201030D300C060A60864801650302010311300C060A60864801650302010327300D06092A864886F70D01010B0500038201010047FE1DF6D439EF205C931F34B8C802B6E6D9C4EFEAFA7228FD07E56DFF17EEC18C250941EB46D5F416A02F2706A951A2A16435C589EE1059BB86EC38C7F07C2C6660C4B25C8918115FFD21A0D9798B860F878122B3781DCA004AFE869B4B88E0B8ABB4C3A255BC034B36ED82E4692AB765667E3036FC4BB2A53EF9B4654D5C8FDA62E1F6B9DFC7382FA9A3BEAC5EB35A105CB6FFD7B33D561DA77B886D17F58F9D6EDC722C9786E7C664598116F9ACB41282FB0C75EF6BA87BAE97249A42DF45FEC6AEB724C03D8EE5FF4FD7753AC0FE50CB6B746544D4A4DB977946D29183295B160538338FA2FB27F6BC84B5CBD658A431A8B87A9E20A57753BC8AB964B486")[..]) + assert_eq!( + reenc, + &hex!( + "30820FA10A0100A0820F9A30820F9606092B060105050730010104820F8730820F83308209F1A2160414ADB0A9B2DDE9D444B4DF80F599598E84AC5EC687180F32303232303230333135303233365A308209C4307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017456A116180F32303231303532303138303635305AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017457A116180F32303231303730373139353830355AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017459A116180F32303231303532303138303634395AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745AA116180F32303231303132323136303832375AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745BA116180F32303231303731393138353734355AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745CA116180F32303231303132323136303832365AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101745EA116180F32303231303432323132323332335AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017460A116180F32303231303731393138353734335AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017462A116180F32303231303932393136353734375AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017464A116180F32303231303432323132323332325AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017467A116180F32303231303932393136353734375AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017477A116180F32303231303730313138313934365AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017479A116180F32303232303130353138313532325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747AA116180F32303231313130343131353932395AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747BA116180F32303231303730313138313934325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747CA116180F32303232303130353138313532325AA0030A0103180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747DA116180F32303231303231303136333032315AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B9202040101747EA116180F32303231313130343131353932325AA0030A0101180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017480A116180F32303231303231303136333032305AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A307B303D300906052B0E03021A050004140F0D5890F551D42ACF5431B7F42A321F7B74A4730414771441A65D9526D01DFF953B628CEAB7B55D3B92020401017481A116180F32303231303132323133353031395AA0030A0104180F32303232303230333030333030305AA011180F32303232303231303031333030305A300D06092A864886F70D01010B050003820101008946FF8FF3009FC7265CB687D56960190379BEF6537FAC541A2306ED709B51AACD79B313331E297495AC4E26ABD94030CC407FDCE26CFC0B7A2BE1F226906182863FF1F140D628FA02B1D0BE1A1697E2F9C17AEF5FEC32AA4D120FAF0F58474AC2718964033076286DC358F5E96B08A5C83323CA4CA2B881D8FFA8E0EA3DB9A90863D378A3349EBF189030DA11891C6695950C5B93CBD440D998E67C0137655AC9DA40826B51211AD5985918336939131A4D1BF9E9A2A88CFB3C5059E3D1CE0D9B19F487EC018C60A0279E24270C7090006A4EC728E5C4A1F86829AFA236AF9979165DF1E7F0F5544217864F9C348ABF2B17C2FCD7DDE35838A99BC4A7256821A0820476308204723082046E30820356A0030201020203358762300D06092A864886F70D01010B0500305D310B300906035504061302555331183016060355040A130F552E532E20476F7665726E6D656E74310C300A060355040B1303446F44310C300A060355040B1303504B49311830160603550403130F444F4420454D41494C2043412D3539301E170D3232303132353030303035315A170D3232303331313030303035315A3064310B300906035504061302555331183016060355040A130F552E532E20476F7665726E6D656E74310C300A060355040B1303446F44310C300A060355040B1303504B49311F301D06035504031316444F44204E4950524E4554204F43535020313244203230820122300D06092A864886F70D01010105000382010F003082010A0282010100BF8A691DDB447562EFCDCB6C4DED76DDB200D1A188E01A3BA4EEEE1C42A7E5E78C0784C512F5CF64DD1A407A2EBC1F280761C1372351E03AED90C2DA0556066398E555EEE91C92988A62CDA1FD1F4E2E5F6EC6C022821C0D7C8B0E90E7CCF203CE8F102CBF4756D9B8CD09A2F16CF08F1E944311C8CD2120B98F6BCAEA1E60D1841A933815C8936BD20CC984FA1F5BF7AFFFFF2886DE53FDF3AE80E8394E09D441AE615693A78FE0051942B724147595DF049382897E26BBEA4E6902376C494F31141D1693005AA4E8AEBE4FEC342D10BFD90661935FB00D61A1FF7CB3B8FF45E473B3FFDD6D2C692FA8C0DE23373F1A6AD84109E7A9274008C5E94E28CE91850203010001A382012E3082012A301F0603551D23041830168014771441A65D9526D01DFF953B628CEAB7B55D3B92304606082B06010505070101043A3038303606082B06010505073002862A687474703A2F2F63726C2E646973612E6D696C2F7369676E2F444F44454D41494C43415F35392E63657230160603551D250101FF040C300A06082B06010505070309300E0603551D0F0101FF040403020780300F06092B060105050730010504020500301D0603551D0E04160414ADB0A9B2DDE9D444B4DF80F599598E84AC5EC68730670603551D200460305E300B0609608648016502010B24300B0609608648016502010B27300B0609608648016502010B2A300B0609608648016502010B3B300C060A6086480165030201030D300C060A60864801650302010311300C060A60864801650302010327300D06092A864886F70D01010B0500038201010047FE1DF6D439EF205C931F34B8C802B6E6D9C4EFEAFA7228FD07E56DFF17EEC18C250941EB46D5F416A02F2706A951A2A16435C589EE1059BB86EC38C7F07C2C6660C4B25C8918115FFD21A0D9798B860F878122B3781DCA004AFE869B4B88E0B8ABB4C3A255BC034B36ED82E4692AB765667E3036FC4BB2A53EF9B4654D5C8FDA62E1F6B9DFC7382FA9A3BEAC5EB35A105CB6FFD7B33D561DA77B886D17F58F9D6EDC722C9786E7C664598116F9ACB41282FB0C75EF6BA87BAE97249A42DF45FEC6AEB724C03D8EE5FF4FD7753AC0FE50CB6B746544D4A4DB977946D29183295B160538338FA2FB27F6BC84B5CBD658A431A8B87A9E20A57753BC8AB964B486" + )[..] + ) } diff --git a/x509-ocsp/tests/requests.rs b/x509-ocsp/tests/requests.rs index aadf8a856..d7be6f938 100644 --- a/x509-ocsp/tests/requests.rs +++ b/x509-ocsp/tests/requests.rs @@ -1,6 +1,6 @@ //! ocsp request decode tests -use der::{asn1::ObjectIdentifier, Decode, Encode}; +use der::{Decode, Encode, asn1::ObjectIdentifier}; use hex_literal::hex; use x509_cert::{ext::Extension, serial_number::SerialNumber}; use x509_ocsp::{ext::Nonce, *}; diff --git a/x509-ocsp/tests/responses.rs b/x509-ocsp/tests/responses.rs index fa520f542..4c0108a5e 100644 --- a/x509-ocsp/tests/responses.rs +++ b/x509-ocsp/tests/responses.rs @@ -1,14 +1,14 @@ //! ocsp response decode tests use der::{ - asn1::{Null, ObjectIdentifier, OctetString}, DateTime, Decode, Encode, + asn1::{Null, ObjectIdentifier, OctetString}, }; use hex_literal::hex; use lazy_static::lazy_static; use spki::AlgorithmIdentifierOwned; use x509_cert::{ - ext::{pkix::CrlReason, Extension}, + ext::{Extension, pkix::CrlReason}, name::Name, serial_number::SerialNumber, }; From 7d9c8b8f843cb3bdfe35a8c479f9341392227e4b Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Sun, 2 Mar 2025 22:14:51 -0800 Subject: [PATCH 10/10] sec1: cleanup --- sec1/Cargo.lock | 350 ------------------------------------------------ 1 file changed, 350 deletions(-) delete mode 100644 sec1/Cargo.lock diff --git a/sec1/Cargo.lock b/sec1/Cargo.lock deleted file mode 100644 index e793492f2..000000000 --- a/sec1/Cargo.lock +++ /dev/null @@ -1,350 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bitflags" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "const-oid" -version = "0.10.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff6be19477a1bd5441f382916a89bc2a0b2c35db6d41e0f6e8538bf6d6463f" - -[[package]] -name = "der" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82db698b33305f0134faf590b9d1259dc171b5481ac41d5c8146c3b3ee7d4319" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi", - "windows-targets", -] - -[[package]] -name = "hex-literal" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcaaec4551594c969335c98c903c1397853d4198408ea609190f420500f6be71" - -[[package]] -name = "hybrid-array" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dab50e193aebe510fe0e40230145820e02f48dae0cf339ea4204e6e708ff7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "libc" -version = "0.2.170" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" - -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - -[[package]] -name = "once_cell" -version = "1.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" - -[[package]] -name = "pem-rfc7468" -version = "1.0.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dfbfa5c6f0906884269722c5478e72fd4d6c0e24fe600332c6d62359567ce1" -dependencies = [ - "base64ct", -] - -[[package]] -name = "pkcs8" -version = "0.11.0-rc.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22636de7c995e997ed3d8d2949b7414d4faba3efa7312a6c0e75d875a14bdd4" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "proc-macro2" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "sec1" -version = "0.8.0-rc.4" -dependencies = [ - "base16ct", - "der", - "hex-literal", - "hybrid-array", - "pkcs8", - "serdect", - "subtle", - "tempfile", - "zeroize", -] - -[[package]] -name = "serde" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.218" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serdect" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f42f67da2385b51a5f9652db9c93d78aeaf7610bf5ec366080b6de810604af53" -dependencies = [ - "base16ct", - "serde", -] - -[[package]] -name = "spki" -version = "0.8.0-rc.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ac66481418fd7afdc584adcf3be9aa572cf6c2858814494dc2a01755f050bc" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "2.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" -dependencies = [ - "cfg-if", - "fastrand", - "getrandom", - "once_cell", - "rustix", - "windows-sys", -] - -[[package]] -name = "typenum" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" - -[[package]] -name = "unicode-ident" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" - -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"