|
3 | 3 | // This product includes software developed at Datadog (https://www.datadoghq.com/) |
4 | 4 | // Copyright 2026 Datadog, Inc. |
5 | 5 |
|
6 | | -use pkcs1::der::Decode as Pkcs1Decode; |
| 6 | +use pkcs1::der::Decode as _; |
7 | 7 | use pkcs1::RsaPrivateKey; |
8 | | -use pkcs8::der::Decode as Pkcs8Decode; |
| 8 | +use pkcs8::der::Decode as _; |
9 | 9 | use pkcs8::PrivateKeyInfoRef; |
10 | 10 | use rustls::pki_types::PrivateKeyDer; |
11 | 11 | use rustls::{Error, SignatureAlgorithm, SignatureScheme}; |
@@ -54,15 +54,17 @@ impl RsaSigningKey { |
54 | 54 | pub(super) fn new(der: &PrivateKeyDer<'_>) -> Result<Self, Error> { |
55 | 55 | let key = match der { |
56 | 56 | PrivateKeyDer::Pkcs1(private_pkcs1_key_der) => { |
57 | | - Pkcs1Decode::from_der(private_pkcs1_key_der.secret_pkcs1_der()) |
| 57 | + RsaPrivateKey::from_der(private_pkcs1_key_der.secret_pkcs1_der()) |
58 | 58 | .map_err(|e| Error::General(format!("Failed to parse PKCS1 key: {e}"))) |
59 | 59 | } |
60 | 60 | PrivateKeyDer::Pkcs8(private_pkcs8_key_der) => { |
61 | | - let pki: PrivateKeyInfoRef = |
62 | | - Pkcs8Decode::from_der(private_pkcs8_key_der.secret_pkcs8_der()) |
63 | | - .map_err(|e| Error::General(format!("Failed to parse PKCS8 key: {e}")))?; |
64 | | - Pkcs1Decode::from_der(pki.private_key.as_bytes()) |
65 | | - .map_err(|e| Error::General(format!("Failed to parse PKCS8 RSA key: {e}"))) |
| 61 | + PrivateKeyInfoRef::from_der(private_pkcs8_key_der.secret_pkcs8_der()) |
| 62 | + .map_err(|e| Error::General(format!("Failed to parse PKCS8 key: {e}"))) |
| 63 | + .and_then(|pki| { |
| 64 | + RsaPrivateKey::from_der(pki.private_key.as_bytes()).map_err(|e| { |
| 65 | + Error::General(format!("Failed to parse PKCS8 RSA key: {e}")) |
| 66 | + }) |
| 67 | + }) |
66 | 68 | } |
67 | 69 | _ => Err(Error::General("Unsupported key format".to_string())), |
68 | 70 | }?; |
|
0 commit comments