summaryrefslogtreecommitdiff
path: root/ext/crypto/export_key.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-10-30 08:25:12 -0700
committerGitHub <noreply@github.com>2023-10-30 16:25:12 +0100
commit02cc37e05494e576ea8e120b9fe21b447da9546b (patch)
tree746651ad336b663dd21923749d57db9313060c9e /ext/crypto/export_key.rs
parentf3b580d001cfed0c6df55c5be3f89b4e58719421 (diff)
chore: upgrade rsa to 0.9 (#21016)
Diffstat (limited to 'ext/crypto/export_key.rs')
-rw-r--r--ext/crypto/export_key.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/ext/crypto/export_key.rs b/ext/crypto/export_key.rs
index a34c40402..4ba30fbaa 100644
--- a/ext/crypto/export_key.rs
+++ b/ext/crypto/export_key.rs
@@ -10,12 +10,12 @@ use deno_core::op2;
use deno_core::ToJsBuffer;
use elliptic_curve::sec1::ToEncodedPoint;
use p256::pkcs8::DecodePrivateKey;
-use rsa::pkcs1::UIntRef;
+use rsa::pkcs1::der::Decode;
+use rsa::pkcs8::der::asn1::UintRef;
+use rsa::pkcs8::der::Encode;
use serde::Deserialize;
use serde::Serialize;
use spki::der::asn1;
-use spki::der::Decode;
-use spki::der::Encode;
use spki::AlgorithmIdentifier;
use crate::shared::*;
@@ -112,7 +112,7 @@ pub fn op_crypto_export_key(
}
}
-fn uint_to_b64(bytes: UIntRef) -> String {
+fn uint_to_b64(bytes: UintRef) -> String {
BASE64_URL_SAFE_NO_PAD.encode(bytes.as_bytes())
}
@@ -126,6 +126,7 @@ fn export_key_rsa(
) -> Result<ExportKeyResult, deno_core::anyhow::Error> {
match format {
ExportKeyFormat::Spki => {
+ use spki::der::Encode;
let subject_public_key = &key_data.as_rsa_public_key()?;
// the SPKI structure
@@ -158,18 +159,21 @@ fn export_key_rsa(
let pk_info = rsa::pkcs8::PrivateKeyInfo {
public_key: None,
- algorithm: rsa::pkcs8::AlgorithmIdentifier {
+ algorithm: rsa::pkcs8::AlgorithmIdentifierRef {
// rsaEncryption(1)
oid: rsa::pkcs8::ObjectIdentifier::new_unwrap("1.2.840.113549.1.1.1"),
// parameters field should not be omitted (None).
// It MUST have ASN.1 type NULL as per defined in RFC 3279 Section 2.3.1
- parameters: Some(asn1::AnyRef::from(asn1::Null)),
+ parameters: Some(rsa::pkcs8::der::asn1::AnyRef::from(
+ rsa::pkcs8::der::asn1::Null,
+ )),
},
private_key,
};
// Infallible because we know the private key is valid.
- let pkcs8_der = pk_info.to_vec().unwrap();
+ let mut pkcs8_der = Vec::new();
+ pk_info.encode_to_vec(&mut pkcs8_der)?;
Ok(ExportKeyResult::Pkcs8(pkcs8_der.into()))
}
@@ -255,6 +259,8 @@ fn export_key_ec(
Ok(ExportKeyResult::Raw(subject_public_key.into()))
}
ExportKeyFormat::Spki => {
+ use spki::der::Encode;
+
let subject_public_key = match named_curve {
EcNamedCurve::P256 => {
let point = key_data.as_ec_public_key_p256()?;