cojson-core-wasm 0.17.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.txt ADDED
@@ -0,0 +1,19 @@
1
+ Copyright 2025, Garden Computing, Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./public/cojson_core_wasm.js";
2
+
3
+ export async function initialize(): Promise<void>;
package/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export * from "./public/cojson_core_wasm.js";
2
+
3
+ import __wbg_init from "./public/cojson_core_wasm.js";
4
+ import { data } from "./public/cojson_core_wasm.wasm.js";
5
+
6
+ export async function initialize() {
7
+ return await __wbg_init({ module_or_path: data });
8
+ }
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "cojson-core-wasm",
3
+ "type": "module",
4
+ "version": "0.17.10",
5
+ "files": [
6
+ "public/cojson_core_wasm.js",
7
+ "public/cojson_core_wasm.d.ts",
8
+ "public/cojson_core_wasm.wasm.js",
9
+ "public/cojson_core_wasm.wasm.d.ts",
10
+ "index.js",
11
+ "index.d.ts"
12
+ ],
13
+ "main": "index.js",
14
+ "types": "index.d.ts",
15
+ "devDependencies": {
16
+ "wasm-pack": "^0.13.1"
17
+ },
18
+ "scripts": {
19
+ "build:wasm": "wasm-pack build --release --target web && node build.js",
20
+ "build:dev": "wasm-pack build --dev --target web && node build.js"
21
+ }
22
+ }
@@ -0,0 +1,291 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * WASM-exposed function for XSalsa20 encryption without authentication.
5
+ * - `key`: 32-byte key for encryption
6
+ * - `nonce_material`: Raw bytes used to generate a 24-byte nonce via BLAKE3
7
+ * - `plaintext`: Raw bytes to encrypt
8
+ * Returns the encrypted bytes or throws a JsError if encryption fails.
9
+ * Note: This function does not provide authentication. Use encrypt_xsalsa20_poly1305 for authenticated encryption.
10
+ */
11
+ export function encrypt_xsalsa20(key: Uint8Array, nonce_material: Uint8Array, plaintext: Uint8Array): Uint8Array;
12
+ /**
13
+ * WASM-exposed function for XSalsa20 decryption without authentication.
14
+ * - `key`: 32-byte key for decryption (must match encryption key)
15
+ * - `nonce_material`: Raw bytes used to generate a 24-byte nonce (must match encryption)
16
+ * - `ciphertext`: Encrypted bytes to decrypt
17
+ * Returns the decrypted bytes or throws a JsError if decryption fails.
18
+ * Note: This function does not provide authentication. Use decrypt_xsalsa20_poly1305 for authenticated decryption.
19
+ */
20
+ export function decrypt_xsalsa20(key: Uint8Array, nonce_material: Uint8Array, ciphertext: Uint8Array): Uint8Array;
21
+ /**
22
+ * Generate a new Ed25519 signing key using secure random number generation.
23
+ * Returns 32 bytes of raw key material suitable for use with other Ed25519 functions.
24
+ */
25
+ export function new_ed25519_signing_key(): Uint8Array;
26
+ /**
27
+ * WASM-exposed function to derive an Ed25519 verifying key from a signing key.
28
+ * - `signing_key`: 32 bytes of signing key material
29
+ * Returns 32 bytes of verifying key material or throws JsError if key is invalid.
30
+ */
31
+ export function ed25519_verifying_key(signing_key: Uint8Array): Uint8Array;
32
+ /**
33
+ * WASM-exposed function to sign a message using Ed25519.
34
+ * - `signing_key`: 32 bytes of signing key material
35
+ * - `message`: Raw bytes to sign
36
+ * Returns 64 bytes of signature material or throws JsError if signing fails.
37
+ */
38
+ export function ed25519_sign(signing_key: Uint8Array, message: Uint8Array): Uint8Array;
39
+ /**
40
+ * WASM-exposed function to verify an Ed25519 signature.
41
+ * - `verifying_key`: 32 bytes of verifying key material
42
+ * - `message`: Raw bytes that were signed
43
+ * - `signature`: 64 bytes of signature material
44
+ * Returns true if signature is valid, false otherwise, or throws JsError if verification fails.
45
+ */
46
+ export function ed25519_verify(verifying_key: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean;
47
+ /**
48
+ * WASM-exposed function to validate and copy Ed25519 signing key bytes.
49
+ * - `bytes`: 32 bytes of signing key material to validate
50
+ * Returns the same 32 bytes if valid or throws JsError if invalid.
51
+ */
52
+ export function ed25519_signing_key_from_bytes(bytes: Uint8Array): Uint8Array;
53
+ /**
54
+ * WASM-exposed function to derive the public key from an Ed25519 signing key.
55
+ * - `signing_key`: 32 bytes of signing key material
56
+ * Returns 32 bytes of public key material or throws JsError if key is invalid.
57
+ */
58
+ export function ed25519_signing_key_to_public(signing_key: Uint8Array): Uint8Array;
59
+ /**
60
+ * WASM-exposed function to sign a message with an Ed25519 signing key.
61
+ * - `signing_key`: 32 bytes of signing key material
62
+ * - `message`: Raw bytes to sign
63
+ * Returns 64 bytes of signature material or throws JsError if signing fails.
64
+ */
65
+ export function ed25519_signing_key_sign(signing_key: Uint8Array, message: Uint8Array): Uint8Array;
66
+ /**
67
+ * WASM-exposed function to validate and copy Ed25519 verifying key bytes.
68
+ * - `bytes`: 32 bytes of verifying key material to validate
69
+ * Returns the same 32 bytes if valid or throws JsError if invalid.
70
+ */
71
+ export function ed25519_verifying_key_from_bytes(bytes: Uint8Array): Uint8Array;
72
+ /**
73
+ * WASM-exposed function to validate and copy Ed25519 signature bytes.
74
+ * - `bytes`: 64 bytes of signature material to validate
75
+ * Returns the same 64 bytes if valid or throws JsError if invalid.
76
+ */
77
+ export function ed25519_signature_from_bytes(bytes: Uint8Array): Uint8Array;
78
+ /**
79
+ * WASM-exposed function to sign a message using Ed25519.
80
+ * - `message`: Raw bytes to sign
81
+ * - `secret`: Raw Ed25519 signing key bytes
82
+ * Returns base58-encoded signature with "signature_z" prefix or throws JsError if signing fails.
83
+ */
84
+ export function sign(message: Uint8Array, secret: Uint8Array): string;
85
+ /**
86
+ * WASM-exposed function to verify an Ed25519 signature.
87
+ * - `signature`: Raw signature bytes
88
+ * - `message`: Raw bytes that were signed
89
+ * - `id`: Raw Ed25519 verifying key bytes
90
+ * Returns true if signature is valid, false otherwise, or throws JsError if verification fails.
91
+ */
92
+ export function verify(signature: Uint8Array, message: Uint8Array, id: Uint8Array): boolean;
93
+ /**
94
+ * WASM-exposed function to derive a signer ID from a signing key.
95
+ * - `secret`: Raw Ed25519 signing key bytes
96
+ * Returns base58-encoded verifying key with "signer_z" prefix or throws JsError if derivation fails.
97
+ */
98
+ export function get_signer_id(secret: Uint8Array): string;
99
+ /**
100
+ * Generate a 24-byte nonce from input material using BLAKE3.
101
+ * - `nonce_material`: Raw bytes to derive the nonce from
102
+ * Returns 24 bytes suitable for use as a nonce in cryptographic operations.
103
+ * This function is deterministic - the same input will produce the same nonce.
104
+ */
105
+ export function generate_nonce(nonce_material: Uint8Array): Uint8Array;
106
+ /**
107
+ * Hash data once using BLAKE3.
108
+ * - `data`: Raw bytes to hash
109
+ * Returns 32 bytes of hash output.
110
+ * This is the simplest way to compute a BLAKE3 hash of a single piece of data.
111
+ */
112
+ export function blake3_hash_once(data: Uint8Array): Uint8Array;
113
+ /**
114
+ * Hash data once using BLAKE3 with a context prefix.
115
+ * - `data`: Raw bytes to hash
116
+ * - `context`: Context bytes to prefix to the data
117
+ * Returns 32 bytes of hash output.
118
+ * This is useful for domain separation - the same data hashed with different contexts will produce different outputs.
119
+ */
120
+ export function blake3_hash_once_with_context(data: Uint8Array, context: Uint8Array): Uint8Array;
121
+ /**
122
+ * Get an empty BLAKE3 state for incremental hashing.
123
+ * Returns a new Blake3Hasher instance for incremental hashing.
124
+ */
125
+ export function blake3_empty_state(): Blake3Hasher;
126
+ /**
127
+ * Update a BLAKE3 state with new data for incremental hashing.
128
+ * - `state`: Current Blake3Hasher instance
129
+ * - `data`: New data to incorporate into the hash
130
+ * Returns the updated Blake3Hasher.
131
+ */
132
+ export function blake3_update_state(state: Blake3Hasher, data: Uint8Array): void;
133
+ /**
134
+ * Get the final hash from a BLAKE3 state.
135
+ * - `state`: The Blake3Hasher to finalize
136
+ * Returns 32 bytes of hash output.
137
+ * This finalizes an incremental hashing operation.
138
+ */
139
+ export function blake3_digest_for_state(state: Blake3Hasher): Uint8Array;
140
+ /**
141
+ * Generate a new X25519 private key using secure random number generation.
142
+ * Returns 32 bytes of raw key material suitable for use with other X25519 functions.
143
+ * This key can be reused for multiple Diffie-Hellman exchanges.
144
+ */
145
+ export function new_x25519_private_key(): Uint8Array;
146
+ /**
147
+ * WASM-exposed function to derive an X25519 public key from a private key.
148
+ * - `private_key`: 32 bytes of private key material
149
+ * Returns 32 bytes of public key material or throws JsError if key is invalid.
150
+ */
151
+ export function x25519_public_key(private_key: Uint8Array): Uint8Array;
152
+ /**
153
+ * WASM-exposed function to perform X25519 Diffie-Hellman key exchange.
154
+ * - `private_key`: 32 bytes of private key material
155
+ * - `public_key`: 32 bytes of public key material
156
+ * Returns 32 bytes of shared secret material or throws JsError if key exchange fails.
157
+ */
158
+ export function x25519_diffie_hellman(private_key: Uint8Array, public_key: Uint8Array): Uint8Array;
159
+ /**
160
+ * WASM-exposed function to derive a sealer ID from a sealer secret.
161
+ * - `secret`: Raw bytes of the sealer secret
162
+ * Returns a base58-encoded sealer ID with "sealer_z" prefix or throws JsError if derivation fails.
163
+ */
164
+ export function get_sealer_id(secret: Uint8Array): string;
165
+ /**
166
+ * WASM-exposed function for sealing a message using X25519 + XSalsa20-Poly1305.
167
+ * Provides authenticated encryption with perfect forward secrecy.
168
+ * - `message`: Raw bytes to seal
169
+ * - `sender_secret`: Base58-encoded sender's private key with "sealerSecret_z" prefix
170
+ * - `recipient_id`: Base58-encoded recipient's public key with "sealer_z" prefix
171
+ * - `nonce_material`: Raw bytes used to generate the nonce
172
+ * Returns sealed bytes or throws JsError if sealing fails.
173
+ */
174
+ export function seal(message: Uint8Array, sender_secret: string, recipient_id: string, nonce_material: Uint8Array): Uint8Array;
175
+ /**
176
+ * WASM-exposed function for unsealing a message using X25519 + XSalsa20-Poly1305.
177
+ * Provides authenticated decryption with perfect forward secrecy.
178
+ * - `sealed_message`: The sealed bytes to decrypt
179
+ * - `recipient_secret`: Base58-encoded recipient's private key with "sealerSecret_z" prefix
180
+ * - `sender_id`: Base58-encoded sender's public key with "sealer_z" prefix
181
+ * - `nonce_material`: Raw bytes used to generate the nonce (must match sealing)
182
+ * Returns unsealed bytes or throws JsError if unsealing fails.
183
+ */
184
+ export function unseal(sealed_message: Uint8Array, recipient_secret: string, sender_id: string, nonce_material: Uint8Array): Uint8Array;
185
+ /**
186
+ * WASM-exposed function to encrypt bytes with a key secret and nonce material.
187
+ * - `value`: The raw bytes to encrypt
188
+ * - `key_secret`: A base58-encoded key secret with "keySecret_z" prefix
189
+ * - `nonce_material`: Raw bytes used to generate the nonce
190
+ * Returns the encrypted bytes or throws a JsError if encryption fails.
191
+ */
192
+ export function encrypt(value: Uint8Array, key_secret: string, nonce_material: Uint8Array): Uint8Array;
193
+ /**
194
+ * WASM-exposed function to decrypt bytes with a key secret and nonce material.
195
+ * - `ciphertext`: The encrypted bytes to decrypt
196
+ * - `key_secret`: A base58-encoded key secret with "keySecret_z" prefix
197
+ * - `nonce_material`: Raw bytes used to generate the nonce (must match encryption)
198
+ * Returns the decrypted bytes or throws a JsError if decryption fails.
199
+ */
200
+ export function decrypt(ciphertext: Uint8Array, key_secret: string, nonce_material: Uint8Array): Uint8Array;
201
+ export class Blake3Hasher {
202
+ free(): void;
203
+ constructor();
204
+ update(data: Uint8Array): void;
205
+ finalize(): Uint8Array;
206
+ clone(): Blake3Hasher;
207
+ }
208
+ export class SessionLog {
209
+ free(): void;
210
+ constructor(co_id: string, session_id: string, signer_id: string);
211
+ clone(): SessionLog;
212
+ tryAdd(transactions_json: string[], new_signature_str: string, skip_verify: boolean): void;
213
+ addNewPrivateTransaction(changes_json: string, signer_secret: string, encryption_key: string, key_id: string, made_at: number): string;
214
+ addNewTrustingTransaction(changes_json: string, signer_secret: string, made_at: number): string;
215
+ decryptNextTransactionChangesJson(tx_index: number, encryption_key: string): string;
216
+ }
217
+
218
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
219
+
220
+ export interface InitOutput {
221
+ readonly memory: WebAssembly.Memory;
222
+ readonly decrypt_xsalsa20: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
223
+ readonly encrypt_xsalsa20: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
224
+ readonly __wbg_sessionlog_free: (a: number, b: number) => void;
225
+ readonly sessionlog_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
226
+ readonly sessionlog_clone: (a: number) => number;
227
+ readonly sessionlog_tryAdd: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
228
+ readonly sessionlog_addNewPrivateTransaction: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number, number, number];
229
+ readonly sessionlog_addNewTrustingTransaction: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
230
+ readonly sessionlog_decryptNextTransactionChangesJson: (a: number, b: number, c: number, d: number) => [number, number, number, number];
231
+ readonly new_ed25519_signing_key: () => [number, number];
232
+ readonly ed25519_sign: (a: number, b: number, c: number, d: number) => [number, number, number, number];
233
+ readonly ed25519_verify: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
234
+ readonly ed25519_signing_key_from_bytes: (a: number, b: number) => [number, number, number, number];
235
+ readonly ed25519_signing_key_to_public: (a: number, b: number) => [number, number, number, number];
236
+ readonly ed25519_verifying_key_from_bytes: (a: number, b: number) => [number, number, number, number];
237
+ readonly ed25519_signature_from_bytes: (a: number, b: number) => [number, number, number, number];
238
+ readonly ed25519_verifying_key: (a: number, b: number) => [number, number, number, number];
239
+ readonly ed25519_signing_key_sign: (a: number, b: number, c: number, d: number) => [number, number, number, number];
240
+ readonly sign: (a: number, b: number, c: number, d: number) => [number, number, number, number];
241
+ readonly verify: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
242
+ readonly get_signer_id: (a: number, b: number) => [number, number, number, number];
243
+ readonly generate_nonce: (a: number, b: number) => [number, number];
244
+ readonly blake3_hash_once: (a: number, b: number) => [number, number];
245
+ readonly blake3_hash_once_with_context: (a: number, b: number, c: number, d: number) => [number, number];
246
+ readonly __wbg_blake3hasher_free: (a: number, b: number) => void;
247
+ readonly blake3hasher_finalize: (a: number) => [number, number];
248
+ readonly blake3hasher_clone: (a: number) => number;
249
+ readonly blake3_empty_state: () => number;
250
+ readonly blake3_update_state: (a: number, b: number, c: number) => void;
251
+ readonly blake3_digest_for_state: (a: number) => [number, number];
252
+ readonly blake3hasher_update: (a: number, b: number, c: number) => void;
253
+ readonly blake3hasher_new: () => number;
254
+ readonly new_x25519_private_key: () => [number, number];
255
+ readonly x25519_public_key: (a: number, b: number) => [number, number, number, number];
256
+ readonly x25519_diffie_hellman: (a: number, b: number, c: number, d: number) => [number, number, number, number];
257
+ readonly get_sealer_id: (a: number, b: number) => [number, number, number, number];
258
+ readonly seal: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
259
+ readonly unseal: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
260
+ readonly encrypt: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
261
+ readonly decrypt: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
262
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
263
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
264
+ readonly __wbindgen_exn_store: (a: number) => void;
265
+ readonly __externref_table_alloc: () => number;
266
+ readonly __wbindgen_export_4: WebAssembly.Table;
267
+ readonly __externref_table_dealloc: (a: number) => void;
268
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
269
+ readonly __wbindgen_start: () => void;
270
+ }
271
+
272
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
273
+ /**
274
+ * Instantiates the given `module`, which can either be bytes or
275
+ * a precompiled `WebAssembly.Module`.
276
+ *
277
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
278
+ *
279
+ * @returns {InitOutput}
280
+ */
281
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
282
+
283
+ /**
284
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
285
+ * for everything else, calls `WebAssembly.instantiate` directly.
286
+ *
287
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
288
+ *
289
+ * @returns {Promise<InitOutput>}
290
+ */
291
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;