Skip to content

Commit 5c7ed62

Browse files
committed
WIP: pkcs1: adopt pkcs8 API changes
Signed-off-by: Arthur Gautier <[email protected]>
1 parent 8191fb6 commit 5c7ed62

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

pkcs1/src/private_key.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ pub(crate) mod other_prime_info;
66
use crate::{Error, Result, RsaPublicKey, Version};
77
use core::fmt;
88
use der::{
9-
asn1::UintRef, Decode, DecodeValue, Encode, EncodeValue, Header, Length, Reader, Sequence, Tag,
10-
Writer,
9+
asn1::{OctetStringRef, UintRef},
10+
Decode, DecodeValue, Encode, EncodeValue, Header, Length, Reader, Sequence, Tag, Writer,
1111
};
1212

1313
#[cfg(feature = "alloc")]
@@ -172,6 +172,14 @@ impl<'a> TryFrom<&'a [u8]> for RsaPrivateKey<'a> {
172172
}
173173
}
174174

175+
impl<'a> TryFrom<OctetStringRef<'a>> for RsaPrivateKey<'a> {
176+
type Error = Error;
177+
178+
fn try_from(bytes: OctetStringRef<'a>) -> Result<Self> {
179+
Ok(Self::from_der(bytes.as_bytes())?)
180+
}
181+
}
182+
175183
impl fmt::Debug for RsaPrivateKey<'_> {
176184
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
177185
f.debug_struct("RsaPrivateKey")

pkcs1/src/traits.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use {
1515
#[cfg(feature = "pkcs8")]
1616
use {
1717
crate::{ALGORITHM_ID, ALGORITHM_OID},
18-
der::asn1::BitStringRef,
18+
der::asn1::{BitStringRef, OctetStringRef},
1919
};
2020

2121
#[cfg(feature = "std")]
@@ -160,6 +160,8 @@ where
160160
T: for<'a> TryFrom<pkcs8::PrivateKeyInfo<'a>, Error = pkcs8::Error>,
161161
{
162162
fn from_pkcs1_der(private_key: &[u8]) -> Result<Self> {
163+
// TODO: UNTESTED
164+
let private_key = OctetStringRef::new(private_key)?;
163165
Ok(Self::try_from(pkcs8::PrivateKeyInfo {
164166
algorithm: ALGORITHM_ID,
165167
private_key,
@@ -185,9 +187,10 @@ where
185187
impl<T: pkcs8::EncodePrivateKey> EncodeRsaPrivateKey for T {
186188
fn to_pkcs1_der(&self) -> Result<SecretDocument> {
187189
let pkcs8_doc = self.to_pkcs8_der()?;
190+
// TODO: UNTESTED
188191
let pkcs8_key = pkcs8::PrivateKeyInfo::from_der(pkcs8_doc.as_bytes())?;
189192
pkcs8_key.algorithm.assert_algorithm_oid(ALGORITHM_OID)?;
190-
RsaPrivateKey::from_der(pkcs8_key.private_key)?.try_into()
193+
RsaPrivateKey::from_der(pkcs8_key.private_key.as_bytes())?.try_into()
191194
}
192195
}
193196

0 commit comments

Comments
 (0)