@exodus/bip322-js 1.1.0-rc.0 → 1.2.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/CHANGELOG.md ADDED
@@ -0,0 +1,57 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [1.1.0-rc.0](https://github.com/ExodusMovement/exodus-hydra.git/compare/@exodus/bip322-js@1.1.0-exodus.6...@exodus/bip322-js@1.1.0-rc.0) (2024-10-11)
7
+
8
+ **Note:** Version bump only for package @exodus/bip322-js
9
+
10
+ # Changelog
11
+
12
+ All notable changes to this project will be documented in this file.
13
+
14
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
15
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
16
+
17
+ ## [Current]
18
+
19
+ ### Changed
20
+
21
+ - Bumped `@exodus/bitcoinjs-lib` fork
22
+ - Removed ecc initialization of `@exodus/bitcoinjs-lib`
23
+
24
+ ## [1.1.0-exodus.6] - 2024-07-22
25
+
26
+ ### Changed
27
+
28
+ - Swap out with `@exodus/bitcoinjs-lib` fork
29
+ - Swap out with `@exodus/secp256k1` fork
30
+
31
+ ## [1.1.0-exodus.4] - 2023-10-31
32
+
33
+ ### Changed
34
+
35
+ - Sign with `SIGHASH_DEFAULT` instead of `SIGHASH_ALL` for non-spec compliant compatibility.
36
+
37
+ ## [1.1.0] - 2023-08-20
38
+
39
+ ### Added
40
+
41
+ - Added support for BIP-137 legacy signature verification against P2SH-P2WPKH, P2WPKH, and single-key-spend P2TR addresses.
42
+
43
+ ## [1.0.3] - 2023-06-29
44
+
45
+ ### Fixed
46
+
47
+ - Fixed ECC library uninitialized error during taproot signature verification.
48
+
49
+ ## [1.0.2] - 2023-06-28
50
+
51
+ Initial release.
52
+
53
+ ### Added
54
+
55
+ - Generate raw toSpend and toSign BIP-322 transactions via the BIP322 class.
56
+ - Sign a BIP-322 signature using a private key via the Signer class.
57
+ - Verify a simple BIP-322 signature via the Verifier class.
package/dist/BIP322.js CHANGED
@@ -1,7 +1,7 @@
1
- import createHash from "create-hash";
1
+ import createHash from 'create-hash';
2
2
  import * as bitcoin from '@exodus/bitcoinjs';
3
3
  class BIP322 {
4
- static TAG = Buffer.from("BIP0322-signed-message");
4
+ static TAG = Buffer.from('BIP0322-signed-message');
5
5
  static hashMessage(message) {
6
6
  const tagHasher = createHash('sha256');
7
7
  tagHasher.update(this.TAG);
@@ -10,8 +10,7 @@ class BIP322 {
10
10
  messageHasher.update(tagHash);
11
11
  messageHasher.update(tagHash);
12
12
  messageHasher.update(Buffer.from(message));
13
- const messageHash = messageHasher.digest();
14
- return messageHash;
13
+ return messageHasher.digest();
15
14
  }
16
15
  static buildToSpendTx(message, scriptPublicKey) {
17
16
  const psbt = new bitcoin.Psbt();
@@ -24,18 +23,18 @@ class BIP322 {
24
23
  scriptSig.set(messageHash, scriptSigPartOne.length);
25
24
  psbt.addInput({
26
25
  hash: '0'.repeat(64),
27
- index: 0xFFFFFFFF,
26
+ index: 0xff_ff_ff_ff,
28
27
  sequence: 0,
29
28
  finalScriptSig: Buffer.from(scriptSig),
30
- witnessScript: Buffer.from([])
29
+ witnessScript: Buffer.from([]),
31
30
  });
32
31
  psbt.addOutput({
33
32
  value: 0,
34
- script: scriptPublicKey
33
+ script: scriptPublicKey,
35
34
  });
36
35
  return psbt.extractTransaction();
37
36
  }
38
- static buildToSignTx(toSpendTxId, witnessScript, isRedeemScript = false, tapInternalKey = undefined) {
37
+ static buildToSignTx(toSpendTxId, witnessScript, isRedeemScript = false, tapInternalKey) {
39
38
  const psbt = new bitcoin.Psbt();
40
39
  psbt.setVersion(0);
41
40
  psbt.setLocktime(0);
@@ -45,33 +44,31 @@ class BIP322 {
45
44
  sequence: 0,
46
45
  witnessUtxo: {
47
46
  script: witnessScript,
48
- value: 0
49
- }
47
+ value: 0,
48
+ },
50
49
  });
51
50
  if (isRedeemScript) {
52
51
  psbt.updateInput(0, {
53
- redeemScript: witnessScript
52
+ redeemScript: witnessScript,
54
53
  });
55
54
  }
56
55
  if (tapInternalKey) {
57
56
  psbt.updateInput(0, {
58
- tapInternalKey: tapInternalKey
57
+ tapInternalKey,
59
58
  });
60
59
  }
61
60
  psbt.addOutput({
62
61
  value: 0,
63
- script: Buffer.from([0x6a])
62
+ script: Buffer.from([0x6a]),
64
63
  });
65
64
  return psbt;
66
65
  }
67
66
  static encodeWitness(signedPsbt) {
68
- const witness = signedPsbt.data.inputs[0].finalScriptWitness;
67
+ const witness = signedPsbt.data.inputs[0]?.finalScriptWitness;
69
68
  if (witness) {
70
69
  return witness.toString('base64');
71
70
  }
72
- else {
73
- throw new Error('Cannot encode empty witness stack.');
74
- }
71
+ throw new Error('Cannot encode empty witness stack.');
75
72
  }
76
73
  }
77
74
  export default BIP322;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BIP322.js","sourceRoot":"","sources":["../src/BIP322.ts"],"names":[],"mappings":"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"}
package/dist/Signer.js CHANGED
@@ -1,5 +1,5 @@
1
- import BIP322 from './BIP322';
2
- import { Address } from './helpers';
1
+ import BIP322 from './BIP322.js';
2
+ import { Address } from './helpers/index.js';
3
3
  import * as bitcoin from '@exodus/bitcoinjs';
4
4
  import * as bitcoinMessage from 'bitcoinjs-message';
5
5
  class Signer {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":"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"}
package/dist/Verifier.js CHANGED
@@ -1,9 +1,9 @@
1
- import BIP322 from "./BIP322";
2
- import { Address, BIP137 } from "./helpers";
1
+ import BIP322 from './BIP322.js';
2
+ import { Address, BIP137 } from './helpers/index.js';
3
3
  import * as bitcoin from '@exodus/bitcoinjs';
4
4
  import ecc from '@exodus/bitcoinerlab-secp256k1';
5
5
  import * as bitcoinMessage from 'bitcoinjs-message';
6
- import { decodeScriptSignature } from './bitcoinjs';
6
+ import { decodeScriptSignature } from './bitcoinjs/index.js';
7
7
  class Verifier {
8
8
  static verifySignature(signerAddress, message, signatureBase64) {
9
9
  if (Address.isP2PKH(signerAddress) || BIP137.isBIP137Signature(signatureBase64)) {
@@ -13,7 +13,7 @@ class Verifier {
13
13
  const toSpendTx = BIP322.buildToSpendTx(message, scriptPubKey);
14
14
  const toSignTx = BIP322.buildToSignTx(toSpendTx.getId(), scriptPubKey);
15
15
  toSignTx.updateInput(0, {
16
- finalScriptWitness: Buffer.from(signatureBase64, 'base64')
16
+ finalScriptWitness: Buffer.from(signatureBase64, 'base64'),
17
17
  });
18
18
  const witness = toSignTx.extractTransaction().ins[0].witness;
19
19
  const encodedSignature = witness[0];
@@ -40,7 +40,7 @@ class Verifier {
40
40
  }
41
41
  return ecc.verify(hashToSign, publicKey, signature);
42
42
  }
43
- else if (Address.isP2TR(signerAddress)) {
43
+ if (Address.isP2TR(signerAddress)) {
44
44
  if (!Address.isSingleKeyP2TRWitness(witness)) {
45
45
  throw new Error('BIP-322 verification from script-spend P2TR is unsupported.');
46
46
  }
@@ -60,58 +60,64 @@ class Verifier {
60
60
  }
61
61
  return ecc.verifySchnorr(hashToSign, publicKey, signature);
62
62
  }
63
- else {
64
- throw new Error('Only P2WPKH, P2SH-P2WPKH, and single-key-spend P2TR BIP-322 verification is supported. Unsupported address is provided.');
65
- }
63
+ throw new Error('Only P2WPKH, P2SH-P2WPKH, and single-key-spend P2TR BIP-322 verification is supported. Unsupported address is provided.');
66
64
  }
67
65
  static verifyBIP137Signature(signerAddress, message, signatureBase64) {
68
66
  if (Address.isP2PKH(signerAddress)) {
69
67
  return bitcoinMessage.verify(message, signerAddress, signatureBase64);
70
68
  }
71
- else {
72
- const publicKeySigned = BIP137.derivePubKey(message, signatureBase64);
73
- const legacySigningAddress = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2pkh').mainnet;
74
- if (Address.isP2SH(signerAddress)) {
75
- const p2shAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2sh-p2wpkh');
76
- if (p2shAddressDerived.mainnet !== signerAddress && p2shAddressDerived.testnet !== signerAddress) {
77
- return false;
78
- }
79
- }
80
- else if (Address.isP2WPKH(signerAddress)) {
81
- const p2wpkhAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2wpkh');
82
- if (p2wpkhAddressDerived.mainnet !== signerAddress && p2wpkhAddressDerived.testnet !== signerAddress) {
83
- return false;
84
- }
69
+ const publicKeySigned = BIP137.derivePubKey(message, signatureBase64);
70
+ const legacySigningAddress = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2pkh').mainnet;
71
+ if (Address.isP2SH(signerAddress)) {
72
+ const p2shAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2sh-p2wpkh');
73
+ if (p2shAddressDerived.mainnet !== signerAddress &&
74
+ p2shAddressDerived.testnet !== signerAddress) {
75
+ return false;
85
76
  }
86
- else if (Address.isP2TR(signerAddress)) {
87
- const p2trAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2tr');
88
- if (p2trAddressDerived.mainnet !== signerAddress && p2trAddressDerived.testnet !== signerAddress) {
89
- return false;
90
- }
77
+ }
78
+ else if (Address.isP2WPKH(signerAddress)) {
79
+ const p2wpkhAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2wpkh');
80
+ if (p2wpkhAddressDerived.mainnet !== signerAddress &&
81
+ p2wpkhAddressDerived.testnet !== signerAddress) {
82
+ return false;
91
83
  }
92
- else {
84
+ }
85
+ else if (Address.isP2TR(signerAddress)) {
86
+ const p2trAddressDerived = Address.convertPubKeyIntoAddress(publicKeySigned, 'p2tr');
87
+ if (p2trAddressDerived.mainnet !== signerAddress &&
88
+ p2trAddressDerived.testnet !== signerAddress) {
93
89
  return false;
94
90
  }
95
- return bitcoinMessage.verify(message, legacySigningAddress, signatureBase64);
96
91
  }
92
+ else {
93
+ return false;
94
+ }
95
+ return bitcoinMessage.verify(message, legacySigningAddress, signatureBase64);
97
96
  }
98
97
  static getHashForSigP2WPKH(toSignTx) {
99
98
  const signingScript = bitcoin.payments.p2pkh({
100
- hash: toSignTx.data.inputs[0].witnessUtxo.script.subarray(2)
99
+ hash: toSignTx.data.inputs[0].witnessUtxo.script.subarray(2),
101
100
  }).output;
102
- return toSignTx.extractTransaction().hashForWitnessV0(0, signingScript, 0, bitcoin.Transaction.SIGHASH_ALL);
101
+ return toSignTx
102
+ .extractTransaction()
103
+ .hashForWitnessV0(0, signingScript, 0, bitcoin.Transaction.SIGHASH_ALL);
103
104
  }
104
105
  static getHashForSigP2SHInP2WPKH(toSignTx, hashedPubkey) {
105
106
  const signingScript = bitcoin.payments.p2pkh({
106
- hash: hashedPubkey
107
+ hash: hashedPubkey,
107
108
  }).output;
108
- return toSignTx.extractTransaction().hashForWitnessV0(0, signingScript, 0, bitcoin.Transaction.SIGHASH_ALL);
109
+ return toSignTx
110
+ .extractTransaction()
111
+ .hashForWitnessV0(0, signingScript, 0, bitcoin.Transaction.SIGHASH_ALL);
109
112
  }
110
113
  static getHashForSigP2TR(toSignTx, hashType) {
111
- if (hashType !== bitcoin.Transaction.SIGHASH_DEFAULT && hashType !== bitcoin.Transaction.SIGHASH_ALL) {
114
+ if (hashType !== bitcoin.Transaction.SIGHASH_DEFAULT &&
115
+ hashType !== bitcoin.Transaction.SIGHASH_ALL) {
112
116
  throw new Error('Invalid SIGHASH used in signature. Must be either SIGHASH_ALL or SIGHASH_DEFAULT.');
113
117
  }
114
- return toSignTx.extractTransaction().hashForWitnessV1(0, [toSignTx.data.inputs[0].witnessUtxo.script], [0], hashType);
118
+ return toSignTx
119
+ .extractTransaction()
120
+ .hashForWitnessV1(0, [toSignTx.data.inputs[0].witnessUtxo.script], [0], hashType);
115
121
  }
116
122
  }
117
123
  export default Verifier;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Verifier.js","sourceRoot":"","sources":["../src/Verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DecodeScriptSignature.js","sourceRoot":"","sources":["../../src/bitcoinjs/DecodeScriptSignature.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACpD,MAAM,WAAW,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAA;IACpC,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,QAAQ,CAAC,CAAA;IAEzF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAE3C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;AAChC,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC1E,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAChE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACtF,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;IACvB,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACtE,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAE,CAAA;IAC9B,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACnD,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC7E,IAAI,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC7D,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAE,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpE,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAE,GAAG,IAAI,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAE/C,OAAO;QACL,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;KAC1B,CAAA;AACH,CAAC"}
@@ -1,2 +1 @@
1
- import { decodeScriptSignature } from "./DecodeScriptSignature";
2
- export { decodeScriptSignature };
1
+ export { decodeScriptSignature } from './DecodeScriptSignature.js';
@@ -1,3 +1,2 @@
1
- import { decodeScriptSignature } from "./DecodeScriptSignature";
2
- export { decodeScriptSignature };
1
+ export { decodeScriptSignature } from './DecodeScriptSignature.js';
3
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bitcoinjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -7,8 +7,8 @@ declare class Address {
7
7
  static isSingleKeyP2TRWitness(witness: Buffer[]): boolean;
8
8
  static convertAdressToScriptPubkey(address: string): Buffer;
9
9
  static convertPubKeyIntoAddress(publicKey: Buffer, addressType: 'p2pkh' | 'p2sh-p2wpkh' | 'p2wpkh' | 'p2tr'): {
10
- mainnet: string;
11
- testnet: string;
10
+ mainnet: string | undefined;
11
+ testnet: string | undefined;
12
12
  };
13
13
  }
14
14
  export default Address;
@@ -4,17 +4,10 @@ class Address {
4
4
  if (address[0] === '1' || address[0] === 'm' || address[0] === 'n') {
5
5
  return true;
6
6
  }
7
- else {
8
- return false;
9
- }
7
+ return false;
10
8
  }
11
9
  static isP2SH(address) {
12
- if (address[0] === '3' || address[0] === '2') {
13
- return true;
14
- }
15
- else {
16
- return false;
17
- }
10
+ return address[0] === '3' || address[0] === '2';
18
11
  }
19
12
  static isP2WPKH(address) {
20
13
  if (address.slice(0, 4) === 'bc1q' || address.slice(0, 4) === 'tb1q') {
@@ -22,103 +15,101 @@ class Address {
22
15
  if (scriptPubKey.byteLength === 22) {
23
16
  return true;
24
17
  }
25
- else {
26
- return false;
27
- }
28
- }
29
- else {
30
18
  return false;
31
19
  }
20
+ return false;
32
21
  }
33
22
  static isP2TR(address) {
34
- if (address.slice(0, 4) === 'bc1p' || address.slice(0, 4) === 'tb1p') {
35
- return true;
36
- }
37
- else {
38
- return false;
39
- }
23
+ return address.slice(0, 4) === 'bc1p' || address.slice(0, 4) === 'tb1p';
40
24
  }
41
25
  static isP2WPKHWitness(witness) {
42
- if (witness.length === 2 && witness[1].byteLength === 33 && (witness[1][0] === 0x02 || witness[1][0] === 0x03)) {
43
- return true;
44
- }
45
- else {
46
- return false;
47
- }
26
+ return (witness.length === 2 &&
27
+ witness[1].byteLength === 33 &&
28
+ (witness[1][0] === 0x02 || witness[1][0] === 0x03));
48
29
  }
49
30
  static isSingleKeyP2TRWitness(witness) {
50
- if (witness.length === 1) {
51
- return true;
52
- }
53
- else {
54
- return false;
55
- }
31
+ return witness.length === 1;
56
32
  }
57
33
  static convertAdressToScriptPubkey(address) {
58
34
  if (address[0] === '1' || address[0] === 'm' || address[0] === 'n') {
59
35
  return bitcoin.payments.p2pkh({
60
- address: address,
61
- network: (address[0] === '1') ? bitcoin.networks.bitcoin : bitcoin.networks.testnet
36
+ address,
37
+ network: address[0] === '1' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,
62
38
  }).output;
63
39
  }
64
- else if (address[0] === '3' || address[0] === '2') {
40
+ if (address[0] === '3' || address[0] === '2') {
65
41
  return bitcoin.payments.p2sh({
66
- address: address,
67
- network: (address[0] === '3') ? bitcoin.networks.bitcoin : bitcoin.networks.testnet
42
+ address,
43
+ network: address[0] === '3' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,
68
44
  }).output;
69
45
  }
70
- else if (address.slice(0, 4) === 'bc1q' || address.slice(0, 4) === 'tb1q') {
46
+ if (address.slice(0, 4) === 'bc1q' || address.slice(0, 4) === 'tb1q') {
71
47
  if (address.length === 42) {
72
48
  return bitcoin.payments.p2wpkh({
73
- address: address,
74
- network: (address.slice(0, 4) === 'bc1q') ? bitcoin.networks.bitcoin : bitcoin.networks.testnet
49
+ address,
50
+ network: address.slice(0, 4) === 'bc1q' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,
75
51
  }).output;
76
52
  }
77
- else if (address.length === 62) {
53
+ if (address.length === 62) {
78
54
  return bitcoin.payments.p2wsh({
79
- address: address,
80
- network: (address.slice(0, 4) === 'bc1q') ? bitcoin.networks.bitcoin : bitcoin.networks.testnet
55
+ address,
56
+ network: address.slice(0, 4) === 'bc1q' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,
81
57
  }).output;
82
58
  }
83
59
  }
84
- else if (address.slice(0, 4) === 'bc1p' || address.slice(0, 4) === 'tb1p') {
85
- if (address.length === 62) {
86
- return bitcoin.payments.p2tr({
87
- address: address,
88
- network: (address.slice(0, 4) === 'bc1p') ? bitcoin.networks.bitcoin : bitcoin.networks.testnet
89
- }).output;
90
- }
60
+ else if ((address.slice(0, 4) === 'bc1p' || address.slice(0, 4) === 'tb1p') &&
61
+ address.length === 62) {
62
+ return bitcoin.payments.p2tr({
63
+ address,
64
+ network: address.slice(0, 4) === 'bc1p' ? bitcoin.networks.bitcoin : bitcoin.networks.testnet,
65
+ }).output;
91
66
  }
92
- throw new Error("Unknown address type");
67
+ throw new Error('Unknown address type');
93
68
  }
94
69
  static convertPubKeyIntoAddress(publicKey, addressType) {
95
70
  switch (addressType) {
96
71
  case 'p2pkh':
97
72
  return {
98
- mainnet: bitcoin.payments.p2pkh({ pubkey: publicKey, network: bitcoin.networks.bitcoin }).address,
99
- testnet: bitcoin.payments.p2pkh({ pubkey: publicKey, network: bitcoin.networks.testnet }).address
73
+ mainnet: bitcoin.payments.p2pkh({ pubkey: publicKey, network: bitcoin.networks.bitcoin })
74
+ .address,
75
+ testnet: bitcoin.payments.p2pkh({ pubkey: publicKey, network: bitcoin.networks.testnet })
76
+ .address,
100
77
  };
101
78
  case 'p2sh-p2wpkh':
102
79
  return {
103
80
  mainnet: bitcoin.payments.p2sh({
104
- redeem: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.bitcoin }),
105
- network: bitcoin.networks.bitcoin
81
+ redeem: bitcoin.payments.p2wpkh({
82
+ pubkey: publicKey,
83
+ network: bitcoin.networks.bitcoin,
84
+ }),
85
+ network: bitcoin.networks.bitcoin,
106
86
  }).address,
107
87
  testnet: bitcoin.payments.p2sh({
108
- redeem: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.testnet }),
109
- network: bitcoin.networks.testnet
110
- }).address
88
+ redeem: bitcoin.payments.p2wpkh({
89
+ pubkey: publicKey,
90
+ network: bitcoin.networks.testnet,
91
+ }),
92
+ network: bitcoin.networks.testnet,
93
+ }).address,
111
94
  };
112
95
  case 'p2wpkh':
113
96
  return {
114
- mainnet: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.bitcoin }).address,
115
- testnet: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.testnet }).address
97
+ mainnet: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.bitcoin })
98
+ .address,
99
+ testnet: bitcoin.payments.p2wpkh({ pubkey: publicKey, network: bitcoin.networks.testnet })
100
+ .address,
116
101
  };
117
102
  case 'p2tr':
118
103
  const internalPubkey = publicKey.byteLength === 33 ? publicKey.subarray(1, 33) : publicKey;
119
104
  return {
120
- mainnet: bitcoin.payments.p2tr({ internalPubkey: internalPubkey, network: bitcoin.networks.bitcoin }).address,
121
- testnet: bitcoin.payments.p2tr({ internalPubkey: internalPubkey, network: bitcoin.networks.testnet }).address
105
+ mainnet: bitcoin.payments.p2tr({
106
+ internalPubkey,
107
+ network: bitcoin.networks.bitcoin,
108
+ }).address,
109
+ testnet: bitcoin.payments.p2tr({
110
+ internalPubkey,
111
+ network: bitcoin.networks.testnet,
112
+ }).address,
122
113
  };
123
114
  default:
124
115
  throw new Error('Cannot convert public key into unsupported address type.');
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Address.js","sourceRoot":"","sources":["../../src/helpers/Address.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,7 @@ import * as bitcoinMessage from 'bitcoinjs-message';
3
3
  class BIP137 {
4
4
  static isBIP137Signature(signature) {
5
5
  const signatureBuffer = Buffer.from(signature, 'base64');
6
- if (signatureBuffer.byteLength === 65) {
7
- return true;
8
- }
9
- else {
10
- return false;
11
- }
6
+ return signatureBuffer.byteLength === 65;
12
7
  }
13
8
  static derivePubKey(message, signature) {
14
9
  const messageHash = bitcoinMessage.magicHash(message);
@@ -26,7 +21,7 @@ class BIP137 {
26
21
  return {
27
22
  compressed: !!(flagByte & 12),
28
23
  recovery: flagByte & 3,
29
- signature: signature.subarray(1)
24
+ signature: signature.subarray(1),
30
25
  };
31
26
  }
32
27
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BIP137.js","sourceRoot":"","sources":["../../src/helpers/BIP137.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AAKnD,MAAM,MAAM;IAMH,MAAM,CAAC,iBAAiB,CAAC,SAAiB;QAE/C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACxD,OAAO,eAAe,CAAC,UAAU,KAAK,EAAE,CAAA;IAC1C,CAAC;IAQM,MAAM,CAAC,YAAY,CAAC,OAAe,EAAE,SAAiB;QAE3D,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAErD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;QAE/E,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAC/C,gBAAgB,CAAC,SAAS,EAC1B,gBAAgB,CAAC,QAAQ,EACzB,WAAW,EACX,gBAAgB,CAAC,UAAU,CAC5B,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACxC,CAAC;IAQO,MAAM,CAAC,eAAe,CAAC,SAAiB;QAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;QAC5C,IAAI,QAAQ,GAAG,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QAED,OAAO;YACL,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC7B,QAAQ,EAAE,QAAQ,GAAG,CAAC;YACtB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;SACjC,CAAA;IACH,CAAC;CACF;AAED,eAAe,MAAM,CAAA"}
@@ -1,23 +1,23 @@
1
1
  class VarInt {
2
2
  static encode(i) {
3
- if (i < 0xFD) {
3
+ if (i < 0xfd) {
4
4
  const buffer = Buffer.alloc(1);
5
5
  buffer.writeUInt8(i);
6
6
  return buffer;
7
7
  }
8
- else if (i < 0x10000) {
8
+ if (i < 0x1_00_00) {
9
9
  const buffer = Buffer.alloc(3);
10
10
  buffer.writeUInt8(0xfd);
11
11
  buffer.writeUInt16LE(i, 1);
12
12
  return buffer;
13
13
  }
14
- else if (i < 0x100000000) {
14
+ if (i < 0x1_00_00_00_00) {
15
15
  const buffer = Buffer.alloc(5);
16
16
  buffer.writeUInt8(0xfe);
17
17
  buffer.writeUInt32LE(i, 1);
18
18
  return buffer;
19
19
  }
20
- else if (i < 0x1000000000000) {
20
+ if (i < 0x1_00_00_00_00_00_00) {
21
21
  const buffer = Buffer.alloc(9);
22
22
  buffer.writeUInt8(0xff);
23
23
  buffer.writeUIntLE(i, 1, 6);
@@ -25,9 +25,7 @@ class VarInt {
25
25
  buffer.writeUInt8(0x00, 8);
26
26
  return buffer;
27
27
  }
28
- else {
29
- throw new Error(`Integer too large: ${i}`);
30
- }
28
+ throw new Error(`Integer too large: ${i}`);
31
29
  }
32
30
  static decode(b) {
33
31
  if (b.byteLength === 0) {
@@ -37,15 +35,13 @@ class VarInt {
37
35
  if (i === 0xfd) {
38
36
  return b.readUInt16LE(1);
39
37
  }
40
- else if (i === 0xfe) {
38
+ if (i === 0xfe) {
41
39
  return b.readUInt32LE(1);
42
40
  }
43
- else if (i === 0xff) {
41
+ if (i === 0xff) {
44
42
  return b.readUIntLE(1, 6);
45
43
  }
46
- else {
47
- return i;
48
- }
44
+ return i;
49
45
  }
50
46
  }
51
47
  export default VarInt;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VarInt.js","sourceRoot":"","sources":["../../src/helpers/VarInt.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM;IAOH,MAAM,CAAC,MAAM,CAAC,CAAS;QAC5B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;YACpB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1B,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1B,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,CAAC,GAAG,qBAAqB,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;YAC1B,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;IAQM,MAAM,CAAC,MAAM,CAAC,CAAS;QAE5B,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC1C,CAAC;QAGD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAA;QAEvB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAEf,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAEf,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAEf,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3B,CAAC;QAGD,OAAO,CAAC,CAAA;IACV,CAAC;CACF;AAED,eAAe,MAAM,CAAA"}
@@ -1,4 +1,4 @@
1
- import VarInt from "./VarInt";
1
+ import VarInt from './VarInt.js';
2
2
  class VarStr {
3
3
  static encode(s) {
4
4
  const lengthBuffer = VarInt.encode(s.length);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VarStr.js","sourceRoot":"","sources":["../../src/helpers/VarStr.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAA;AAMhC,MAAM,MAAM;IAOH,MAAM,CAAC,MAAM,CAAC,CAAS;QAE5B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAE5C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;IAQM,MAAM,CAAC,MAAM,CAAC,CAAS;QAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAE/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;QAEzD,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAA;IAChE,CAAC;CACF;AAED,eAAe,MAAM,CAAA"}
@@ -1,5 +1,5 @@
1
- import VarInt from "./VarInt";
2
- import VarStr from "./VarStr";
1
+ import VarInt from './VarInt.js';
2
+ import VarStr from './VarStr.js';
3
3
  class Witness {
4
4
  static serialize(witnesses) {
5
5
  let witnessStack = VarInt.encode(witnesses.length);
@@ -9,7 +9,7 @@ class Witness {
9
9
  return witnessStack.toString('base64');
10
10
  }
11
11
  static deserialize(encodedWitness) {
12
- let witnessDecoded = [];
12
+ const witnessDecoded = [];
13
13
  let witnessToDecode;
14
14
  if (typeof encodedWitness === 'string') {
15
15
  witnessToDecode = Buffer.from(encodedWitness, 'base64');
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/helpers/Witness.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,MAAM,MAAM,aAAa,CAAA;AAKhC,MAAM,OAAO;IAQJ,MAAM,CAAC,SAAS,CAAC,SAAuB;QAE7C,IAAI,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAElD,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAE5B,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IASM,MAAM,CAAC,WAAW,CAAC,cAA+B;QAEvD,MAAM,cAAc,GAAa,EAAE,CAAA;QAEnC,IAAI,eAAuB,CAAA;QAC3B,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YAEvC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,cAAc,CAAA;QAClC,CAAC;QAGD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;QAEnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAA;QAC3D,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;YAE9C,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAE5B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAA;YACvD,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAC3D,CAAC;QAGD,OAAO,cAAc,CAAA;IACvB,CAAC;CACF;AAED,eAAe,OAAO,CAAA"}
@@ -1,6 +1,5 @@
1
- import Address from "./Address";
2
- import BIP137 from "./BIP137";
3
- import VarInt from "./VarInt";
4
- import VarStr from "./VarStr";
5
- import Witness from "./Witness";
6
- export { Address, BIP137, VarInt, VarStr, Witness };
1
+ export { default as Address } from './Address.js';
2
+ export { default as VarInt } from './VarInt.js';
3
+ export { default as BIP137 } from './BIP137.js';
4
+ export { default as Witness } from './Witness.js';
5
+ export { default as VarStr } from './VarStr.js';
@@ -1,7 +1,6 @@
1
- import Address from "./Address";
2
- import BIP137 from "./BIP137";
3
- import VarInt from "./VarInt";
4
- import VarStr from "./VarStr";
5
- import Witness from "./Witness";
6
- export { Address, BIP137, VarInt, VarStr, Witness };
1
+ export { default as Address } from './Address.js';
2
+ export { default as VarInt } from './VarInt.js';
3
+ export { default as BIP137 } from './BIP137.js';
4
+ export { default as Witness } from './Witness.js';
5
+ export { default as VarStr } from './VarStr.js';
7
6
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import BIP322 from "./BIP322";
2
- import Signer from "./Signer";
3
- import Verifier from "./Verifier";
4
- import { Witness, Address, BIP137 } from "./helpers";
5
- export { BIP322, Signer, Verifier, Witness, Address, BIP137 };
1
+ export { default as BIP322 } from './BIP322.js';
2
+ export { default as Signer } from './Signer.js';
3
+ export { Witness, Address } from './helpers/index.js';
4
+ export { default as Verifier } from './Verifier.js';
5
+ export { BIP137 } from './helpers/index.js';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import BIP322 from "./BIP322";
2
- import Signer from "./Signer";
3
- import Verifier from "./Verifier";
4
- import { Witness, Address, BIP137 } from "./helpers";
5
- export { BIP322, Signer, Verifier, Witness, Address, BIP137 };
1
+ export { default as BIP322 } from './BIP322.js';
2
+ export { default as Signer } from './Signer.js';
3
+ export { Witness, Address } from './helpers/index.js';
4
+ export { default as Verifier } from './Verifier.js';
5
+ export { BIP137 } from './helpers/index.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exodus/bip322-js",
3
- "version": "1.1.0-rc.0",
3
+ "version": "1.2.0",
4
4
  "description": "A Javascript library that provides utility functions related to the BIP-322 signature scheme",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,11 +8,18 @@
8
8
  "publishConfig": {
9
9
  "access": "restricted"
10
10
  },
11
+ "files": [
12
+ "dist",
13
+ "CHANGELOG.md"
14
+ ],
11
15
  "scripts": {
12
16
  "build": "tsc",
17
+ "lint": "eslint",
18
+ "lint:fix": "run lint --fix",
13
19
  "doc": "typedoc src/index.ts",
14
20
  "prepack": "npm run build",
15
- "test": "run -T exodus-test --jest --esbuild"
21
+ "test": "run -T exodus-test --jest --esbuild",
22
+ "prepublishOnly": "yarn run -T build --scope @exodus/bip322-js"
16
23
  },
17
24
  "keywords": [
18
25
  "bip322",
@@ -21,10 +28,10 @@
21
28
  "typescript",
22
29
  "no-WASM"
23
30
  ],
24
- "author": "Ken Sze <acken2@outlook.com>",
31
+ "author": "Exodus Movement, Inc.",
25
32
  "repository": {
26
33
  "type": "git",
27
- "url": "git+https://github.com/ExodusMovement/exodus-hydra.git.git"
34
+ "url": "git+https://github.com/ExodusMovement/exodus-hydra.git"
28
35
  },
29
36
  "license": "MIT",
30
37
  "devDependencies": {
@@ -36,13 +43,13 @@
36
43
  "dependencies": {
37
44
  "@exodus/bitcoinerlab-secp256k1": "^1.0.5-exodus.1",
38
45
  "@exodus/bitcoinjs": "^1.1.0",
39
- "@exodus/secp256k1": "4.0.2-exodus.0",
46
+ "@exodus/secp256k1": "^4.0.2-exodus.0",
40
47
  "bitcoinjs-message": "^2.2.0",
41
48
  "create-hash": "^1.2.0"
42
49
  },
43
- "homepage": "https://github.com/ExodusMovement/exodus-hydra.git/tree/master/libraries/bip322-js",
50
+ "homepage": "https://github.com/ExodusMovement/exodus-hydra/tree/master/libraries/bip322-js",
44
51
  "bugs": {
45
- "url": "https://github.com/ExodusMovement/exodus-hydra.git/issues?q=is%3Aissue+is%3Aopen+label%3Abip322-js"
52
+ "url": "https://github.com/ExodusMovement/exodus-hydra/issues?q=is%3Aissue+is%3Aopen+label%3Abip322-js"
46
53
  },
47
- "gitHead": "81d6f87cbb318c861c654a3001f2a0cfa54ac912"
54
+ "gitHead": "5e7420d5169df5428f6955c1e0008ea57a07b18c"
48
55
  }