ecash-lib 1.2.2-rc9 → 1.4.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.
- package/README.md +2 -1
- package/dist/ecc.d.ts +12 -0
- package/dist/ecc.d.ts.map +1 -1
- package/dist/ecc.js +9 -47
- package/dist/ecc.js.map +1 -1
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +18 -4
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +18 -4
- package/dist/ffi/ecash_lib_wasm_browser.d.ts +95 -4
- package/dist/ffi/ecash_lib_wasm_browser.js +245 -14
- package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +77 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.js +247 -14
- package/dist/hash.d.ts +21 -1
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +16 -10
- package/dist/hash.js.map +1 -1
- package/dist/hdwallet.d.ts +33 -0
- package/dist/hdwallet.d.ts.map +1 -0
- package/dist/hdwallet.js +148 -0
- package/dist/hdwallet.js.map +1 -0
- package/dist/hmac.d.ts +13 -0
- package/dist/hmac.d.ts.map +1 -0
- package/dist/hmac.js +63 -0
- package/dist/hmac.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/initBrowser.d.ts.map +1 -1
- package/dist/initBrowser.js +3 -0
- package/dist/initBrowser.js.map +1 -1
- package/dist/initNodeJs.d.ts.map +1 -1
- package/dist/initNodeJs.js +3 -0
- package/dist/initNodeJs.js.map +1 -1
- package/dist/io/bytes.d.ts +5 -3
- package/dist/io/bytes.d.ts.map +1 -1
- package/dist/io/bytes.js +15 -7
- package/dist/io/bytes.js.map +1 -1
- package/dist/io/writer.d.ts +4 -3
- package/dist/io/writer.d.ts.map +1 -1
- package/dist/io/writerbytes.d.ts +4 -3
- package/dist/io/writerbytes.d.ts.map +1 -1
- package/dist/io/writerbytes.js +7 -6
- package/dist/io/writerbytes.js.map +1 -1
- package/dist/io/writerlength.d.ts +4 -3
- package/dist/io/writerlength.d.ts.map +1 -1
- package/dist/io/writerlength.js +3 -3
- package/dist/io/writerlength.js.map +1 -1
- package/dist/mnemonic.d.ts +14 -0
- package/dist/mnemonic.d.ts.map +1 -0
- package/dist/mnemonic.js +123 -0
- package/dist/mnemonic.js.map +1 -0
- package/dist/pbkdf2.d.ts +11 -0
- package/dist/pbkdf2.d.ts.map +1 -0
- package/dist/pbkdf2.js +36 -0
- package/dist/pbkdf2.js.map +1 -0
- package/dist/script.d.ts +4 -0
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +6 -0
- package/dist/script.js.map +1 -1
- package/package.json +1 -1
- package/src/address/address.ts +346 -0
- package/src/address/legacyaddr.ts +129 -0
- package/src/consts.ts +8 -0
- package/src/ecc.ts +61 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +32 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +32 -0
- package/src/ffi/ecash_lib_wasm_browser.d.ts +183 -0
- package/src/ffi/ecash_lib_wasm_browser.js +571 -0
- package/src/ffi/ecash_lib_wasm_nodejs.d.ts +127 -0
- package/src/ffi/ecash_lib_wasm_nodejs.js +498 -0
- package/src/hash.ts +46 -0
- package/src/hdwallet.ts +181 -0
- package/src/hmac.ts +74 -0
- package/src/index.ts +29 -0
- package/src/indexBrowser.ts +6 -0
- package/src/indexNodeJs.ts +6 -0
- package/src/initBrowser.ts +21 -0
- package/src/initNodeJs.ts +20 -0
- package/src/io/bytes.ts +80 -0
- package/src/io/hex.ts +69 -0
- package/src/io/int.ts +6 -0
- package/src/io/str.ts +16 -0
- package/src/io/varsize.ts +49 -0
- package/src/io/writer.ts +20 -0
- package/src/io/writerbytes.ts +87 -0
- package/src/io/writerlength.ts +44 -0
- package/src/mnemonic.ts +153 -0
- package/src/op.ts +162 -0
- package/src/opcode.ts +154 -0
- package/src/pbkdf2.ts +52 -0
- package/src/script.ts +195 -0
- package/src/sigHashType.ts +190 -0
- package/src/test/testRunner.ts +209 -0
- package/src/token/alp.ts +146 -0
- package/src/token/common.ts +32 -0
- package/src/token/empp.ts +29 -0
- package/src/token/slp.ts +212 -0
- package/src/tx.ts +180 -0
- package/src/txBuilder.ts +262 -0
- package/src/unsignedTx.ts +359 -0
- package/tsconfig.json +2 -1
- package/wordlists/english.json +2053 -0
- package/.nyc_output/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/processinfo/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/processinfo/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/processinfo/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/dist/address/cashaddr.d.ts +0 -78
- package/dist/address/cashaddr.d.ts.map +0 -1
- package/dist/address/cashaddr.js +0 -543
- package/dist/address/cashaddr.js.map +0 -1
- package/dist/cashaddr/cashaddr.d.ts +0 -23
- package/dist/cashaddr/cashaddr.d.ts.map +0 -1
- package/dist/cashaddr/cashaddr.js +0 -325
- package/dist/cashaddr/cashaddr.js.map +0 -1
- package/global.d.ts +0 -64
- package/test.log +0 -82
package/dist/hmac.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
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.hmacSha512 = exports.hmacSha256 = exports.Hmac = void 0;
|
|
7
|
+
const hash_1 = require("./hash");
|
|
8
|
+
class Hmac {
|
|
9
|
+
constructor(hashFactory, blockLength, key) {
|
|
10
|
+
this.oHash = hashFactory();
|
|
11
|
+
this.iHash = hashFactory();
|
|
12
|
+
const pad = new Uint8Array(blockLength);
|
|
13
|
+
if (key.length > blockLength) {
|
|
14
|
+
const hasher = hashFactory();
|
|
15
|
+
hasher.update(key);
|
|
16
|
+
key = hasher.finalize();
|
|
17
|
+
}
|
|
18
|
+
pad.set(key, 0);
|
|
19
|
+
for (let i = 0; i < pad.length; i++) {
|
|
20
|
+
pad[i] ^= 0x36;
|
|
21
|
+
}
|
|
22
|
+
this.iHash.update(pad);
|
|
23
|
+
for (let i = 0; i < pad.length; i++) {
|
|
24
|
+
pad[i] ^= 0x36 ^ 0x5c;
|
|
25
|
+
}
|
|
26
|
+
this.oHash.update(pad);
|
|
27
|
+
pad.fill(0);
|
|
28
|
+
}
|
|
29
|
+
update(data) {
|
|
30
|
+
this.iHash.update(data);
|
|
31
|
+
}
|
|
32
|
+
digest() {
|
|
33
|
+
this.oHash.update(this.iHash.finalize());
|
|
34
|
+
const hash = this.oHash.finalize();
|
|
35
|
+
this.iHash.free();
|
|
36
|
+
this.oHash.free();
|
|
37
|
+
return hash;
|
|
38
|
+
}
|
|
39
|
+
clone() {
|
|
40
|
+
const clone = Object.create(Object.getPrototypeOf(this), {});
|
|
41
|
+
clone.oHash = this.oHash.clone();
|
|
42
|
+
clone.iHash = this.iHash.clone();
|
|
43
|
+
return clone;
|
|
44
|
+
}
|
|
45
|
+
free() {
|
|
46
|
+
this.iHash.free();
|
|
47
|
+
this.oHash.free();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.Hmac = Hmac;
|
|
51
|
+
function hmacSha256(key, data) {
|
|
52
|
+
const hmac = new Hmac(hash_1.sha256Hasher, 64, key);
|
|
53
|
+
hmac.update(data);
|
|
54
|
+
return hmac.digest();
|
|
55
|
+
}
|
|
56
|
+
exports.hmacSha256 = hmacSha256;
|
|
57
|
+
function hmacSha512(key, data) {
|
|
58
|
+
const hmac = new Hmac(hash_1.sha512Hasher, 128, key);
|
|
59
|
+
hmac.update(data);
|
|
60
|
+
return hmac.digest();
|
|
61
|
+
}
|
|
62
|
+
exports.hmacSha512 = hmacSha512;
|
|
63
|
+
//# sourceMappingURL=hmac.js.map
|
package/dist/hmac.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../src/hmac.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,iCAA4D;AAE5D,MAAa,IAAI;IAIb,YACI,WAAyB,EACzB,WAAmB,EACnB,GAAe;QAEf,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAgB;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,MAAM,KAAK,GAAS,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI;QACA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACJ;AAvDD,oBAuDC;AAED,SAAgB,UAAU,CAAC,GAAe,EAAE,IAAgB;IACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,mBAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAJD,gCAIC;AAED,SAAgB,UAAU,CAAC,GAAe,EAAE,IAAgB;IACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,mBAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAJD,gCAIC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ 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 './
|
|
7
|
+
export * from './mnemonic.js';
|
|
8
|
+
export * from './hdwallet.js';
|
|
9
|
+
export * from './address/address.js';
|
|
8
10
|
export * from './sigHashType.js';
|
|
9
11
|
export * from './tx.js';
|
|
10
12
|
export * from './txBuilder.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,9 @@ __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("./
|
|
26
|
+
__exportStar(require("./mnemonic.js"), exports);
|
|
27
|
+
__exportStar(require("./hdwallet.js"), exports);
|
|
28
|
+
__exportStar(require("./address/address.js"), exports);
|
|
27
29
|
__exportStar(require("./sigHashType.js"), exports);
|
|
28
30
|
__exportStar(require("./tx.js"), exports);
|
|
29
31
|
__exportStar(require("./txBuilder.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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBrowser.d.ts","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,wBAAsB,QAAQ,
|
|
1
|
+
{"version":3,"file":"initBrowser.d.ts","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,wBAAsB,QAAQ,kBAW7B"}
|
package/dist/initBrowser.js
CHANGED
package/dist/initBrowser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBrowser.js","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,gIAAmE;AACnE,uCAAwC;AAExC,kDAAkD;AAC3C,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAA,mCAAU,GAAE,CAAC;IACnB,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"initBrowser.js","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,gIAAmE;AACnE,uCAAwC;AAExC,kDAAkD;AAC3C,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAA,mCAAU,GAAE,CAAC;IACnB,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,CAAC,CAAC;AACP,CAAC;AAXD,4BAWC"}
|
package/dist/initNodeJs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initNodeJs.d.ts","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,wBAAsB,QAAQ,
|
|
1
|
+
{"version":3,"file":"initNodeJs.d.ts","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,wBAAsB,QAAQ,kBAU7B"}
|
package/dist/initNodeJs.js
CHANGED
package/dist/initNodeJs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initNodeJs.js","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,oEAAsD;AACtD,uCAAwC;AAExC,qDAAqD;AAC9C,KAAK,UAAU,QAAQ;IAC1B,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"initNodeJs.js","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,oEAAsD;AACtD,uCAAwC;AAExC,qDAAqD;AAC9C,KAAK,UAAU,QAAQ;IAC1B,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,CAAC,CAAC;AACP,CAAC;AAVD,4BAUC"}
|
package/dist/io/bytes.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type Endian = 'LE' | 'BE';
|
|
2
|
+
export declare function endianToBool(endian?: Endian): boolean;
|
|
1
3
|
/** Reads ints/bytes from a Uint8Array. All integers are little-endian. */
|
|
2
4
|
export declare class Bytes {
|
|
3
5
|
data: Uint8Array;
|
|
@@ -8,11 +10,11 @@ export declare class Bytes {
|
|
|
8
10
|
/** Read a single byte */
|
|
9
11
|
readU8(): number;
|
|
10
12
|
/** Read 2-byte little-endian integer (uint16_t) */
|
|
11
|
-
readU16(): number;
|
|
13
|
+
readU16(endian?: Endian): number;
|
|
12
14
|
/** Read 4-byte little-endian integer (uint32_t) */
|
|
13
|
-
readU32(): number;
|
|
15
|
+
readU32(endian?: Endian): number;
|
|
14
16
|
/** Read 8-byte little-endian integer (uint64_t) */
|
|
15
|
-
readU64(): bigint;
|
|
17
|
+
readU64(endian?: Endian): bigint;
|
|
16
18
|
/** Read the given number of bytes as array */
|
|
17
19
|
readBytes(numBytes: number): Uint8Array;
|
|
18
20
|
private ensureSize;
|
package/dist/io/bytes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,qBAAa,KAAK;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,wDAAwD;gBACrC,IAAI,EAAE,UAAU;IAUnC,yBAAyB;IAClB,MAAM,IAAI,MAAM;IAOvB,mDAAmD;IAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,0EAA0E;AAC1E,qBAAa,KAAK;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,wDAAwD;gBACrC,IAAI,EAAE,UAAU;IAUnC,yBAAyB;IAClB,MAAM,IAAI,MAAM;IAOvB,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,8CAA8C;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAO9C,OAAO,CAAC,UAAU;CAQrB"}
|
package/dist/io/bytes.js
CHANGED
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Bytes = void 0;
|
|
6
|
+
exports.Bytes = exports.endianToBool = void 0;
|
|
7
|
+
function endianToBool(endian) {
|
|
8
|
+
if (!endian) {
|
|
9
|
+
// By default, little endian
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return endian === 'LE';
|
|
13
|
+
}
|
|
14
|
+
exports.endianToBool = endianToBool;
|
|
7
15
|
/** Reads ints/bytes from a Uint8Array. All integers are little-endian. */
|
|
8
16
|
class Bytes {
|
|
9
17
|
/** Create a new Bytes that reads from the given data */
|
|
@@ -20,23 +28,23 @@ class Bytes {
|
|
|
20
28
|
return result;
|
|
21
29
|
}
|
|
22
30
|
/** Read 2-byte little-endian integer (uint16_t) */
|
|
23
|
-
readU16() {
|
|
31
|
+
readU16(endian) {
|
|
24
32
|
this.ensureSize(2);
|
|
25
|
-
const result = this.view.getUint16(this.idx,
|
|
33
|
+
const result = this.view.getUint16(this.idx, endianToBool(endian));
|
|
26
34
|
this.idx += 2;
|
|
27
35
|
return result;
|
|
28
36
|
}
|
|
29
37
|
/** Read 4-byte little-endian integer (uint32_t) */
|
|
30
|
-
readU32() {
|
|
38
|
+
readU32(endian) {
|
|
31
39
|
this.ensureSize(4);
|
|
32
|
-
const result = this.view.getUint32(this.idx,
|
|
40
|
+
const result = this.view.getUint32(this.idx, endianToBool(endian));
|
|
33
41
|
this.idx += 4;
|
|
34
42
|
return result;
|
|
35
43
|
}
|
|
36
44
|
/** Read 8-byte little-endian integer (uint64_t) */
|
|
37
|
-
readU64() {
|
|
45
|
+
readU64(endian) {
|
|
38
46
|
this.ensureSize(8);
|
|
39
|
-
const result = this.view.getBigUint64(this.idx,
|
|
47
|
+
const result = this.view.getBigUint64(this.idx, endianToBool(endian));
|
|
40
48
|
this.idx += 8;
|
|
41
49
|
return result;
|
|
42
50
|
}
|
package/dist/io/bytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAItE,SAAgB,YAAY,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,4BAA4B;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,KAAK,IAAI,CAAC;AAC3B,CAAC;AAND,oCAMC;AAED,0EAA0E;AAC1E,MAAa,KAAK;IAKd,wDAAwD;IACxD,YAAmB,IAAgB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CACvB,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IAClB,MAAM;QACT,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,8CAA8C;IACvC,SAAS,CAAC,QAAgB;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;QACrB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,UAAkB;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;YAC3C,MAAM,CACF,mCAAmC,UAAU,gBAAgB;gBAC7D,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,eAAe,CAC/D,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAhED,sBAgEC"}
|
package/dist/io/writer.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import { Endian } from './bytes.js';
|
|
1
2
|
import { Int } from './int.js';
|
|
2
3
|
/** Writer interface to abstract over writing Bitcoin objects */
|
|
3
4
|
export interface Writer {
|
|
4
5
|
/** Write a single byte */
|
|
5
6
|
putU8(value: Int): void;
|
|
6
7
|
/** Write a 2-byte little-endian integer (uint16_t) */
|
|
7
|
-
putU16(value: Int): void;
|
|
8
|
+
putU16(value: Int, endian?: Endian): void;
|
|
8
9
|
/** Write a 4-byte little-endian integer (uint32_t) */
|
|
9
|
-
putU32(value: Int): void;
|
|
10
|
+
putU32(value: Int, endian?: Endian): void;
|
|
10
11
|
/** Write an 8-byte little-endian integer (uint64_t) */
|
|
11
|
-
putU64(value: Int): void;
|
|
12
|
+
putU64(value: Int, endian?: Endian): void;
|
|
12
13
|
/** Write the given bytes */
|
|
13
14
|
putBytes(bytes: Uint8Array): void;
|
|
14
15
|
}
|
package/dist/io/writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/io/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,gEAAgE;AAChE,MAAM,WAAW,MAAM;IACnB,0BAA0B;IAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/io/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,gEAAgE;AAChE,MAAM,WAAW,MAAM;IACnB,0BAA0B;IAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACrC"}
|
package/dist/io/writerbytes.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Endian } from './bytes.js';
|
|
1
2
|
import { Int } from './int.js';
|
|
2
3
|
import { Writer } from './writer.js';
|
|
3
4
|
/**
|
|
@@ -15,11 +16,11 @@ export declare class WriterBytes implements Writer {
|
|
|
15
16
|
/** Write a single byte */
|
|
16
17
|
putU8(value: Int): void;
|
|
17
18
|
/** Write a 2-byte little-endian integer (uint16_t) */
|
|
18
|
-
putU16(value: Int): void;
|
|
19
|
+
putU16(value: Int, endian?: Endian): void;
|
|
19
20
|
/** Write a 4-byte little-endian integer (uint32_t) */
|
|
20
|
-
putU32(value: Int): void;
|
|
21
|
+
putU32(value: Int, endian?: Endian): void;
|
|
21
22
|
/** Write an 8-byte little-endian integer (uint64_t) */
|
|
22
|
-
putU64(value: Int): void;
|
|
23
|
+
putU64(value: Int, endian?: Endian): void;
|
|
23
24
|
/** Write the given bytes */
|
|
24
25
|
putBytes(bytes: Uint8Array): void;
|
|
25
26
|
private ensureSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writerbytes.d.ts","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;IAKI;AACJ,qBAAa,WAAY,YAAW,MAAM;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,iEAAiE;gBAC9C,MAAM,EAAE,MAAM;IAUjC,0BAA0B;IACnB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS9B,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"writerbytes.d.ts","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;IAKI;AACJ,qBAAa,WAAY,YAAW,MAAM;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,iEAAiE;gBAC9C,MAAM,EAAE,MAAM;IAUjC,0BAA0B;IACnB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS9B,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,uDAAuD;IAChD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMxC,OAAO,CAAC,UAAU;CASrB"}
|
package/dist/io/writerbytes.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.WriterBytes = void 0;
|
|
7
|
+
const bytes_js_1 = require("./bytes.js");
|
|
7
8
|
/**
|
|
8
9
|
* Implementation of `Writer` which writes to an array of pre-allocated size.
|
|
9
10
|
* It's intended to be used in unison with `WriterLength`, which first finds
|
|
@@ -27,30 +28,30 @@ class WriterBytes {
|
|
|
27
28
|
this.idx++;
|
|
28
29
|
}
|
|
29
30
|
/** Write a 2-byte little-endian integer (uint16_t) */
|
|
30
|
-
putU16(value) {
|
|
31
|
+
putU16(value, endian) {
|
|
31
32
|
if (value < 0 || value > 0xffff) {
|
|
32
33
|
throw new Error(`Cannot fit ${value} into a u16`);
|
|
33
34
|
}
|
|
34
35
|
this.ensureSize(2);
|
|
35
|
-
this.view.setUint16(this.idx, Number(value),
|
|
36
|
+
this.view.setUint16(this.idx, Number(value), (0, bytes_js_1.endianToBool)(endian));
|
|
36
37
|
this.idx += 2;
|
|
37
38
|
}
|
|
38
39
|
/** Write a 4-byte little-endian integer (uint32_t) */
|
|
39
|
-
putU32(value) {
|
|
40
|
+
putU32(value, endian) {
|
|
40
41
|
if (value < 0 || value > 0xffffffff) {
|
|
41
42
|
throw new Error(`Cannot fit ${value} into a u32`);
|
|
42
43
|
}
|
|
43
44
|
this.ensureSize(4);
|
|
44
|
-
this.view.setUint32(this.idx, Number(value),
|
|
45
|
+
this.view.setUint32(this.idx, Number(value), (0, bytes_js_1.endianToBool)(endian));
|
|
45
46
|
this.idx += 4;
|
|
46
47
|
}
|
|
47
48
|
/** Write an 8-byte little-endian integer (uint64_t) */
|
|
48
|
-
putU64(value) {
|
|
49
|
+
putU64(value, endian) {
|
|
49
50
|
if (value < 0 || value > 0xffffffffffffffffn) {
|
|
50
51
|
throw new Error(`Cannot fit ${value} into a u64`);
|
|
51
52
|
}
|
|
52
53
|
this.ensureSize(8);
|
|
53
|
-
this.view.setBigUint64(this.idx, BigInt(value),
|
|
54
|
+
this.view.setBigUint64(this.idx, BigInt(value), (0, bytes_js_1.endianToBool)(endian));
|
|
54
55
|
this.idx += 8;
|
|
55
56
|
}
|
|
56
57
|
/** Write the given bytes */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writerbytes.js","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"writerbytes.js","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Endian } from './bytes.js';
|
|
1
2
|
import { Int } from './int.js';
|
|
2
3
|
import { Writer } from './writer.js';
|
|
3
4
|
/**
|
|
@@ -10,11 +11,11 @@ export declare class WriterLength implements Writer {
|
|
|
10
11
|
/** Write a single byte */
|
|
11
12
|
putU8(_value: Int): void;
|
|
12
13
|
/** Write a 2-byte little-endian integer (uint16_t) */
|
|
13
|
-
putU16(_value: Int): void;
|
|
14
|
+
putU16(_value: Int, _endian?: Endian): void;
|
|
14
15
|
/** Write a 4-byte little-endian integer (uint32_t) */
|
|
15
|
-
putU32(_value: Int): void;
|
|
16
|
+
putU32(_value: Int, _endian?: Endian): void;
|
|
16
17
|
/** Write an 8-byte little-endian integer (uint64_t) */
|
|
17
|
-
putU64(_value: Int): void;
|
|
18
|
+
putU64(_value: Int, _endian?: Endian): void;
|
|
18
19
|
/** Write the given bytes */
|
|
19
20
|
putBytes(bytes: Uint8Array): void;
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writerlength.d.ts","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;IAGI;AACJ,qBAAa,YAAa,YAAW,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC;;IAMtB,0BAA0B;IACnB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAI/B,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"writerlength.d.ts","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;IAGI;AACJ,qBAAa,YAAa,YAAW,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC;;IAMtB,0BAA0B;IACnB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAI/B,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,uDAAuD;IAChD,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAG3C"}
|
package/dist/io/writerlength.js
CHANGED
|
@@ -17,15 +17,15 @@ class WriterLength {
|
|
|
17
17
|
this.length++;
|
|
18
18
|
}
|
|
19
19
|
/** Write a 2-byte little-endian integer (uint16_t) */
|
|
20
|
-
putU16(_value) {
|
|
20
|
+
putU16(_value, _endian) {
|
|
21
21
|
this.length += 2;
|
|
22
22
|
}
|
|
23
23
|
/** Write a 4-byte little-endian integer (uint32_t) */
|
|
24
|
-
putU32(_value) {
|
|
24
|
+
putU32(_value, _endian) {
|
|
25
25
|
this.length += 4;
|
|
26
26
|
}
|
|
27
27
|
/** Write an 8-byte little-endian integer (uint64_t) */
|
|
28
|
-
putU64(_value) {
|
|
28
|
+
putU64(_value, _endian) {
|
|
29
29
|
this.length += 8;
|
|
30
30
|
}
|
|
31
31
|
/** Write the given bytes */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writerlength.js","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"writerlength.js","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAMtE;;;IAGI;AACJ,MAAa,YAAY;IAGrB;QACI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,0BAA0B;IACnB,KAAK,CAAC,MAAW;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,4BAA4B;IACrB,QAAQ,CAAC,KAAiB;QAC7B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ;AA/BD,oCA+BC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Word list to generate a seed phrase. */
|
|
2
|
+
export interface WordList {
|
|
3
|
+
/** Word separator of the seed phrase (Japanese has \u3000 as space) */
|
|
4
|
+
separator: string;
|
|
5
|
+
/** Words in the word list to generate a mnemonic phrase */
|
|
6
|
+
words: string[];
|
|
7
|
+
}
|
|
8
|
+
/** Derive the mnemonic from entropy */
|
|
9
|
+
export declare function entropyToMnemonic(entropy: Uint8Array, wordlist: WordList): string;
|
|
10
|
+
/** Recover the entropy from the mnemonic */
|
|
11
|
+
export declare function mnemonicToEntropy(phrase: string, wordlist: string[]): Uint8Array;
|
|
12
|
+
/** Derive the seed bytes from the mnemonic */
|
|
13
|
+
export declare function mnemonicToSeed(phrase: string, password?: string): Uint8Array;
|
|
14
|
+
//# sourceMappingURL=mnemonic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../src/mnemonic.ts"],"names":[],"mappings":"AA2BA,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACrB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,GACnB,MAAM,CAkCR;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACnB,UAAU,CA4DZ;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAU5E"}
|
package/dist/mnemonic.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
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.mnemonicToSeed = exports.mnemonicToEntropy = exports.entropyToMnemonic = void 0;
|
|
7
|
+
const hash_1 = require("./hash");
|
|
8
|
+
const indexNodeJs_1 = require("./indexNodeJs");
|
|
9
|
+
const pbkdf2_1 = require("./pbkdf2");
|
|
10
|
+
const BITS_PER_BYTE = 8;
|
|
11
|
+
const BITS_PER_WORD = 11;
|
|
12
|
+
const BITS_PER_CHECKSUM_BIT = 32;
|
|
13
|
+
// Calculate how many bits there are in the mnemonic
|
|
14
|
+
function calcNumChecksumBits(numEntropyBytes) {
|
|
15
|
+
return (numEntropyBytes * BITS_PER_BYTE) / BITS_PER_CHECKSUM_BIT;
|
|
16
|
+
}
|
|
17
|
+
// Normalize according to unicode standard
|
|
18
|
+
function normalize(str) {
|
|
19
|
+
return (str || '').normalize('NFKD');
|
|
20
|
+
}
|
|
21
|
+
// Turn the password into a salt for seed generation
|
|
22
|
+
function salt(password) {
|
|
23
|
+
return 'mnemonic' + (password || '');
|
|
24
|
+
}
|
|
25
|
+
/** Derive the mnemonic from entropy */
|
|
26
|
+
function entropyToMnemonic(entropy, wordlist) {
|
|
27
|
+
if (entropy.length < 16 || entropy.length > 32) {
|
|
28
|
+
throw new TypeError('Entropy must be between 16 and 32 bytes long');
|
|
29
|
+
}
|
|
30
|
+
if (entropy.length % 4 !== 0) {
|
|
31
|
+
throw new TypeError('Entropy length must be divisible by 4');
|
|
32
|
+
}
|
|
33
|
+
const checksum = (0, hash_1.sha256)(entropy);
|
|
34
|
+
const data = new Uint8Array(entropy.length + checksum.length);
|
|
35
|
+
data.set(entropy, 0);
|
|
36
|
+
data.set(checksum, entropy.length);
|
|
37
|
+
let nextBits = 0;
|
|
38
|
+
let numBits = 0;
|
|
39
|
+
let numLeftoverBits = entropy.length * BITS_PER_BYTE + calcNumChecksumBits(entropy.length);
|
|
40
|
+
const words = [];
|
|
41
|
+
for (const byte of data) {
|
|
42
|
+
nextBits = (nextBits << BITS_PER_BYTE) | byte;
|
|
43
|
+
numBits += BITS_PER_BYTE;
|
|
44
|
+
if (numBits >= BITS_PER_WORD) {
|
|
45
|
+
const wordIdx = nextBits >> (numBits - BITS_PER_WORD);
|
|
46
|
+
words.push(wordlist.words[wordIdx]);
|
|
47
|
+
if (numLeftoverBits <= BITS_PER_WORD) {
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
numBits -= BITS_PER_WORD;
|
|
51
|
+
numLeftoverBits -= BITS_PER_WORD;
|
|
52
|
+
nextBits &= 0x7ff >> (BITS_PER_WORD - numBits);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return words.join(wordlist.separator);
|
|
56
|
+
}
|
|
57
|
+
exports.entropyToMnemonic = entropyToMnemonic;
|
|
58
|
+
/** Recover the entropy from the mnemonic */
|
|
59
|
+
function mnemonicToEntropy(phrase, wordlist) {
|
|
60
|
+
const words = normalize(phrase).split(' ');
|
|
61
|
+
if (words.length < 12 || words.length > 24) {
|
|
62
|
+
throw new Error('Number of words in mnemonic phrase must be between 12 and 24');
|
|
63
|
+
}
|
|
64
|
+
if (words.length % 3 !== 0) {
|
|
65
|
+
throw new Error('Number of words in mnemonic phrase must be divisible by 3');
|
|
66
|
+
}
|
|
67
|
+
const wordIndices = words.map(word => {
|
|
68
|
+
const idx = wordlist.indexOf(word);
|
|
69
|
+
if (idx === -1) {
|
|
70
|
+
throw new Error('Invalid mnemonic phrase word: ' + word);
|
|
71
|
+
}
|
|
72
|
+
return idx;
|
|
73
|
+
});
|
|
74
|
+
const numEntropyBytes = (wordIndices.length / 3) * 4;
|
|
75
|
+
let nextBits = 0;
|
|
76
|
+
let numBits = 0;
|
|
77
|
+
let idx = 0;
|
|
78
|
+
const entropy = new Uint8Array(numEntropyBytes);
|
|
79
|
+
let checksum = 0;
|
|
80
|
+
for (const wordIdx of wordIndices) {
|
|
81
|
+
nextBits = (nextBits << BITS_PER_WORD) | wordIdx;
|
|
82
|
+
numBits += BITS_PER_WORD;
|
|
83
|
+
while (numBits >= BITS_PER_BYTE) {
|
|
84
|
+
const byte = nextBits >> (numBits - BITS_PER_BYTE);
|
|
85
|
+
if (idx < entropy.length) {
|
|
86
|
+
entropy[idx] = byte;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
checksum = (checksum << BITS_PER_BYTE) | byte;
|
|
90
|
+
}
|
|
91
|
+
idx++;
|
|
92
|
+
numBits -= BITS_PER_BYTE;
|
|
93
|
+
nextBits &= 0xffff >> (16 - numBits);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (numBits != 0) {
|
|
97
|
+
checksum = (checksum << BITS_PER_BYTE) | nextBits;
|
|
98
|
+
}
|
|
99
|
+
const entropyHash = (0, hash_1.sha256)(entropy);
|
|
100
|
+
const numChecksumBits = calcNumChecksumBits(numEntropyBytes);
|
|
101
|
+
const expectedChecksum = entropyHash[0] >> (BITS_PER_BYTE - numChecksumBits);
|
|
102
|
+
if (checksum != expectedChecksum) {
|
|
103
|
+
const expected = expectedChecksum.toString(16);
|
|
104
|
+
const actual = checksum.toString(16);
|
|
105
|
+
throw new Error(`Invalid checksum: expected ${expected}, got ${actual}`);
|
|
106
|
+
}
|
|
107
|
+
return entropy;
|
|
108
|
+
}
|
|
109
|
+
exports.mnemonicToEntropy = mnemonicToEntropy;
|
|
110
|
+
/** Derive the seed bytes from the mnemonic */
|
|
111
|
+
function mnemonicToSeed(phrase, password) {
|
|
112
|
+
return (0, pbkdf2_1.pbkdf2)({
|
|
113
|
+
hashFactory: hash_1.sha512Hasher,
|
|
114
|
+
password: (0, indexNodeJs_1.strToBytes)(normalize(phrase)),
|
|
115
|
+
salt: (0, indexNodeJs_1.strToBytes)(salt(normalize(password))),
|
|
116
|
+
blockLength: 128,
|
|
117
|
+
outputLength: 64,
|
|
118
|
+
dkLen: 64,
|
|
119
|
+
iterations: 2048,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
exports.mnemonicToSeed = mnemonicToSeed;
|
|
123
|
+
//# sourceMappingURL=mnemonic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../src/mnemonic.ts"],"names":[],"mappings":"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"}
|
package/dist/pbkdf2.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Hasher } from './hash';
|
|
2
|
+
export declare function pbkdf2(params: {
|
|
3
|
+
hashFactory: () => Hasher;
|
|
4
|
+
password: Uint8Array;
|
|
5
|
+
salt: Uint8Array;
|
|
6
|
+
blockLength: number;
|
|
7
|
+
outputLength: number;
|
|
8
|
+
dkLen: number;
|
|
9
|
+
iterations: number;
|
|
10
|
+
}): Uint8Array;
|
|
11
|
+
//# sourceMappingURL=pbkdf2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../src/pbkdf2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,wBAAgB,MAAM,CAAC,MAAM,EAAE;IAC3B,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CAoCb"}
|
package/dist/pbkdf2.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
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.pbkdf2 = void 0;
|
|
7
|
+
const hmac_1 = require("./hmac");
|
|
8
|
+
function pbkdf2(params) {
|
|
9
|
+
const arr = new Uint8Array(4);
|
|
10
|
+
const view = new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
11
|
+
const result = new Uint8Array(params.dkLen);
|
|
12
|
+
const prf = new hmac_1.Hmac(params.hashFactory, params.blockLength, params.password);
|
|
13
|
+
const prfSalt = prf.clone();
|
|
14
|
+
prfSalt.update(params.salt);
|
|
15
|
+
for (let idx = 1, pos = 0; pos < params.dkLen; idx++, pos += params.outputLength) {
|
|
16
|
+
const ti = result.subarray(pos, pos + params.outputLength);
|
|
17
|
+
view.setInt32(0, idx, false);
|
|
18
|
+
const prfSaltClone = prfSalt.clone();
|
|
19
|
+
prfSaltClone.update(arr);
|
|
20
|
+
let u = prfSaltClone.digest();
|
|
21
|
+
ti.set(u.subarray(0, ti.length));
|
|
22
|
+
for (let ui = 1; ui < params.iterations; ui++) {
|
|
23
|
+
const prfClone = prf.clone();
|
|
24
|
+
prfClone.update(u);
|
|
25
|
+
u = prfClone.digest();
|
|
26
|
+
for (let i = 0; i < ti.length; i++) {
|
|
27
|
+
ti[i] ^= u[i];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
prf.free();
|
|
32
|
+
prfSalt.free();
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.pbkdf2 = pbkdf2;
|
|
36
|
+
//# sourceMappingURL=pbkdf2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["../src/pbkdf2.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAGtE,iCAA8B;AAE9B,SAAgB,MAAM,CAAC,MAQtB;IACG,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,WAAI,CAChB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,QAAQ,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,KACI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EACpB,GAAG,GAAG,MAAM,CAAC,KAAK,EAClB,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,EACnC,CAAC;QACC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,MAAM,CAAC;AAClB,CAAC;AA5CD,wBA4CC"}
|
package/dist/script.d.ts
CHANGED
|
@@ -44,6 +44,10 @@ export declare class Script {
|
|
|
44
44
|
* Matches CScript::IsPayToScriptHash in /src/script/script.h.
|
|
45
45
|
**/
|
|
46
46
|
isP2sh(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Return hex string of this Script's bytecode
|
|
49
|
+
*/
|
|
50
|
+
toHex(): string;
|
|
47
51
|
/** Build a P2SH script for the given script hash */
|
|
48
52
|
static p2sh(scriptHash: Uint8Array): Script;
|
|
49
53
|
/** Build a P2PKH script for the given public key hash */
|