ecash-lib 3.0.0 → 3.1.0

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.
Files changed (50) hide show
  1. package/README.md +1 -0
  2. package/dist/ecc.d.ts +18 -1
  3. package/dist/ecc.d.ts.map +1 -1
  4. package/dist/ecc.js +29 -0
  5. package/dist/ecc.js.map +1 -1
  6. package/dist/ffi/ecash_lib_wasm_bg_browser.js +1743 -1679
  7. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  8. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +13 -11
  9. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  10. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +13 -11
  11. package/dist/ffi/ecash_lib_wasm_browser.d.ts +27 -11
  12. package/dist/ffi/ecash_lib_wasm_browser.js +64 -14
  13. package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +14 -0
  14. package/dist/ffi/ecash_lib_wasm_nodejs.js +64 -14
  15. package/dist/hdwallet.d.ts.map +1 -1
  16. package/dist/hdwallet.js +1 -0
  17. package/dist/hdwallet.js.map +1 -1
  18. package/dist/index.d.ts +1 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/messages.d.ts +32 -0
  23. package/dist/messages.d.ts.map +1 -0
  24. package/dist/messages.js +102 -0
  25. package/dist/messages.js.map +1 -0
  26. package/dist/op.d.ts.map +1 -1
  27. package/dist/op.js +4 -3
  28. package/dist/op.js.map +1 -1
  29. package/dist/sigHashType.js.map +1 -1
  30. package/dist/txBuilder.js +1 -1
  31. package/dist/txBuilder.js.map +1 -1
  32. package/package.json +4 -6
  33. package/src/ecc.ts +54 -2
  34. package/src/ffi/ecash_lib_wasm_bg_browser.js +1743 -1679
  35. package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  36. package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +13 -11
  37. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  38. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +13 -11
  39. package/src/ffi/ecash_lib_wasm_browser.d.ts +27 -11
  40. package/src/ffi/ecash_lib_wasm_browser.js +64 -14
  41. package/src/ffi/ecash_lib_wasm_nodejs.d.ts +14 -0
  42. package/src/ffi/ecash_lib_wasm_nodejs.js +64 -14
  43. package/src/hdwallet.ts +1 -0
  44. package/src/index.ts +1 -0
  45. package/src/messages.ts +125 -0
  46. package/src/op.ts +5 -3
  47. package/src/sigHashType.ts +2 -2
  48. package/src/txBuilder.ts +1 -1
  49. package/.eslintignore +0 -8
  50. package/eslint.config.js +0 -16
@@ -1,6 +1,18 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export function ecc_new(): number;
5
+ export function ecc_derivePubkey(a: number, b: number, c: number, d: number): void;
6
+ export function ecc_ecdsaSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
7
+ export function ecc_ecdsaVerify(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): void;
8
+ export function ecc_schnorrSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
9
+ export function ecc_schnorrVerify(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): void;
10
+ export function ecc_isValidSeckey(a: number, b: number, c: number): number;
11
+ export function ecc_seckeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
12
+ export function ecc_pubkeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
13
+ export function ecc_signRecoverable(a: number, b: number, c: number, d: number, e: number, f: number): void;
14
+ export function ecc_recoverSig(a: number, b: number, c: number, d: number, e: number, f: number): void;
15
+ export function __wbg_ecc_free(a: number): void;
4
16
  export function sha512h_new(): number;
5
17
  export function sha512h_update(a: number, b: number, c: number): void;
6
18
  export function sha512h_finalize(a: number, b: number): void;
@@ -14,21 +26,11 @@ export function sha512(a: number, b: number, c: number): void;
14
26
  export function sha256d(a: number, b: number, c: number): void;
15
27
  export function sha256(a: number, b: number, c: number): void;
16
28
  export function shaRmd160(a: number, b: number, c: number): void;
17
- export function ecc_new(): number;
18
- export function ecc_derivePubkey(a: number, b: number, c: number, d: number): void;
19
- export function ecc_ecdsaSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
20
- export function ecc_schnorrSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
21
- export function ecc_isValidSeckey(a: number, b: number, c: number): number;
22
- export function ecc_seckeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
23
- export function ecc_pubkeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
24
- export function ecc_signRecoverable(a: number, b: number, c: number, d: number, e: number, f: number): void;
25
- export function ecc_recoverSig(a: number, b: number, c: number, d: number, e: number, f: number): void;
26
- export function __wbg_ecc_free(a: number): void;
27
29
  export function ecash_secp256k1_context_create(a: number): number;
28
30
  export function ecash_secp256k1_context_destroy(a: number): void;
29
31
  export function secp256k1_default_illegal_callback_fn(a: number, b: number): void;
30
32
  export function secp256k1_default_error_callback_fn(a: number, b: number): void;
31
33
  export function __wbg_sha512h_free(a: number): void;
32
- export function __wbindgen_export_0(a: number, b: number): number;
33
34
  export function __wbindgen_add_to_stack_pointer(a: number): number;
35
+ export function __wbindgen_export_0(a: number, b: number): number;
34
36
  export function __wbindgen_export_1(a: number, b: number, c: number): void;
@@ -1,6 +1,18 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
+ export function ecc_new(): number;
5
+ export function ecc_derivePubkey(a: number, b: number, c: number, d: number): void;
6
+ export function ecc_ecdsaSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
7
+ export function ecc_ecdsaVerify(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): void;
8
+ export function ecc_schnorrSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
9
+ export function ecc_schnorrVerify(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): void;
10
+ export function ecc_isValidSeckey(a: number, b: number, c: number): number;
11
+ export function ecc_seckeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
12
+ export function ecc_pubkeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
13
+ export function ecc_signRecoverable(a: number, b: number, c: number, d: number, e: number, f: number): void;
14
+ export function ecc_recoverSig(a: number, b: number, c: number, d: number, e: number, f: number): void;
15
+ export function __wbg_ecc_free(a: number): void;
4
16
  export function sha512h_new(): number;
5
17
  export function sha512h_update(a: number, b: number, c: number): void;
6
18
  export function sha512h_finalize(a: number, b: number): void;
@@ -14,21 +26,11 @@ export function sha512(a: number, b: number, c: number): void;
14
26
  export function sha256d(a: number, b: number, c: number): void;
15
27
  export function sha256(a: number, b: number, c: number): void;
16
28
  export function shaRmd160(a: number, b: number, c: number): void;
17
- export function ecc_new(): number;
18
- export function ecc_derivePubkey(a: number, b: number, c: number, d: number): void;
19
- export function ecc_ecdsaSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
20
- export function ecc_schnorrSign(a: number, b: number, c: number, d: number, e: number, f: number): void;
21
- export function ecc_isValidSeckey(a: number, b: number, c: number): number;
22
- export function ecc_seckeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
23
- export function ecc_pubkeyAdd(a: number, b: number, c: number, d: number, e: number, f: number): void;
24
- export function ecc_signRecoverable(a: number, b: number, c: number, d: number, e: number, f: number): void;
25
- export function ecc_recoverSig(a: number, b: number, c: number, d: number, e: number, f: number): void;
26
- export function __wbg_ecc_free(a: number): void;
27
29
  export function ecash_secp256k1_context_create(a: number): number;
28
30
  export function ecash_secp256k1_context_destroy(a: number): void;
29
31
  export function secp256k1_default_illegal_callback_fn(a: number, b: number): void;
30
32
  export function secp256k1_default_error_callback_fn(a: number, b: number): void;
31
33
  export function __wbg_sha512h_free(a: number): void;
32
- export function __wbindgen_export_0(a: number, b: number): number;
33
34
  export function __wbindgen_add_to_stack_pointer(a: number): number;
35
+ export function __wbindgen_export_0(a: number, b: number): number;
34
36
  export function __wbindgen_export_1(a: number, b: number, c: number): void;
@@ -47,6 +47,13 @@ export class Ecc {
47
47
  */
48
48
  ecdsaSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
49
49
  /**
50
+ * Verify an ECDSA signature.
51
+ * @param {Uint8Array} sig
52
+ * @param {Uint8Array} msg
53
+ * @param {Uint8Array} pk
54
+ */
55
+ ecdsaVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
56
+ /**
50
57
  * Sign a Schnorr signature.
51
58
  * @param {Uint8Array} seckey
52
59
  * @param {Uint8Array} msg
@@ -54,6 +61,13 @@ export class Ecc {
54
61
  */
55
62
  schnorrSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
56
63
  /**
64
+ * Verify a Schnorr signature.
65
+ * @param {Uint8Array} sig
66
+ * @param {Uint8Array} msg
67
+ * @param {Uint8Array} pk
68
+ */
69
+ schnorrVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
70
+ /**
57
71
  * Return whether the given secret key is valid, i.e. whether is of correct
58
72
  * length (32 bytes) and is on the curve.
59
73
  * @param {Uint8Array} seckey
@@ -152,6 +166,18 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
152
166
 
153
167
  export interface InitOutput {
154
168
  readonly memory: WebAssembly.Memory;
169
+ readonly ecc_new: () => number;
170
+ readonly ecc_derivePubkey: (a: number, b: number, c: number, d: number) => void;
171
+ readonly ecc_ecdsaSign: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
172
+ readonly ecc_ecdsaVerify: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
173
+ readonly ecc_schnorrSign: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
174
+ readonly ecc_schnorrVerify: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
175
+ readonly ecc_isValidSeckey: (a: number, b: number, c: number) => number;
176
+ readonly ecc_seckeyAdd: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
177
+ readonly ecc_pubkeyAdd: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
178
+ readonly ecc_signRecoverable: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
179
+ readonly ecc_recoverSig: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
180
+ readonly __wbg_ecc_free: (a: number) => void;
155
181
  readonly sha512h_new: () => number;
156
182
  readonly sha512h_update: (a: number, b: number, c: number) => void;
157
183
  readonly sha512h_finalize: (a: number, b: number) => void;
@@ -165,23 +191,13 @@ export interface InitOutput {
165
191
  readonly sha256d: (a: number, b: number, c: number) => void;
166
192
  readonly sha256: (a: number, b: number, c: number) => void;
167
193
  readonly shaRmd160: (a: number, b: number, c: number) => void;
168
- readonly ecc_new: () => number;
169
- readonly ecc_derivePubkey: (a: number, b: number, c: number, d: number) => void;
170
- readonly ecc_ecdsaSign: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
171
- readonly ecc_schnorrSign: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
172
- readonly ecc_isValidSeckey: (a: number, b: number, c: number) => number;
173
- readonly ecc_seckeyAdd: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
174
- readonly ecc_pubkeyAdd: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
175
- readonly ecc_signRecoverable: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
176
- readonly ecc_recoverSig: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
177
- readonly __wbg_ecc_free: (a: number) => void;
178
194
  readonly ecash_secp256k1_context_create: (a: number) => number;
179
195
  readonly ecash_secp256k1_context_destroy: (a: number) => void;
180
196
  readonly secp256k1_default_illegal_callback_fn: (a: number, b: number) => void;
181
197
  readonly secp256k1_default_error_callback_fn: (a: number, b: number) => void;
182
198
  readonly __wbg_sha512h_free: (a: number) => void;
183
- readonly __wbindgen_export_0: (a: number, b: number) => number;
184
199
  readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
200
+ readonly __wbindgen_export_0: (a: number, b: number) => number;
185
201
  readonly __wbindgen_export_1: (a: number, b: number, c: number) => void;
186
202
  }
187
203
 
@@ -51,6 +51,20 @@ function getInt32Memory0() {
51
51
  return cachedInt32Memory0;
52
52
  }
53
53
 
54
+ function getObject(idx) { return heap[idx]; }
55
+
56
+ function dropObject(idx) {
57
+ if (idx < 132) return;
58
+ heap[idx] = heap_next;
59
+ heap_next = idx;
60
+ }
61
+
62
+ function takeObject(idx) {
63
+ const ret = getObject(idx);
64
+ dropObject(idx);
65
+ return ret;
66
+ }
67
+
54
68
  function getArrayU8FromWasm0(ptr, len) {
55
69
  ptr = ptr >>> 0;
56
70
  return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
@@ -139,20 +153,6 @@ export function shaRmd160(data) {
139
153
  }
140
154
  }
141
155
 
142
- function getObject(idx) { return heap[idx]; }
143
-
144
- function dropObject(idx) {
145
- if (idx < 132) return;
146
- heap[idx] = heap_next;
147
- heap_next = idx;
148
- }
149
-
150
- function takeObject(idx) {
151
- const ret = getObject(idx);
152
- dropObject(idx);
153
- return ret;
154
- }
155
-
156
156
  const EccFinalization = (typeof FinalizationRegistry === 'undefined')
157
157
  ? { register: () => {}, unregister: () => {} }
158
158
  : new FinalizationRegistry(ptr => wasm.__wbg_ecc_free(ptr >>> 0));
@@ -234,6 +234,31 @@ export class Ecc {
234
234
  }
235
235
  }
236
236
  /**
237
+ * Verify an ECDSA signature.
238
+ * @param {Uint8Array} sig
239
+ * @param {Uint8Array} msg
240
+ * @param {Uint8Array} pk
241
+ */
242
+ ecdsaVerify(sig, msg, pk) {
243
+ try {
244
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
245
+ const ptr0 = passArray8ToWasm0(sig, wasm.__wbindgen_export_0);
246
+ const len0 = WASM_VECTOR_LEN;
247
+ const ptr1 = passArray8ToWasm0(msg, wasm.__wbindgen_export_0);
248
+ const len1 = WASM_VECTOR_LEN;
249
+ const ptr2 = passArray8ToWasm0(pk, wasm.__wbindgen_export_0);
250
+ const len2 = WASM_VECTOR_LEN;
251
+ wasm.ecc_ecdsaVerify(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
252
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
253
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
254
+ if (r1) {
255
+ throw takeObject(r0);
256
+ }
257
+ } finally {
258
+ wasm.__wbindgen_add_to_stack_pointer(16);
259
+ }
260
+ }
261
+ /**
237
262
  * Sign a Schnorr signature.
238
263
  * @param {Uint8Array} seckey
239
264
  * @param {Uint8Array} msg
@@ -262,6 +287,31 @@ export class Ecc {
262
287
  }
263
288
  }
264
289
  /**
290
+ * Verify a Schnorr signature.
291
+ * @param {Uint8Array} sig
292
+ * @param {Uint8Array} msg
293
+ * @param {Uint8Array} pk
294
+ */
295
+ schnorrVerify(sig, msg, pk) {
296
+ try {
297
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
298
+ const ptr0 = passArray8ToWasm0(sig, wasm.__wbindgen_export_0);
299
+ const len0 = WASM_VECTOR_LEN;
300
+ const ptr1 = passArray8ToWasm0(msg, wasm.__wbindgen_export_0);
301
+ const len1 = WASM_VECTOR_LEN;
302
+ const ptr2 = passArray8ToWasm0(pk, wasm.__wbindgen_export_0);
303
+ const len2 = WASM_VECTOR_LEN;
304
+ wasm.ecc_schnorrVerify(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
305
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
306
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
307
+ if (r1) {
308
+ throw takeObject(r0);
309
+ }
310
+ } finally {
311
+ wasm.__wbindgen_add_to_stack_pointer(16);
312
+ }
313
+ }
314
+ /**
265
315
  * Return whether the given secret key is valid, i.e. whether is of correct
266
316
  * length (32 bytes) and is on the curve.
267
317
  * @param {Uint8Array} seckey
@@ -47,6 +47,13 @@ export class Ecc {
47
47
  */
48
48
  ecdsaSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
49
49
  /**
50
+ * Verify an ECDSA signature.
51
+ * @param {Uint8Array} sig
52
+ * @param {Uint8Array} msg
53
+ * @param {Uint8Array} pk
54
+ */
55
+ ecdsaVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
56
+ /**
50
57
  * Sign a Schnorr signature.
51
58
  * @param {Uint8Array} seckey
52
59
  * @param {Uint8Array} msg
@@ -54,6 +61,13 @@ export class Ecc {
54
61
  */
55
62
  schnorrSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
56
63
  /**
64
+ * Verify a Schnorr signature.
65
+ * @param {Uint8Array} sig
66
+ * @param {Uint8Array} msg
67
+ * @param {Uint8Array} pk
68
+ */
69
+ schnorrVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
70
+ /**
57
71
  * Return whether the given secret key is valid, i.e. whether is of correct
58
72
  * length (32 bytes) and is on the curve.
59
73
  * @param {Uint8Array} seckey
@@ -54,6 +54,20 @@ function getInt32Memory0() {
54
54
  return cachedInt32Memory0;
55
55
  }
56
56
 
57
+ function getObject(idx) { return heap[idx]; }
58
+
59
+ function dropObject(idx) {
60
+ if (idx < 132) return;
61
+ heap[idx] = heap_next;
62
+ heap_next = idx;
63
+ }
64
+
65
+ function takeObject(idx) {
66
+ const ret = getObject(idx);
67
+ dropObject(idx);
68
+ return ret;
69
+ }
70
+
57
71
  function getArrayU8FromWasm0(ptr, len) {
58
72
  ptr = ptr >>> 0;
59
73
  return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
@@ -142,20 +156,6 @@ module.exports.shaRmd160 = function(data) {
142
156
  }
143
157
  };
144
158
 
145
- function getObject(idx) { return heap[idx]; }
146
-
147
- function dropObject(idx) {
148
- if (idx < 132) return;
149
- heap[idx] = heap_next;
150
- heap_next = idx;
151
- }
152
-
153
- function takeObject(idx) {
154
- const ret = getObject(idx);
155
- dropObject(idx);
156
- return ret;
157
- }
158
-
159
159
  const EccFinalization = (typeof FinalizationRegistry === 'undefined')
160
160
  ? { register: () => {}, unregister: () => {} }
161
161
  : new FinalizationRegistry(ptr => wasm.__wbg_ecc_free(ptr >>> 0));
@@ -237,6 +237,31 @@ class Ecc {
237
237
  }
238
238
  }
239
239
  /**
240
+ * Verify an ECDSA signature.
241
+ * @param {Uint8Array} sig
242
+ * @param {Uint8Array} msg
243
+ * @param {Uint8Array} pk
244
+ */
245
+ ecdsaVerify(sig, msg, pk) {
246
+ try {
247
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
248
+ const ptr0 = passArray8ToWasm0(sig, wasm.__wbindgen_export_0);
249
+ const len0 = WASM_VECTOR_LEN;
250
+ const ptr1 = passArray8ToWasm0(msg, wasm.__wbindgen_export_0);
251
+ const len1 = WASM_VECTOR_LEN;
252
+ const ptr2 = passArray8ToWasm0(pk, wasm.__wbindgen_export_0);
253
+ const len2 = WASM_VECTOR_LEN;
254
+ wasm.ecc_ecdsaVerify(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
255
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
256
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
257
+ if (r1) {
258
+ throw takeObject(r0);
259
+ }
260
+ } finally {
261
+ wasm.__wbindgen_add_to_stack_pointer(16);
262
+ }
263
+ }
264
+ /**
240
265
  * Sign a Schnorr signature.
241
266
  * @param {Uint8Array} seckey
242
267
  * @param {Uint8Array} msg
@@ -265,6 +290,31 @@ class Ecc {
265
290
  }
266
291
  }
267
292
  /**
293
+ * Verify a Schnorr signature.
294
+ * @param {Uint8Array} sig
295
+ * @param {Uint8Array} msg
296
+ * @param {Uint8Array} pk
297
+ */
298
+ schnorrVerify(sig, msg, pk) {
299
+ try {
300
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
301
+ const ptr0 = passArray8ToWasm0(sig, wasm.__wbindgen_export_0);
302
+ const len0 = WASM_VECTOR_LEN;
303
+ const ptr1 = passArray8ToWasm0(msg, wasm.__wbindgen_export_0);
304
+ const len1 = WASM_VECTOR_LEN;
305
+ const ptr2 = passArray8ToWasm0(pk, wasm.__wbindgen_export_0);
306
+ const len2 = WASM_VECTOR_LEN;
307
+ wasm.ecc_schnorrVerify(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
308
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
309
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
310
+ if (r1) {
311
+ throw takeObject(r0);
312
+ }
313
+ } finally {
314
+ wasm.__wbindgen_add_to_stack_pointer(16);
315
+ }
316
+ }
317
+ /**
268
318
  * Return whether the given secret key is valid, i.e. whether is of correct
269
319
  * length (32 bytes) and is on the curve.
270
320
  * @param {Uint8Array} seckey
@@ -1 +1 @@
1
- {"version":3,"file":"hdwallet.d.ts","sourceRoot":"","sources":["../src/hdwallet.ts"],"names":[],"mappings":"AAaA,qBAAa,MAAM;IACf,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;gBAEhB,MAAM,EAAE;QACvB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,MAAM,EAAE,UAAU,CAAC;QACnB,SAAS,EAAE,UAAU,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;KAC7B;IAUM,MAAM,IAAI,UAAU,GAAG,SAAS;IAIhC,MAAM,IAAI,UAAU;IAIpB,GAAG,IAAI,UAAU;IAIjB,WAAW,IAAI,UAAU;IAIzB,KAAK,IAAI,MAAM;IAIf,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,UAAU;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAoD7B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAqBzB,cAAc,CACxB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,GACtB,MAAM;WAWK,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CASnD"}
1
+ {"version":3,"file":"hdwallet.d.ts","sourceRoot":"","sources":["../src/hdwallet.ts"],"names":[],"mappings":"AAaA,qBAAa,MAAM;IACf,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;gBAEhB,MAAM,EAAE;QACvB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,MAAM,EAAE,UAAU,CAAC;QACnB,SAAS,EAAE,UAAU,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;KAC7B;IAUM,MAAM,IAAI,UAAU,GAAG,SAAS;IAIhC,MAAM,IAAI,UAAU;IAIpB,GAAG,IAAI,UAAU;IAIjB,WAAW,IAAI,UAAU;IAIzB,KAAK,IAAI,MAAM;IAIf,KAAK,IAAI,MAAM;IAIf,iBAAiB,IAAI,MAAM;IAI3B,SAAS,IAAI,UAAU;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAoD7B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAsBzB,cAAc,CACxB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,UAAU,GACtB,MAAM;WAWK,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CASnD"}
package/dist/hdwallet.js CHANGED
@@ -112,6 +112,7 @@ class HdNode {
112
112
  }
113
113
  splitPath = splitPath.slice(1);
114
114
  }
115
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
115
116
  let hd = this;
116
117
  for (const step of splitPath) {
117
118
  if (step.slice(-1) === `'`) {
@@ -1 +1 @@
1
- {"version":3,"file":"hdwallet.js","sourceRoot":"","sources":["../src/hdwallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hdwallet.js","sourceRoot":"","sources":["../src/hdwallet.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './hash.js';
4
4
  export * from './op.js';
5
5
  export * from './opcode.js';
6
6
  export * from './script.js';
7
+ export * from './messages.js';
7
8
  export * from './mnemonic.js';
8
9
  export * from './hdwallet.js';
9
10
  export * from './address/address.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ __exportStar(require("./hash.js"), exports);
23
23
  __exportStar(require("./op.js"), exports);
24
24
  __exportStar(require("./opcode.js"), exports);
25
25
  __exportStar(require("./script.js"), exports);
26
+ __exportStar(require("./messages.js"), exports);
26
27
  __exportStar(require("./mnemonic.js"), exports);
27
28
  __exportStar(require("./hdwallet.js"), exports);
28
29
  __exportStar(require("./address/address.js"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Messages are prepared in a standard way before signing and verifying
3
+ *
4
+ * - The raw message (e.g., "Hello, world!") is encoded as a UTF-8 byte array
5
+ * - The prefixed message is constructed as:
6
+ *
7
+ * [prefix][message_length][message]
8
+ *
9
+ * where message_length is a variable-length integer (varint) encoding the
10
+ * byte length of the message
11
+ *
12
+ * We keep the "magicHash" name used in bitcoinjs-message as we do the same thing here
13
+ * with eCash tools
14
+ *
15
+ * ref https://github.com/bitcoinjs/bitcoinjs-message/blob/master/index.js#L57
16
+ */
17
+ export declare const magicHash: (message: string, messagePrefix?: string) => Uint8Array;
18
+ /**
19
+ * Sign a message
20
+ *
21
+ * While there is not an official BIP or spec here, there is
22
+ * a de facto standard
23
+ *
24
+ * See implementation in bitcoinjs-lib and electrum
25
+ */
26
+ export declare const signMsg: (msg: string, sk: Uint8Array, prefix?: string) => string;
27
+ /**
28
+ * Verify that a given message and signature
29
+ * came from a given address
30
+ */
31
+ export declare const verifyMsg: (msg: string, signature: string, address: string, prefix?: string) => boolean;
32
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,YACT,MAAM,6BAEhB,UAmCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,QACX,MAAM,MACP,UAAU,sBAEf,MAOF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,QACb,MAAM,aACA,MAAM,WACR,MAAM,sBAEhB,OAmBF,CAAC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.verifyMsg = exports.signMsg = exports.magicHash = void 0;
7
+ const hash_1 = require("./hash");
8
+ const ecc_1 = require("./ecc");
9
+ const writerbytes_1 = require("./io/writerbytes");
10
+ const varsize_1 = require("./io/varsize");
11
+ const hex_1 = require("./io/hex");
12
+ const address_1 = require("./address/address");
13
+ /**
14
+ * messages.ts
15
+ *
16
+ * Sign and verify messages
17
+ */
18
+ const ECASH_MSG_SIGNING_PREFIX = '\x16eCash Signed Message:\n';
19
+ /**
20
+ * Messages are prepared in a standard way before signing and verifying
21
+ *
22
+ * - The raw message (e.g., "Hello, world!") is encoded as a UTF-8 byte array
23
+ * - The prefixed message is constructed as:
24
+ *
25
+ * [prefix][message_length][message]
26
+ *
27
+ * where message_length is a variable-length integer (varint) encoding the
28
+ * byte length of the message
29
+ *
30
+ * We keep the "magicHash" name used in bitcoinjs-message as we do the same thing here
31
+ * with eCash tools
32
+ *
33
+ * ref https://github.com/bitcoinjs/bitcoinjs-message/blob/master/index.js#L57
34
+ */
35
+ const magicHash = (message, messagePrefix = ECASH_MSG_SIGNING_PREFIX) => {
36
+ const encoder = new TextEncoder();
37
+ // Convert prefix to Uint8Array
38
+ const prefixBytes = encoder.encode(messagePrefix);
39
+ // Convert message to Uint8Array
40
+ const messageBytes = encoder.encode(message);
41
+ // Calculate the maximum possible size of the varint for message length
42
+ const maxVarintSize = messageBytes.length <= 0xfc
43
+ ? 1
44
+ : messageBytes.length <= 0xffff
45
+ ? 3
46
+ : messageBytes.length <= 0xffffffff
47
+ ? 5
48
+ : 9;
49
+ // Create a WriterBytes instance with enough capacity
50
+ const writer = new writerbytes_1.WriterBytes(prefixBytes.length + maxVarintSize + messageBytes.length);
51
+ // Write the prefix
52
+ writer.putBytes(prefixBytes);
53
+ // Write the message length as a varint
54
+ (0, varsize_1.writeVarSize)(messageBytes.length, writer);
55
+ // Write the message
56
+ writer.putBytes(messageBytes);
57
+ // Return double SHA-256 hash
58
+ return (0, hash_1.sha256d)(writer.data);
59
+ };
60
+ exports.magicHash = magicHash;
61
+ /**
62
+ * Sign a message
63
+ *
64
+ * While there is not an official BIP or spec here, there is
65
+ * a de facto standard
66
+ *
67
+ * See implementation in bitcoinjs-lib and electrum
68
+ */
69
+ const signMsg = (msg, sk, prefix = ECASH_MSG_SIGNING_PREFIX) => {
70
+ const preparedMsg = (0, exports.magicHash)(msg, prefix);
71
+ const sig = new ecc_1.Ecc().signRecoverable(sk, preparedMsg);
72
+ // Convert Uint8Array to binary string and encode with btoa
73
+ const binaryString = String.fromCharCode(...sig);
74
+ return btoa(binaryString);
75
+ };
76
+ exports.signMsg = signMsg;
77
+ /**
78
+ * Verify that a given message and signature
79
+ * came from a given address
80
+ */
81
+ const verifyMsg = (msg, signature, address, prefix = ECASH_MSG_SIGNING_PREFIX) => {
82
+ try {
83
+ const preparedMsg = (0, exports.magicHash)(msg, prefix);
84
+ // Decode base64 signature to binary string and convert to Uint8Array
85
+ const binaryString = atob(signature);
86
+ const sig = new Uint8Array(binaryString.length);
87
+ for (let i = 0; i < binaryString.length; i++) {
88
+ sig[i] = binaryString.charCodeAt(i);
89
+ }
90
+ const recoveredPk = new ecc_1.Ecc().recoverSig(sig, preparedMsg);
91
+ // Get recovered hash as a hex string and compare to tested hash
92
+ const recoveredHash = (0, hex_1.toHex)((0, hash_1.shaRmd160)(recoveredPk));
93
+ const testedHash = address_1.Address.fromCashAddress(address).hash;
94
+ return recoveredHash === testedHash;
95
+ }
96
+ catch (err) {
97
+ console.error(`Error verifying signature`, err);
98
+ return false;
99
+ }
100
+ };
101
+ exports.verifyMsg = verifyMsg;
102
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
package/dist/op.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../src/op.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAMH,MAAM,EACT,MAAM,aAAa,CAAC;AAErB;;;IAGI;AACJ,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC;;;IAGI;AACJ,MAAM,WAAW,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,MAAM,CAQ9C;AAED,oDAAoD;AACpD,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAsBvC;AAED,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QA+B7C;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,CAuBhD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,CA8BvD"}
1
+ {"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../src/op.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAMH,MAAM,EACT,MAAM,aAAa,CAAC;AAErB;;;IAGI;AACJ,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjC;;;IAGI;AACJ,MAAM,WAAW,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,MAAM,CAU9C;AAED,oDAAoD;AACpD,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAsBvC;AAED,6CAA6C;AAC7C,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QA+B7C;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE,CAuBhD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,EAAE,CA8BvD"}
package/dist/op.js CHANGED
@@ -10,6 +10,7 @@ function isPushOp(op) {
10
10
  if (!op || typeof op !== 'object') {
11
11
  return false;
12
12
  }
13
+ // eslint-disable-next-line no-prototype-builtins
13
14
  if (!op.hasOwnProperty('opcode') || !op.hasOwnProperty('data')) {
14
15
  return false;
15
16
  }
@@ -117,8 +118,8 @@ function pushNumberOp(value) {
117
118
  // Prepare number for encoding. The algorithm below replicates the one used
118
119
  // in `src/script/script.h` intentionally to avoid discrepancies.
119
120
  const auxValue = BigInt(value);
120
- let bytes = [];
121
- let negative = auxValue < 0;
121
+ const bytes = [];
122
+ const negative = auxValue < 0;
122
123
  let absvalue = negative ? ~auxValue + 1n : auxValue;
123
124
  // Encode value in little endian byte order by iteratively pushing the
124
125
  // least significant byte until shifting right 1 more byte produces 0
@@ -129,7 +130,7 @@ function pushNumberOp(value) {
129
130
  // The MSB will encode the sign which means that, if the previous encoding
130
131
  // of the absolute value uses that bit, a new byte must be added to encode
131
132
  // the sign. If bit is not set, then it must be set for negative numbers.
132
- let last = bytes[bytes.length - 1];
133
+ const last = bytes[bytes.length - 1];
133
134
  if (last & 0x80) {
134
135
  bytes.push(negative ? 0x80 : 0x00);
135
136
  }