summaryrefslogtreecommitdiff
path: root/ext/crypto/x25519.rs
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-10-18 15:23:20 -0700
committerGitHub <noreply@github.com>2024-10-18 15:23:20 -0700
commit8ca8174c81a3de35bcb02fc371c90f9d0a7303ab (patch)
treeadf345a0cfd48eb13826847e71763d60125871ea /ext/crypto/x25519.rs
parente22d0e91ef7ce17dca299a44d1ccd292abde34f2 (diff)
refactor(ext/crypto): use concrete error types (#26167)
Diffstat (limited to 'ext/crypto/x25519.rs')
-rw-r--r--ext/crypto/x25519.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/ext/crypto/x25519.rs b/ext/crypto/x25519.rs
index cdbd1d7c8..d2c4d986b 100644
--- a/ext/crypto/x25519.rs
+++ b/ext/crypto/x25519.rs
@@ -1,8 +1,6 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
use curve25519_dalek::montgomery::MontgomeryPoint;
-use deno_core::error::custom_error;
-use deno_core::error::AnyError;
use deno_core::op2;
use deno_core::ToJsBuffer;
use elliptic_curve::pkcs8::PrivateKeyInfo;
@@ -13,6 +11,14 @@ use spki::der::asn1::BitString;
use spki::der::Decode;
use spki::der::Encode;
+#[derive(Debug, thiserror::Error)]
+pub enum X25519Error {
+ #[error("Failed to export key")]
+ FailedExport,
+ #[error(transparent)]
+ Der(#[from] spki::der::Error),
+}
+
#[op2(fast)]
pub fn op_crypto_generate_x25519_keypair(
#[buffer] pkey: &mut [u8],
@@ -113,7 +119,7 @@ pub fn op_crypto_import_pkcs8_x25519(
#[serde]
pub fn op_crypto_export_spki_x25519(
#[buffer] pubkey: &[u8],
-) -> Result<ToJsBuffer, AnyError> {
+) -> Result<ToJsBuffer, X25519Error> {
let key_info = spki::SubjectPublicKeyInfo {
algorithm: spki::AlgorithmIdentifierRef {
// id-X25519
@@ -125,9 +131,7 @@ pub fn op_crypto_export_spki_x25519(
Ok(
key_info
.to_der()
- .map_err(|_| {
- custom_error("DOMExceptionOperationError", "Failed to export key")
- })?
+ .map_err(|_| X25519Error::FailedExport)?
.into(),
)
}
@@ -136,7 +140,7 @@ pub fn op_crypto_export_spki_x25519(
#[serde]
pub fn op_crypto_export_pkcs8_x25519(
#[buffer] pkey: &[u8],
-) -> Result<ToJsBuffer, AnyError> {
+) -> Result<ToJsBuffer, X25519Error> {
use rsa::pkcs1::der::Encode;
// This should probably use OneAsymmetricKey instead