diff --git a/libraries/droplet/Cargo.lock b/libraries/droplet/Cargo.lock index 7feb1c7a..4c7126b7 100644 --- a/libraries/droplet/Cargo.lock +++ b/libraries/droplet/Cargo.lock @@ -2,21 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" - [[package]] name = "asn1-rs" version = "0.6.2" @@ -90,33 +75,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets", -] - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" - [[package]] name = "cc" version = "1.2.17" @@ -132,25 +96,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "ctor" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" -dependencies = [ - "quote", - "syn", -] - [[package]] name = "data-encoding" version = "2.8.0" @@ -210,8 +155,6 @@ name = "droplet-rs" version = "0.7.1" dependencies = [ "hex", - "napi", - "napi-build", "rcgen", "ring", "time", @@ -231,12 +174,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - [[package]] name = "hex" version = "0.4.3" @@ -261,16 +198,6 @@ version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" -[[package]] -name = "libloading" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" -dependencies = [ - "cfg-if", - "windows-targets", -] - [[package]] name = "memchr" version = "2.7.4" @@ -283,71 +210,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" -dependencies = [ - "adler2", -] - -[[package]] -name = "napi" -version = "2.16.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55740c4ae1d8696773c78fdafd5d0e5fe9bc9f1b071c7ba493ba5c413a9184f3" -dependencies = [ - "bitflags", - "ctor", - "napi-derive", - "napi-sys", - "once_cell", - "tokio", -] - -[[package]] -name = "napi-build" -version = "2.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28acfa557c083f6e254a786e01ba253fc56f18ee000afcd4f79af735f73a6da" - -[[package]] -name = "napi-derive" -version = "2.16.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cbe2585d8ac223f7d34f13701434b9d5f4eb9c332cccce8dee57ea18ab8ab0c" -dependencies = [ - "cfg-if", - "convert_case", - "napi-derive-backend", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "napi-derive-backend" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1639aaa9eeb76e91c6ae66da8ce3e89e921cd3885e99ec85f4abacae72fc91bf" -dependencies = [ - "convert_case", - "once_cell", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "napi-sys" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3" -dependencies = [ - "libloading", -] - [[package]] name = "nom" version = "7.1.3" @@ -392,15 +254,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "object" -version = "0.36.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" -dependencies = [ - "memchr", -] - [[package]] name = "oid-registry" version = "0.7.1" @@ -419,12 +272,6 @@ dependencies = [ "asn1-rs 0.7.1", ] -[[package]] -name = "once_cell" -version = "1.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - [[package]] name = "pem" version = "3.0.5" @@ -435,12 +282,6 @@ dependencies = [ "serde", ] -[[package]] -name = "pin-project-lite" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - [[package]] name = "powerfmt" version = "0.2.0" @@ -493,12 +334,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "rusticata-macros" version = "4.1.0" @@ -633,28 +468,12 @@ dependencies = [ "time-core", ] -[[package]] -name = "tokio" -version = "1.44.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" -dependencies = [ - "backtrace", - "pin-project-lite", -] - [[package]] name = "unicode-ident" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - [[package]] name = "untrusted" version = "0.9.0" diff --git a/libraries/droplet/Cargo.toml b/libraries/droplet/Cargo.toml index 06f0ed20..c1a4b0ae 100644 --- a/libraries/droplet/Cargo.toml +++ b/libraries/droplet/Cargo.toml @@ -9,11 +9,6 @@ description = "Droplet is a `napi.rs` Rust/Node.js package full of high-performa crate-type = ["cdylib"] [dependencies] -# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix -napi = { version = "2.12.2", default-features = false, features = [ - "napi4", - "async", -] } hex = "0.4.3" time-macros = "0.2.22" time = "0.3.41" @@ -28,9 +23,6 @@ features = ["verify"] version = "0.13.2" features = ["crypto", "pem", "x509-parser"] -[build-dependencies] -napi-build = "2.0.1" - [profile.release] lto = true -strip = "symbols" \ No newline at end of file +strip = "symbols" diff --git a/libraries/droplet/src/ssl.rs b/libraries/droplet/src/ssl.rs index fb6e56ab..6f59e984 100644 --- a/libraries/droplet/src/ssl.rs +++ b/libraries/droplet/src/ssl.rs @@ -1,7 +1,5 @@ -use napi::Error; use rcgen::{ - CertificateParams, DistinguishedName, IsCa, KeyPair, KeyUsagePurpose, PublicKeyData, - SubjectPublicKeyInfo, + CertificateParams, DistinguishedName, Error, IsCa, KeyPair, KeyUsagePurpose, PublicKeyData, SubjectPublicKeyInfo }; use ring::rand::SystemRandom; use ring::signature::{EcdsaKeyPair, VerificationAlgorithm}; @@ -9,7 +7,7 @@ use time::{Duration, OffsetDateTime}; use x509_parser::parse_x509_certificate; use x509_parser::pem::Pem; -pub fn generate_root_ca() -> Result, Error> { +pub fn generate_root_ca() -> Result, rcgen::Error> { let mut params = CertificateParams::default(); let mut name = DistinguishedName::new(); @@ -31,9 +29,8 @@ pub fn generate_root_ca() -> Result, Error> { KeyUsagePurpose::DigitalSignature, ]; - let key_pair = KeyPair::generate().map_err(|e| napi::Error::from_reason(e.to_string()))?; - let certificate = CertificateParams::self_signed(params, &key_pair) - .map_err(|e| napi::Error::from_reason(e.to_string()))?; + let key_pair = KeyPair::generate()?; + let certificate = CertificateParams::self_signed(params, &key_pair)?; // Returns certificate, then private key Ok(vec![certificate.pem(), key_pair.serialize_pem()]) @@ -44,13 +41,11 @@ pub fn generate_client_certificate( _client_name: String, root_ca: String, root_ca_private: String, -) -> Result, Error> { +) -> Result, rcgen::Error> { let root_key_pair = - KeyPair::from_pem(&root_ca_private).map_err(|e| napi::Error::from_reason(e.to_string()))?; - let certificate_params = CertificateParams::from_ca_cert_pem(&root_ca) - .map_err(|e| napi::Error::from_reason(e.to_string()))?; - let root_ca = CertificateParams::self_signed(certificate_params, &root_key_pair) - .map_err(|e| napi::Error::from_reason(e.to_string()))?; + KeyPair::from_pem(&root_ca_private)?; + let certificate_params = CertificateParams::from_ca_cert_pem(&root_ca)?; + let root_ca = CertificateParams::self_signed(certificate_params, &root_key_pair)?; let mut params = CertificateParams::default(); @@ -64,10 +59,8 @@ pub fn generate_client_certificate( KeyUsagePurpose::DataEncipherment, ]; - let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P384_SHA384) - .map_err(|e| napi::Error::from_reason(e.to_string()))?; - let certificate = CertificateParams::signed_by(params, &key_pair, &root_ca, &root_key_pair) - .map_err(|e| napi::Error::from_reason(e.to_string()))?; + let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P384_SHA384)?; + let certificate = CertificateParams::signed_by(params, &key_pair, &root_ca, &root_key_pair)?; // Returns certificate, then private key Ok(vec![certificate.pem(), key_pair.serialize_pem()])