diff --git a/sec1/src/traits.rs b/sec1/src/traits.rs index ce72ad3b..82d3f7dc 100644 --- a/sec1/src/traits.rs +++ b/sec1/src/traits.rs @@ -11,7 +11,7 @@ use {crate::LineEnding, alloc::string::String, der::pem::PemLabel}; #[cfg(feature = "pkcs8")] use { crate::{EcPrivateKey, ALGORITHM_OID}, - der::Decode, + der::{asn1::OctetStringRef, Decode}, }; #[cfg(feature = "std")] @@ -100,6 +100,8 @@ where parameters: params_oid.as_ref().map(Into::into), }; + let private_key = OctetStringRef::new(private_key)?; + Ok(Self::try_from(pkcs8::PrivateKeyInfo { algorithm, private_key, @@ -115,7 +117,8 @@ impl EncodeEcPrivateKey for T { let pkcs8_key = pkcs8::PrivateKeyInfo::from_der(doc.as_bytes())?; pkcs8_key.algorithm.assert_algorithm_oid(ALGORITHM_OID)?; - let mut pkcs1_key = EcPrivateKey::from_der(pkcs8_key.private_key)?; + // TODO: untested + let mut pkcs1_key = EcPrivateKey::from_der(pkcs8_key.private_key.as_bytes())?; pkcs1_key.parameters = Some(pkcs8_key.algorithm.parameters_oid()?.into()); pkcs1_key.try_into() }