summaryrefslogtreecommitdiff
path: root/ext/crypto/ed25519.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/ed25519.rs
parentf3b580d001cfed0c6df55c5be3f89b4e58719421 (diff)
chore: upgrade rsa to 0.9 (#21016)
Diffstat (limited to 'ext/crypto/ed25519.rs')
-rw-r--r--ext/crypto/ed25519.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/ext/crypto/ed25519.rs b/ext/crypto/ed25519.rs
index e2a0ce408..874eb74b0 100644
--- a/ext/crypto/ed25519.rs
+++ b/ext/crypto/ed25519.rs
@@ -2,6 +2,7 @@
use base64::prelude::BASE64_URL_SAFE_NO_PAD;
use base64::Engine;
+use deno_core::error::custom_error;
use deno_core::error::AnyError;
use deno_core::op2;
use deno_core::ToJsBuffer;
@@ -123,7 +124,14 @@ pub fn op_crypto_export_spki_ed25519(
},
subject_public_key: pubkey,
};
- Ok(key_info.to_vec()?.into())
+ Ok(
+ key_info
+ .to_vec()
+ .map_err(|_| {
+ custom_error("DOMExceptionOperationError", "Failed to export key")
+ })?
+ .into(),
+ )
}
#[op2]
@@ -131,10 +139,12 @@ pub fn op_crypto_export_spki_ed25519(
pub fn op_crypto_export_pkcs8_ed25519(
#[buffer] pkey: &[u8],
) -> Result<ToJsBuffer, AnyError> {
+ use rsa::pkcs1::der::Encode;
+
// This should probably use OneAsymmetricKey instead
let pk_info = rsa::pkcs8::PrivateKeyInfo {
public_key: None,
- algorithm: rsa::pkcs8::AlgorithmIdentifier {
+ algorithm: rsa::pkcs8::AlgorithmIdentifierRef {
// id-Ed25519
oid: ED25519_OID,
parameters: None,
@@ -142,7 +152,9 @@ pub fn op_crypto_export_pkcs8_ed25519(
private_key: pkey, // OCTET STRING
};
- Ok(pk_info.to_vec()?.into())
+ let mut buf = Vec::new();
+ pk_info.encode_to_vec(&mut buf)?;
+ Ok(buf.into())
}
// 'x' from Section 2 of RFC 8037