aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2024-08-02 22:17:26 +0800
committerkaiwu <kaiwu2004@gmail.com>2024-08-02 22:17:26 +0800
commitecc079b5eddf5e4af124f88e3ec64403995fe1ea (patch)
treeaa96ebc4b945ddb1769899c400378d1f473235d9
parentf86d146595fa61bc36052e7303f3127a4acd295e (diff)
downloadngs-ecc079b5eddf5e4af124f88e3ec64403995fe1ea.tar.gz
ngs-ecc079b5eddf5e4af124f88e3ec64403995fe1ea.zip
crypto bindings
-rw-r--r--src/njs/crypto.gleam38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/njs/crypto.gleam b/src/njs/crypto.gleam
index 7431429..4e3ceee 100644
--- a/src/njs/crypto.gleam
+++ b/src/njs/crypto.gleam
@@ -1,3 +1,4 @@
+import gleam/javascript/array.{type Array}
import gleam/javascript/promise.{type Promise}
import njs/buffer.{type ArrayBuffer, type TypedArray}
@@ -24,6 +25,9 @@ pub type EncryptAlgorithm {
)
}
+pub type DecryptAlgorithm =
+ EncryptAlgorithm
+
@external(javascript, "./crypto_ffi.mjs", "get_random_values")
pub fn get_random_values(typedarray a: TypedArray) -> TypedArray
@@ -31,5 +35,39 @@ pub fn get_random_values(typedarray a: TypedArray) -> TypedArray
pub fn encrypt(
algorithm a: EncryptAlgorithm,
key k: CryptoKey,
+ plaintext d: ArrayBuffer,
+) -> Promise(ArrayBuffer)
+
+@external(javascript, "./crypto_ffi.mjs", "decrypt")
+pub fn decrypt(
+ algorithm a: DecryptAlgorithm,
+ key k: CryptoKey,
+ ciphertext d: ArrayBuffer,
+) -> Promise(ArrayBuffer)
+
+@external(javascript, "./crypto_ffi.mjs", "digest")
+pub fn digest(algorithm a: String, data d: ArrayBuffer) -> Promise(ArrayBuffer)
+
+@external(javascript, "./crypto_ffi.mjs", "sign")
+pub fn sign(
+ algorithm a: a,
+ key k: CryptoKey,
data d: ArrayBuffer,
) -> Promise(ArrayBuffer)
+
+@external(javascript, "./crypto_ffi.mjs", "verify")
+pub fn verify(
+ algorithm a: a,
+ key k: CryptoKey,
+ signature s: ArrayBuffer,
+ data d: ArrayBuffer,
+) -> Promise(Bool)
+
+@external(javascript, "./crypto_ffi.mjs", "import")
+pub fn import_key(
+ format f: String,
+ key k: ArrayBuffer,
+ algorithm a: KeyAlgorithm,
+ extractable e: Bool,
+ usages ku: Array(String),
+) -> Promise(CryptoKey)