node-tkms 0.13.1 → 0.13.2

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/kms_lib.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ export function public_sig_key_to_u8vec(pk: PublicSigKey): Uint8Array;
3
4
  /**
4
5
  * Instantiate a new client.
5
6
  *
@@ -13,11 +14,9 @@
13
14
  * The "default" parameter choice is selected if no matching string is found.
14
15
  */
15
16
  export function new_client(server_addrs: ServerIdAddr[], client_address_hex: string, fhe_parameter: string): Client;
16
- /**
17
- * Create a new [ServerIdAddr] structure that holds an ID and an address
18
- * which must be a valid EIP-55 address, notably prefixed with "0x".
19
- */
20
- export function new_server_id_addr(id: number, addr: string): ServerIdAddr;
17
+ export function ml_kem_pke_get_pk(sk: PrivateEncKeyMlKem512): PublicEncKeyMlKem512;
18
+ export function ml_kem_pke_pk_to_u8vec(pk: PublicEncKeyMlKem512): Uint8Array;
19
+ export function u8vec_to_ml_kem_pke_pk(v: Uint8Array): PublicEncKeyMlKem512;
21
20
  /**
22
21
  * Process the user_decryption response from Rust objects.
23
22
  * Consider using [process_user_decryption_resp_from_js]
@@ -42,9 +41,8 @@ export function new_server_id_addr(id: number, addr: string): ServerIdAddr;
42
41
  * It is insecure if `verify = false`!
43
42
  */
44
43
  export function process_user_decryption_resp(client: Client, request: ParsedUserDecryptionRequest | null | undefined, eip712_domain: Eip712DomainMsg | null | undefined, agg_resp: UserDecryptionResponse[], enc_pk: PublicEncKeyMlKem512, enc_sk: PrivateEncKeyMlKem512, verify: boolean): TypedPlaintext[];
45
- export function ml_kem_pke_keygen(): PrivateEncKeyMlKem512;
46
44
  export function ml_kem_pke_sk_len(): number;
47
- export function ml_kem_pke_pk_to_u8vec(pk: PublicEncKeyMlKem512): Uint8Array;
45
+ export function u8vec_to_private_sig_key(v: Uint8Array): PrivateSigKey;
48
46
  /**
49
47
  * Process the user_decryption response from JavaScript objects.
50
48
  * The returned result is a byte array representing a plaintext of any length,
@@ -107,29 +105,31 @@ export function ml_kem_pke_pk_to_u8vec(pk: PublicEncKeyMlKem512): Uint8Array;
107
105
  * It is insecure if `verify = false`!
108
106
  */
109
107
  export function process_user_decryption_resp_from_js(client: Client, request: any, eip712_domain: any, agg_resp: any, enc_pk: PublicEncKeyMlKem512, enc_sk: PrivateEncKeyMlKem512, verify: boolean): TypedPlaintext[];
108
+ export function get_client_address(client: Client): string;
109
+ export function get_client_secret_key(client: Client): PrivateSigKey | undefined;
110
+ export function get_server_addrs(client: Client): ServerIdAddr[];
111
+ export function private_sig_key_to_u8vec(sk: PrivateSigKey): Uint8Array;
110
112
  /**
111
113
  * This function is *not* used by relayer-sdk because the decryption
112
114
  * is handled by [process_user_decryption_resp].
113
115
  * It's just here for completeness and tests.
114
116
  */
115
117
  export function ml_kem_pke_decrypt(ct: Uint8Array, my_sk: PrivateEncKeyMlKem512): Uint8Array;
116
- export function get_client_secret_key(client: Client): PrivateSigKey | undefined;
118
+ /**
119
+ * Create a new [ServerIdAddr] structure that holds an ID and an address
120
+ * which must be a valid EIP-55 address, notably prefixed with "0x".
121
+ */
122
+ export function new_server_id_addr(id: number, addr: string): ServerIdAddr;
123
+ export function u8vec_to_ml_kem_pke_sk(v: Uint8Array): PrivateEncKeyMlKem512;
124
+ export function ml_kem_pke_keygen(): PrivateEncKeyMlKem512;
125
+ export function ml_kem_pke_sk_to_u8vec(sk: PrivateEncKeyMlKem512): Uint8Array;
117
126
  /**
118
127
  * This function is *not* used by relayer-sdk because the encryption
119
128
  * happens on the KMS side. It's just here for completeness and tests.
120
129
  */
121
130
  export function ml_kem_pke_encrypt(msg: Uint8Array, their_pk: PublicEncKeyMlKem512): Uint8Array;
122
- export function u8vec_to_private_sig_key(v: Uint8Array): PrivateSigKey;
123
- export function public_sig_key_to_u8vec(pk: PublicSigKey): Uint8Array;
124
- export function u8vec_to_ml_kem_pke_sk(v: Uint8Array): PrivateEncKeyMlKem512;
125
- export function ml_kem_pke_get_pk(sk: PrivateEncKeyMlKem512): PublicEncKeyMlKem512;
126
- export function ml_kem_pke_sk_to_u8vec(sk: PrivateEncKeyMlKem512): Uint8Array;
127
131
  export function ml_kem_pke_pk_len(): number;
128
- export function get_client_address(client: Client): string;
129
132
  export function u8vec_to_public_sig_key(v: Uint8Array): PublicSigKey;
130
- export function u8vec_to_ml_kem_pke_pk(v: Uint8Array): PublicEncKeyMlKem512;
131
- export function get_server_addrs(client: Client): ServerIdAddr[];
132
- export function private_sig_key_to_u8vec(sk: PrivateSigKey): Uint8Array;
133
133
  export class CiphertextHandle {
134
134
  private constructor();
135
135
  free(): void;
package/kms_lib.js CHANGED
@@ -171,6 +171,28 @@ function debugString(val) {
171
171
  return className;
172
172
  }
173
173
 
174
+ function _assertClass(instance, klass) {
175
+ if (!(instance instanceof klass)) {
176
+ throw new Error(`expected instance of ${klass.name}`);
177
+ }
178
+ }
179
+
180
+ function getArrayU8FromWasm0(ptr, len) {
181
+ ptr = ptr >>> 0;
182
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
183
+ }
184
+ /**
185
+ * @param {PublicSigKey} pk
186
+ * @returns {Uint8Array}
187
+ */
188
+ module.exports.public_sig_key_to_u8vec = function(pk) {
189
+ _assertClass(pk, PublicSigKey);
190
+ const ret = wasm.public_sig_key_to_u8vec(pk.__wbg_ptr);
191
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
192
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
193
+ return v1;
194
+ };
195
+
174
196
  function passArrayJsValueToWasm0(array, malloc) {
175
197
  const ptr = malloc(array.length * 4, 4) >>> 0;
176
198
  for (let i = 0; i < array.length; i++) {
@@ -217,28 +239,50 @@ module.exports.new_client = function(server_addrs, client_address_hex, fhe_param
217
239
  };
218
240
 
219
241
  /**
220
- * Create a new [ServerIdAddr] structure that holds an ID and an address
221
- * which must be a valid EIP-55 address, notably prefixed with "0x".
222
- * @param {number} id
223
- * @param {string} addr
224
- * @returns {ServerIdAddr}
242
+ * @param {PrivateEncKeyMlKem512} sk
243
+ * @returns {PublicEncKeyMlKem512}
225
244
  */
226
- module.exports.new_server_id_addr = function(id, addr) {
227
- const ptr0 = passStringToWasm0(addr, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
245
+ module.exports.ml_kem_pke_get_pk = function(sk) {
246
+ _assertClass(sk, PrivateEncKeyMlKem512);
247
+ const ret = wasm.ml_kem_pke_get_pk(sk.__wbg_ptr);
248
+ return PublicEncKeyMlKem512.__wrap(ret);
249
+ };
250
+
251
+ /**
252
+ * @param {PublicEncKeyMlKem512} pk
253
+ * @returns {Uint8Array}
254
+ */
255
+ module.exports.ml_kem_pke_pk_to_u8vec = function(pk) {
256
+ _assertClass(pk, PublicEncKeyMlKem512);
257
+ const ret = wasm.ml_kem_pke_pk_to_u8vec(pk.__wbg_ptr);
258
+ if (ret[3]) {
259
+ throw takeFromExternrefTable0(ret[2]);
260
+ }
261
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
262
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
263
+ return v1;
264
+ };
265
+
266
+ function passArray8ToWasm0(arg, malloc) {
267
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
268
+ getUint8ArrayMemory0().set(arg, ptr / 1);
269
+ WASM_VECTOR_LEN = arg.length;
270
+ return ptr;
271
+ }
272
+ /**
273
+ * @param {Uint8Array} v
274
+ * @returns {PublicEncKeyMlKem512}
275
+ */
276
+ module.exports.u8vec_to_ml_kem_pke_pk = function(v) {
277
+ const ptr0 = passArray8ToWasm0(v, wasm.__wbindgen_malloc);
228
278
  const len0 = WASM_VECTOR_LEN;
229
- const ret = wasm.new_server_id_addr(id, ptr0, len0);
279
+ const ret = wasm.u8vec_to_ml_kem_pke_pk(ptr0, len0);
230
280
  if (ret[2]) {
231
281
  throw takeFromExternrefTable0(ret[1]);
232
282
  }
233
- return ServerIdAddr.__wrap(ret[0]);
283
+ return PublicEncKeyMlKem512.__wrap(ret[0]);
234
284
  };
235
285
 
236
- function _assertClass(instance, klass) {
237
- if (!(instance instanceof klass)) {
238
- throw new Error(`expected instance of ${klass.name}`);
239
- }
240
- }
241
-
242
286
  function getArrayJsValueFromWasm0(ptr, len) {
243
287
  ptr = ptr >>> 0;
244
288
  const mem = getDataViewMemory0();
@@ -305,14 +349,6 @@ module.exports.process_user_decryption_resp = function(client, request, eip712_d
305
349
  return v4;
306
350
  };
307
351
 
308
- /**
309
- * @returns {PrivateEncKeyMlKem512}
310
- */
311
- module.exports.ml_kem_pke_keygen = function() {
312
- const ret = wasm.ml_kem_pke_keygen();
313
- return PrivateEncKeyMlKem512.__wrap(ret);
314
- };
315
-
316
352
  /**
317
353
  * @returns {number}
318
354
  */
@@ -321,23 +357,18 @@ module.exports.ml_kem_pke_sk_len = function() {
321
357
  return ret >>> 0;
322
358
  };
323
359
 
324
- function getArrayU8FromWasm0(ptr, len) {
325
- ptr = ptr >>> 0;
326
- return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
327
- }
328
360
  /**
329
- * @param {PublicEncKeyMlKem512} pk
330
- * @returns {Uint8Array}
361
+ * @param {Uint8Array} v
362
+ * @returns {PrivateSigKey}
331
363
  */
332
- module.exports.ml_kem_pke_pk_to_u8vec = function(pk) {
333
- _assertClass(pk, PublicEncKeyMlKem512);
334
- const ret = wasm.ml_kem_pke_pk_to_u8vec(pk.__wbg_ptr);
335
- if (ret[3]) {
336
- throw takeFromExternrefTable0(ret[2]);
364
+ module.exports.u8vec_to_private_sig_key = function(v) {
365
+ const ptr0 = passArray8ToWasm0(v, wasm.__wbindgen_malloc);
366
+ const len0 = WASM_VECTOR_LEN;
367
+ const ret = wasm.u8vec_to_private_sig_key(ptr0, len0);
368
+ if (ret[2]) {
369
+ throw takeFromExternrefTable0(ret[1]);
337
370
  }
338
- var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
339
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
340
- return v1;
371
+ return PrivateSigKey.__wrap(ret[0]);
341
372
  };
342
373
 
343
374
  /**
@@ -422,28 +453,22 @@ module.exports.process_user_decryption_resp_from_js = function(client, request,
422
453
  return v1;
423
454
  };
424
455
 
425
- function passArray8ToWasm0(arg, malloc) {
426
- const ptr = malloc(arg.length * 1, 1) >>> 0;
427
- getUint8ArrayMemory0().set(arg, ptr / 1);
428
- WASM_VECTOR_LEN = arg.length;
429
- return ptr;
430
- }
431
456
  /**
432
- * This function is *not* used by relayer-sdk because the decryption
433
- * is handled by [process_user_decryption_resp].
434
- * It's just here for completeness and tests.
435
- * @param {Uint8Array} ct
436
- * @param {PrivateEncKeyMlKem512} my_sk
437
- * @returns {Uint8Array}
457
+ * @param {Client} client
458
+ * @returns {string}
438
459
  */
439
- module.exports.ml_kem_pke_decrypt = function(ct, my_sk) {
440
- const ptr0 = passArray8ToWasm0(ct, wasm.__wbindgen_malloc);
441
- const len0 = WASM_VECTOR_LEN;
442
- _assertClass(my_sk, PrivateEncKeyMlKem512);
443
- const ret = wasm.ml_kem_pke_decrypt(ptr0, len0, my_sk.__wbg_ptr);
444
- var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
445
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
446
- return v2;
460
+ module.exports.get_client_address = function(client) {
461
+ let deferred1_0;
462
+ let deferred1_1;
463
+ try {
464
+ _assertClass(client, Client);
465
+ const ret = wasm.get_client_address(client.__wbg_ptr);
466
+ deferred1_0 = ret[0];
467
+ deferred1_1 = ret[1];
468
+ return getStringFromWasm0(ret[0], ret[1]);
469
+ } finally {
470
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
471
+ }
447
472
  };
448
473
 
449
474
  /**
@@ -457,46 +482,65 @@ module.exports.get_client_secret_key = function(client) {
457
482
  };
458
483
 
459
484
  /**
460
- * This function is *not* used by relayer-sdk because the encryption
461
- * happens on the KMS side. It's just here for completeness and tests.
462
- * @param {Uint8Array} msg
463
- * @param {PublicEncKeyMlKem512} their_pk
485
+ * @param {Client} client
486
+ * @returns {ServerIdAddr[]}
487
+ */
488
+ module.exports.get_server_addrs = function(client) {
489
+ _assertClass(client, Client);
490
+ const ret = wasm.get_server_addrs(client.__wbg_ptr);
491
+ var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
492
+ wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
493
+ return v1;
494
+ };
495
+
496
+ /**
497
+ * @param {PrivateSigKey} sk
464
498
  * @returns {Uint8Array}
465
499
  */
466
- module.exports.ml_kem_pke_encrypt = function(msg, their_pk) {
467
- const ptr0 = passArray8ToWasm0(msg, wasm.__wbindgen_malloc);
500
+ module.exports.private_sig_key_to_u8vec = function(sk) {
501
+ _assertClass(sk, PrivateSigKey);
502
+ const ret = wasm.private_sig_key_to_u8vec(sk.__wbg_ptr);
503
+ if (ret[3]) {
504
+ throw takeFromExternrefTable0(ret[2]);
505
+ }
506
+ var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
507
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
508
+ return v1;
509
+ };
510
+
511
+ /**
512
+ * This function is *not* used by relayer-sdk because the decryption
513
+ * is handled by [process_user_decryption_resp].
514
+ * It's just here for completeness and tests.
515
+ * @param {Uint8Array} ct
516
+ * @param {PrivateEncKeyMlKem512} my_sk
517
+ * @returns {Uint8Array}
518
+ */
519
+ module.exports.ml_kem_pke_decrypt = function(ct, my_sk) {
520
+ const ptr0 = passArray8ToWasm0(ct, wasm.__wbindgen_malloc);
468
521
  const len0 = WASM_VECTOR_LEN;
469
- _assertClass(their_pk, PublicEncKeyMlKem512);
470
- const ret = wasm.ml_kem_pke_encrypt(ptr0, len0, their_pk.__wbg_ptr);
522
+ _assertClass(my_sk, PrivateEncKeyMlKem512);
523
+ const ret = wasm.ml_kem_pke_decrypt(ptr0, len0, my_sk.__wbg_ptr);
471
524
  var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
472
525
  wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
473
526
  return v2;
474
527
  };
475
528
 
476
529
  /**
477
- * @param {Uint8Array} v
478
- * @returns {PrivateSigKey}
530
+ * Create a new [ServerIdAddr] structure that holds an ID and an address
531
+ * which must be a valid EIP-55 address, notably prefixed with "0x".
532
+ * @param {number} id
533
+ * @param {string} addr
534
+ * @returns {ServerIdAddr}
479
535
  */
480
- module.exports.u8vec_to_private_sig_key = function(v) {
481
- const ptr0 = passArray8ToWasm0(v, wasm.__wbindgen_malloc);
536
+ module.exports.new_server_id_addr = function(id, addr) {
537
+ const ptr0 = passStringToWasm0(addr, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
482
538
  const len0 = WASM_VECTOR_LEN;
483
- const ret = wasm.u8vec_to_private_sig_key(ptr0, len0);
539
+ const ret = wasm.new_server_id_addr(id, ptr0, len0);
484
540
  if (ret[2]) {
485
541
  throw takeFromExternrefTable0(ret[1]);
486
542
  }
487
- return PrivateSigKey.__wrap(ret[0]);
488
- };
489
-
490
- /**
491
- * @param {PublicSigKey} pk
492
- * @returns {Uint8Array}
493
- */
494
- module.exports.public_sig_key_to_u8vec = function(pk) {
495
- _assertClass(pk, PublicSigKey);
496
- const ret = wasm.public_sig_key_to_u8vec(pk.__wbg_ptr);
497
- var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
498
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
499
- return v1;
543
+ return ServerIdAddr.__wrap(ret[0]);
500
544
  };
501
545
 
502
546
  /**
@@ -514,13 +558,11 @@ module.exports.u8vec_to_ml_kem_pke_sk = function(v) {
514
558
  };
515
559
 
516
560
  /**
517
- * @param {PrivateEncKeyMlKem512} sk
518
- * @returns {PublicEncKeyMlKem512}
561
+ * @returns {PrivateEncKeyMlKem512}
519
562
  */
520
- module.exports.ml_kem_pke_get_pk = function(sk) {
521
- _assertClass(sk, PrivateEncKeyMlKem512);
522
- const ret = wasm.ml_kem_pke_get_pk(sk.__wbg_ptr);
523
- return PublicEncKeyMlKem512.__wrap(ret);
563
+ module.exports.ml_kem_pke_keygen = function() {
564
+ const ret = wasm.ml_kem_pke_keygen();
565
+ return PrivateEncKeyMlKem512.__wrap(ret);
524
566
  };
525
567
 
526
568
  /**
@@ -539,29 +581,28 @@ module.exports.ml_kem_pke_sk_to_u8vec = function(sk) {
539
581
  };
540
582
 
541
583
  /**
542
- * @returns {number}
584
+ * This function is *not* used by relayer-sdk because the encryption
585
+ * happens on the KMS side. It's just here for completeness and tests.
586
+ * @param {Uint8Array} msg
587
+ * @param {PublicEncKeyMlKem512} their_pk
588
+ * @returns {Uint8Array}
543
589
  */
544
- module.exports.ml_kem_pke_pk_len = function() {
545
- const ret = wasm.ml_kem_pke_pk_len();
546
- return ret >>> 0;
590
+ module.exports.ml_kem_pke_encrypt = function(msg, their_pk) {
591
+ const ptr0 = passArray8ToWasm0(msg, wasm.__wbindgen_malloc);
592
+ const len0 = WASM_VECTOR_LEN;
593
+ _assertClass(their_pk, PublicEncKeyMlKem512);
594
+ const ret = wasm.ml_kem_pke_encrypt(ptr0, len0, their_pk.__wbg_ptr);
595
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
596
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
597
+ return v2;
547
598
  };
548
599
 
549
600
  /**
550
- * @param {Client} client
551
- * @returns {string}
601
+ * @returns {number}
552
602
  */
553
- module.exports.get_client_address = function(client) {
554
- let deferred1_0;
555
- let deferred1_1;
556
- try {
557
- _assertClass(client, Client);
558
- const ret = wasm.get_client_address(client.__wbg_ptr);
559
- deferred1_0 = ret[0];
560
- deferred1_1 = ret[1];
561
- return getStringFromWasm0(ret[0], ret[1]);
562
- } finally {
563
- wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
564
- }
603
+ module.exports.ml_kem_pke_pk_len = function() {
604
+ const ret = wasm.ml_kem_pke_pk_len();
605
+ return ret >>> 0;
565
606
  };
566
607
 
567
608
  /**
@@ -578,47 +619,6 @@ module.exports.u8vec_to_public_sig_key = function(v) {
578
619
  return PublicSigKey.__wrap(ret[0]);
579
620
  };
580
621
 
581
- /**
582
- * @param {Uint8Array} v
583
- * @returns {PublicEncKeyMlKem512}
584
- */
585
- module.exports.u8vec_to_ml_kem_pke_pk = function(v) {
586
- const ptr0 = passArray8ToWasm0(v, wasm.__wbindgen_malloc);
587
- const len0 = WASM_VECTOR_LEN;
588
- const ret = wasm.u8vec_to_ml_kem_pke_pk(ptr0, len0);
589
- if (ret[2]) {
590
- throw takeFromExternrefTable0(ret[1]);
591
- }
592
- return PublicEncKeyMlKem512.__wrap(ret[0]);
593
- };
594
-
595
- /**
596
- * @param {Client} client
597
- * @returns {ServerIdAddr[]}
598
- */
599
- module.exports.get_server_addrs = function(client) {
600
- _assertClass(client, Client);
601
- const ret = wasm.get_server_addrs(client.__wbg_ptr);
602
- var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
603
- wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
604
- return v1;
605
- };
606
-
607
- /**
608
- * @param {PrivateSigKey} sk
609
- * @returns {Uint8Array}
610
- */
611
- module.exports.private_sig_key_to_u8vec = function(sk) {
612
- _assertClass(sk, PrivateSigKey);
613
- const ret = wasm.private_sig_key_to_u8vec(sk.__wbg_ptr);
614
- if (ret[3]) {
615
- throw takeFromExternrefTable0(ret[2]);
616
- }
617
- var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
618
- wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
619
- return v1;
620
- };
621
-
622
622
  const CiphertextHandleFinalization = (typeof FinalizationRegistry === 'undefined')
623
623
  ? { register: () => {}, unregister: () => {} }
624
624
  : new FinalizationRegistry(ptr => wasm.__wbg_ciphertexthandle_free(ptr >>> 0, 1));
package/kms_lib_bg.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "Zama"
5
5
  ],
6
6
  "description": "Key Management System for the Zama Protocol.",
7
- "version": "v0.13.1",
7
+ "version": "v0.13.2",
8
8
  "license": "BSD-3-Clause-Clear",
9
9
  "repository": {
10
10
  "type": "git",