diff --git a/Cargo.lock b/Cargo.lock index 520d43fe4..66028a96c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1050,12 +1050,12 @@ dependencies = [ name = "pkcs8" version = "0.11.0-rc.11" dependencies = [ + "ctutils", "der", "hex-literal", "pkcs5", "rand_core 0.10.1", "spki", - "subtle", "tempfile", ] diff --git a/pkcs8/Cargo.toml b/pkcs8/Cargo.toml index c25127dec..7755f919e 100644 --- a/pkcs8/Cargo.toml +++ b/pkcs8/Cargo.toml @@ -21,9 +21,9 @@ der = { version = "0.8.0-rc.12", features = ["oid"] } spki = "0.8" # optional dependencies -rand_core = { version = "0.10", optional = true, default-features = false } +ctutils = { version = "0.4", optional = true } pkcs5 = { version = "0.8", optional = true, features = ["rand_core"] } -subtle = { version = "2", optional = true, default-features = false } +rand_core = { version = "0.10", optional = true, default-features = false } [dev-dependencies] hex-literal = "1" diff --git a/pkcs8/src/private_key_info.rs b/pkcs8/src/private_key_info.rs index 09d96045f..8c7d27c3f 100644 --- a/pkcs8/src/private_key_info.rs +++ b/pkcs8/src/private_key_info.rs @@ -9,23 +9,20 @@ use der::{ }; use spki::AlgorithmIdentifier; +#[cfg(feature = "ctutils")] +use ctutils::{Choice, CtEq}; +#[cfg(feature = "pem")] +use der::pem::PemLabel; #[cfg(feature = "alloc")] use der::{ SecretDocument, asn1::{Any, BitString, OctetString}, }; - #[cfg(feature = "encryption")] use { crate::EncryptedPrivateKeyInfoRef, der::zeroize::Zeroizing, pkcs5::pbes2, rand_core::CryptoRng, }; -#[cfg(feature = "pem")] -use der::pem::PemLabel; - -#[cfg(feature = "subtle")] -use subtle::{Choice, ConstantTimeEq}; - /// Context-specific tag number for attributes. const ATTRIBUTES_TAG: TagNumber = TagNumber(0); @@ -336,8 +333,8 @@ impl PemLabel for PrivateKeyInfo { const PEM_LABEL: &'static str = "PRIVATE KEY"; } -#[cfg(feature = "subtle")] -impl ConstantTimeEq for PrivateKeyInfo +#[cfg(feature = "ctutils")] +impl CtEq for PrivateKeyInfo where Params: Eq, Key: PartialEq + AsRef<[u8]>, @@ -353,7 +350,7 @@ where } } -#[cfg(feature = "subtle")] +#[cfg(feature = "ctutils")] impl Eq for PrivateKeyInfo where Params: Eq, @@ -362,7 +359,7 @@ where { } -#[cfg(feature = "subtle")] +#[cfg(feature = "ctutils")] impl PartialEq for PrivateKeyInfo where Params: Eq, diff --git a/pkcs8/tests/private_key.rs b/pkcs8/tests/private_key.rs index b1e7f5d6c..10904d56f 100644 --- a/pkcs8/tests/private_key.rs +++ b/pkcs8/tests/private_key.rs @@ -194,7 +194,7 @@ fn encode_ed25519_der_v1() { } #[test] -#[cfg(all(feature = "alloc", feature = "subtle"))] +#[cfg(all(feature = "alloc", feature = "ctutils"))] fn encode_ed25519_der_v2() { let private_key = PrivateKeyInfoRef::try_from(ED25519_DER_V2_EXAMPLE).unwrap(); let private_der = private_key.to_der().unwrap();