diff options
author | Luca Casonato <hello@lcas.dev> | 2021-12-10 15:06:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-10 15:06:03 +0100 |
commit | 292682772691402bb3c1e4fee554d85746147621 (patch) | |
tree | 2df72a3edd51cf7bac39412a05f2c36cbf7de34a /ext/crypto/shared.rs | |
parent | 38f163022373c9adb050f17140f7d29bb403abe2 (diff) |
refactor(ext/crypto): clean up rust side importKey (#13036)
This commit cleans up the Rust side of `import_key` by using a bunch of
enums instead of structs with "type" and "data" fields.
This commit does add some duplicated code for the time being, because
a lot of the other ops still need to get the same cleanup treatment.
Diffstat (limited to 'ext/crypto/shared.rs')
-rw-r--r-- | ext/crypto/shared.rs | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/ext/crypto/shared.rs b/ext/crypto/shared.rs new file mode 100644 index 000000000..696b1c087 --- /dev/null +++ b/ext/crypto/shared.rs @@ -0,0 +1,74 @@ +use std::borrow::Cow; + +use deno_core::error::custom_error; +use deno_core::error::AnyError; +use deno_core::ZeroCopyBuf; +use serde::Deserialize; +use serde::Serialize; + +pub const RSA_ENCRYPTION_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.1"); +pub const SHA1_RSA_ENCRYPTION_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.5"); +pub const SHA256_RSA_ENCRYPTION_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.11"); +pub const SHA384_RSA_ENCRYPTION_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.12"); +pub const SHA512_RSA_ENCRYPTION_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.13"); +pub const RSASSA_PSS_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.10"); +pub const ID_SHA1_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.3.14.3.2.26"); +pub const ID_SHA256_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("2.16.840.1.101.3.4.2.1"); +pub const ID_SHA384_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("2.16.840.1.101.3.4.2.2"); +pub const ID_SHA512_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("2.16.840.1.101.3.4.2.3"); +pub const ID_MFG1: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.8"); +pub const RSAES_OAEP_OID: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.7"); +pub const ID_P_SPECIFIED: rsa::pkcs8::ObjectIdentifier = + rsa::pkcs8::ObjectIdentifier::new("1.2.840.113549.1.1.9"); + +#[derive(Serialize, Deserialize, Copy, Clone, PartialEq)] +pub enum ShaHash { + #[serde(rename = "SHA-1")] + Sha1, + #[serde(rename = "SHA-256")] + Sha256, + #[serde(rename = "SHA-384")] + Sha384, + #[serde(rename = "SHA-512")] + Sha512, +} + +#[derive(Serialize, Deserialize, Copy, Clone, PartialEq)] +pub enum EcNamedCurve { + #[serde(rename = "P-256")] + P256, + #[serde(rename = "P-384")] + P384, +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "lowercase", tag = "type", content = "data")] +pub enum RawKeyData { + Secret(ZeroCopyBuf), + Private(ZeroCopyBuf), + Public(ZeroCopyBuf), +} + +pub fn data_error(msg: impl Into<Cow<'static, str>>) -> AnyError { + custom_error("DOMExceptionDataError", msg) +} + +pub fn not_supported_error(msg: impl Into<Cow<'static, str>>) -> AnyError { + custom_error("DOMExceptionNotSupportedError", msg) +} + +pub fn unsupported_format() -> AnyError { + not_supported_error("unsupported format") +} |