workflow_node/node_sys/module/
crypto.rs1use crate::node_sys::{
2 class::{
3 Buffer,
4 crypto::{
5 Cipher, Decipher, DiffieHellman, DiffieHellmanGroup, Ecdh, Hash, Hmac, KeyObject, Sign,
6 Verify,
7 },
8 },
9 interface::{
10 CryptoConstants, GenerateKeyPairOptions, GenerateKeyPairSyncReturn, ScryptOptions,
11 StreamTransformOptions, StreamWritableOptions,
12 },
13};
14use js_sys::Function;
15use wasm_bindgen::prelude::*;
16
17#[wasm_bindgen(module = "crypto")]
18extern "C" {
19 pub static constants: CryptoConstants;
24
25 #[wasm_bindgen(js_name = "createCipheriv")]
30 pub fn create_cipheriv(
31 algorithm: &str,
32 key: &JsValue,
33 iv: &JsValue,
34 options: Option<StreamTransformOptions>,
35 ) -> Cipher;
36
37 #[wasm_bindgen(js_name = "createDecipheriv")]
38 pub fn create_decipheriv(
39 algorithm: &str,
40 key: &JsValue,
41 iv: &JsValue,
42 options: Option<StreamTransformOptions>,
43 ) -> Decipher;
44
45 #[wasm_bindgen(js_name = "createDiffieHellman")]
46 pub fn create_diffie_hellman_with_prime(
47 prime: &JsValue,
48 prime_encoding: Option<&str>,
49 generator: &JsValue,
50 generator_encoding: Option<&str>,
51 ) -> DiffieHellman;
52
53 #[wasm_bindgen(js_name = "createDiffieHellman")]
54 pub fn create_diffie_hellman(prime_length: u32, generator: &JsValue) -> DiffieHellman;
55
56 #[wasm_bindgen(js_name = "createECDH")]
57 pub fn create_ecdh(curve_name: &str) -> Ecdh;
58
59 #[wasm_bindgen(js_name = "createHash")]
60 pub fn create_hash(algorithm: &str, options: Option<StreamTransformOptions>) -> Hash;
61
62 #[wasm_bindgen(js_name = "createHmac")]
63 pub fn create_hmac(
64 algorithm: &str,
65 key: &JsValue,
66 option: Option<StreamTransformOptions>,
67 ) -> Hmac;
68
69 #[wasm_bindgen(js_name = "createPrivateKey")]
70 pub fn create_private_key(key: &JsValue) -> KeyObject;
71
72 #[wasm_bindgen(js_name = "createPublicKey")]
73 pub fn create_public_key(key: &JsValue) -> KeyObject;
74
75 #[wasm_bindgen(js_name = "createSecretKey")]
76 pub fn create_secret_key(key: &Buffer) -> KeyObject;
77
78 #[wasm_bindgen(js_name = "createSign")]
79 pub fn create_sign(algorithm: &str, options: Option<StreamWritableOptions>) -> Sign;
80
81 #[wasm_bindgen(js_name = "createVerify")]
82 pub fn create_verify(algorithm: &str, options: Option<StreamWritableOptions>) -> Verify;
83
84 #[wasm_bindgen(js_name = "generateKeyPair")]
85 pub fn generate_key_pair(kind: &str, options: &GenerateKeyPairOptions, callback: &Function);
86
87 #[wasm_bindgen(js_name = "generateKeyPairSync")]
88 pub fn generate_key_pair_sync(
89 kind: &str,
90 options: &GenerateKeyPairOptions,
91 ) -> GenerateKeyPairSyncReturn;
92
93 #[wasm_bindgen(js_name = "getCiphers")]
94 pub fn get_ciphers() -> Box<[JsValue]>;
95
96 #[wasm_bindgen(js_name = "getCurves")]
97 pub fn get_curves() -> Box<[JsValue]>;
98
99 #[wasm_bindgen(js_name = "getDiffieHellman")]
100 pub fn get_diffie_hellman(group_name: &str) -> DiffieHellmanGroup;
101
102 #[wasm_bindgen(js_name = "getFips")]
103 pub fn get_fips(group_name: &str) -> DiffieHellmanGroup;
104
105 #[wasm_bindgen(js_name = "getHashes")]
106 pub fn get_hashes() -> Box<[JsValue]>;
107
108 #[wasm_bindgen(js_name = "pbkdf2")]
109 pub fn pbkdf2(
110 password: &JsValue,
111 salt: &JsValue,
112 iterations: u32,
113 keylen: u32,
114 digest: &str,
115 callback: &Function,
116 );
117
118 #[wasm_bindgen(js_name = "pbkdf2Sync")]
119 pub fn pbkdf2_sync(
120 password: &JsValue,
121 salt: &JsValue,
122 iterations: u32,
123 keylen: u32,
124 digest: &str,
125 ) -> Buffer;
126
127 #[wasm_bindgen(js_name = "privateDecrypt")]
128 pub fn private_decrypt(private_key: &JsValue, buffer: &JsValue) -> Buffer;
129
130 #[wasm_bindgen(js_name = "privateEncrypt")]
131 pub fn private_encrypt(private_key: &JsValue, buffer: &JsValue) -> Buffer;
132
133 #[wasm_bindgen(js_name = "publicDecrypt")]
134 pub fn public_decrypt(key: &JsValue, buffer: &JsValue) -> Buffer;
135
136 #[wasm_bindgen(js_name = "publicEncrypt")]
137 pub fn public_encrypt(key: &JsValue, buffer: &JsValue) -> Buffer;
138
139 #[wasm_bindgen(js_name = "randomBytes")]
140 pub fn random_bytes(size: f64, callback: Option<&Function>) -> Buffer;
141
142 #[wasm_bindgen(js_name = "randomFillSync")]
143 pub fn random_fill_sync(buffer: &JsValue, offset: Option<f64>, size: Option<f64>) -> JsValue;
144
145 #[wasm_bindgen(js_name = "randomFill")]
146 pub fn random_fill(
147 buffer: &JsValue,
148 offset: Option<f64>,
149 size: Option<f64>,
150 callback: &Function,
151 );
152
153 pub fn scrypt(
154 password: &JsValue,
155 salt: &JsValue,
156 keylen: f64,
157 options: Option<ScryptOptions>,
158 callback: &Function,
159 );
160
161 #[wasm_bindgen(js_name = "scryptSync")]
162 pub fn scrypt_sync(
163 password: &JsValue,
164 salt: &JsValue,
165 keylen: f64,
166 options: Option<ScryptOptions>,
167 ) -> Buffer;
168
169 #[wasm_bindgen(js_name = "setEngine")]
170 pub fn set_engine(engine: &str, flags: Option<i32>);
171
172 #[wasm_bindgen(js_name = "setFips")]
173 pub fn set_fips(enable: bool);
174
175 pub fn sign(algorithm: &JsValue, data: &JsValue, key: &JsValue) -> Buffer;
176
177 #[wasm_bindgen(js_name = "timingSafeEqual")]
178 pub fn timing_safe_equal(a: &JsValue, b: &JsValue) -> bool;
179
180 pub fn verify(algorithm: &JsValue, data: &JsValue, key: &JsValue, signature: &JsValue) -> bool;
181}