diff options
author | kaiwu <kaiwu2004@gmail.com> | 2024-08-02 22:17:26 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2024-08-02 22:17:26 +0800 |
commit | ecc079b5eddf5e4af124f88e3ec64403995fe1ea (patch) | |
tree | aa96ebc4b945ddb1769899c400378d1f473235d9 | |
parent | f86d146595fa61bc36052e7303f3127a4acd295e (diff) | |
download | ngs-ecc079b5eddf5e4af124f88e3ec64403995fe1ea.tar.gz ngs-ecc079b5eddf5e4af124f88e3ec64403995fe1ea.zip |
crypto bindings
-rw-r--r-- | src/njs/crypto.gleam | 38 |
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) |