Skip to content

Commit b0d3bbe

Browse files
committed
dsa: pkcs8 API changes
1 parent 0783bf4 commit b0d3bbe

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

dsa/src/signing_key.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ use digest::{core_api::BlockSizeUser, Digest, FixedOutputReset};
1111
use num_bigint::BigUint;
1212
use num_traits::Zero;
1313
use pkcs8::{
14-
der::{asn1::UintRef, AnyRef, Decode, Encode},
15-
AlgorithmIdentifierRef, EncodePrivateKey, PrivateKeyInfo, SecretDocument,
14+
der::{
15+
asn1::{OctetStringRef, UintRef},
16+
AnyRef, Decode, Encode,
17+
},
18+
AlgorithmIdentifierRef, EncodePrivateKey, PrivateKeyInfoRef, SecretDocument,
1619
};
1720
use signature::{
1821
hazmat::{PrehashSigner, RandomizedPrehashSigner},
@@ -182,7 +185,8 @@ impl EncodePrivateKey for SigningKey {
182185
let x = UintRef::new(&x_bytes)?;
183186
let mut signing_key = x.to_der()?;
184187

185-
let signing_key_info = PrivateKeyInfo::new(algorithm, &signing_key);
188+
let signing_key_info =
189+
PrivateKeyInfoRef::new(algorithm, OctetStringRef::new(&signing_key)?);
186190
let secret_document = signing_key_info.try_into()?;
187191

188192
signing_key.zeroize();
@@ -192,19 +196,19 @@ impl EncodePrivateKey for SigningKey {
192196
}
193197
}
194198

195-
impl<'a> TryFrom<PrivateKeyInfo<'a>> for SigningKey {
199+
impl<'a> TryFrom<PrivateKeyInfoRef<'a>> for SigningKey {
196200
type Error = pkcs8::Error;
197201

198-
fn try_from(value: PrivateKeyInfo<'a>) -> Result<Self, Self::Error> {
202+
fn try_from(value: PrivateKeyInfoRef<'a>) -> Result<Self, Self::Error> {
199203
value.algorithm.assert_algorithm_oid(OID)?;
200204

201205
let parameters = value.algorithm.parameters_any()?;
202206
let components = parameters.decode_as::<Components>()?;
203207

204-
let x = UintRef::from_der(value.private_key)?;
208+
let x = UintRef::from_der(value.private_key.as_bytes())?;
205209
let x = BigUint::from_bytes_be(x.as_bytes());
206210

207-
let y = if let Some(y_bytes) = value.public_key {
211+
let y = if let Some(y_bytes) = value.public_key.as_ref().and_then(|bs| bs.as_bytes()) {
208212
let y = UintRef::from_der(y_bytes)?;
209213
BigUint::from_bytes_be(y.as_bytes())
210214
} else {

0 commit comments

Comments
 (0)