summaryrefslogtreecommitdiff
path: root/ext/crypto/ed25519.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-11-04 09:59:25 +0530
committerDivy Srivastava <dj.srivastava23@gmail.com>2023-11-05 06:40:35 -0800
commit5202f5460db793df198ea2751a5aebeaf67521af (patch)
treeefb3a7845911474524e3d03468dd7f7deb40e56d /ext/crypto/ed25519.rs
parent46faf37ec06c19e1163a57157f6a21eaafe9f5d2 (diff)
chore(ext/crypto): upgrade ec crates
Diffstat (limited to 'ext/crypto/ed25519.rs')
-rw-r--r--ext/crypto/ed25519.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/crypto/ed25519.rs b/ext/crypto/ed25519.rs
index 874eb74b0..10477219a 100644
--- a/ext/crypto/ed25519.rs
+++ b/ext/crypto/ed25519.rs
@@ -11,6 +11,7 @@ use rand::rngs::OsRng;
use rand::RngCore;
use ring::signature::Ed25519KeyPair;
use ring::signature::KeyPair;
+use spki::der::asn1::BitString;
use spki::der::Decode;
use spki::der::Encode;
@@ -65,7 +66,7 @@ pub fn op_crypto_import_spki_ed25519(
#[buffer] out: &mut [u8],
) -> bool {
// 2-3.
- let pk_info = match spki::SubjectPublicKeyInfo::from_der(key_data) {
+ let pk_info = match spki::SubjectPublicKeyInfoRef::try_from(key_data) {
Ok(pk_info) => pk_info,
Err(_) => return false,
};
@@ -78,7 +79,7 @@ pub fn op_crypto_import_spki_ed25519(
if pk_info.algorithm.parameters.is_some() {
return false;
}
- out.copy_from_slice(pk_info.subject_public_key);
+ out.copy_from_slice(pk_info.subject_public_key.raw_bytes());
true
}
@@ -117,16 +118,16 @@ pub fn op_crypto_export_spki_ed25519(
#[buffer] pubkey: &[u8],
) -> Result<ToJsBuffer, AnyError> {
let key_info = spki::SubjectPublicKeyInfo {
- algorithm: spki::AlgorithmIdentifier {
+ algorithm: spki::AlgorithmIdentifierOwned {
// id-Ed25519
oid: ED25519_OID,
parameters: None,
},
- subject_public_key: pubkey,
+ subject_public_key: BitString::from_bytes(pubkey)?,
};
Ok(
key_info
- .to_vec()
+ .to_der()
.map_err(|_| {
custom_error("DOMExceptionOperationError", "Failed to export key")
})?