xpi-ts 0.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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +516 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/lib/bitcore/address.d.ts +66 -0
  7. package/dist/lib/bitcore/address.d.ts.map +1 -0
  8. package/dist/lib/bitcore/address.js +407 -0
  9. package/dist/lib/bitcore/block/block.d.ts +57 -0
  10. package/dist/lib/bitcore/block/block.d.ts.map +1 -0
  11. package/dist/lib/bitcore/block/block.js +233 -0
  12. package/dist/lib/bitcore/block/blockheader.d.ts +82 -0
  13. package/dist/lib/bitcore/block/blockheader.d.ts.map +1 -0
  14. package/dist/lib/bitcore/block/blockheader.js +323 -0
  15. package/dist/lib/bitcore/block/index.d.ts +5 -0
  16. package/dist/lib/bitcore/block/index.d.ts.map +1 -0
  17. package/dist/lib/bitcore/block/index.js +2 -0
  18. package/dist/lib/bitcore/chunk.d.ts +22 -0
  19. package/dist/lib/bitcore/chunk.d.ts.map +1 -0
  20. package/dist/lib/bitcore/chunk.js +46 -0
  21. package/dist/lib/bitcore/crypto/bn.d.ts +53 -0
  22. package/dist/lib/bitcore/crypto/bn.d.ts.map +1 -0
  23. package/dist/lib/bitcore/crypto/bn.js +238 -0
  24. package/dist/lib/bitcore/crypto/ecdsa.d.ts +46 -0
  25. package/dist/lib/bitcore/crypto/ecdsa.d.ts.map +1 -0
  26. package/dist/lib/bitcore/crypto/ecdsa.js +247 -0
  27. package/dist/lib/bitcore/crypto/hash.d.ts +16 -0
  28. package/dist/lib/bitcore/crypto/hash.d.ts.map +1 -0
  29. package/dist/lib/bitcore/crypto/hash.js +87 -0
  30. package/dist/lib/bitcore/crypto/index.d.ts +9 -0
  31. package/dist/lib/bitcore/crypto/index.d.ts.map +1 -0
  32. package/dist/lib/bitcore/crypto/index.js +8 -0
  33. package/dist/lib/bitcore/crypto/musig2.d.ts +40 -0
  34. package/dist/lib/bitcore/crypto/musig2.d.ts.map +1 -0
  35. package/dist/lib/bitcore/crypto/musig2.js +236 -0
  36. package/dist/lib/bitcore/crypto/point.d.ts +20 -0
  37. package/dist/lib/bitcore/crypto/point.d.ts.map +1 -0
  38. package/dist/lib/bitcore/crypto/point.js +133 -0
  39. package/dist/lib/bitcore/crypto/random.d.ts +7 -0
  40. package/dist/lib/bitcore/crypto/random.d.ts.map +1 -0
  41. package/dist/lib/bitcore/crypto/random.js +30 -0
  42. package/dist/lib/bitcore/crypto/schnorr.d.ts +40 -0
  43. package/dist/lib/bitcore/crypto/schnorr.d.ts.map +1 -0
  44. package/dist/lib/bitcore/crypto/schnorr.js +185 -0
  45. package/dist/lib/bitcore/crypto/signature.d.ts +53 -0
  46. package/dist/lib/bitcore/crypto/signature.d.ts.map +1 -0
  47. package/dist/lib/bitcore/crypto/signature.js +300 -0
  48. package/dist/lib/bitcore/crypto/sigtype.d.ts +5 -0
  49. package/dist/lib/bitcore/crypto/sigtype.d.ts.map +1 -0
  50. package/dist/lib/bitcore/crypto/sigtype.js +18 -0
  51. package/dist/lib/bitcore/encoding/base58.d.ts +16 -0
  52. package/dist/lib/bitcore/encoding/base58.d.ts.map +1 -0
  53. package/dist/lib/bitcore/encoding/base58.js +55 -0
  54. package/dist/lib/bitcore/encoding/base58check.d.ts +9 -0
  55. package/dist/lib/bitcore/encoding/base58check.d.ts.map +1 -0
  56. package/dist/lib/bitcore/encoding/base58check.js +82 -0
  57. package/dist/lib/bitcore/encoding/bufferreader.d.ts +34 -0
  58. package/dist/lib/bitcore/encoding/bufferreader.d.ts.map +1 -0
  59. package/dist/lib/bitcore/encoding/bufferreader.js +198 -0
  60. package/dist/lib/bitcore/encoding/bufferwriter.d.ts +36 -0
  61. package/dist/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -0
  62. package/dist/lib/bitcore/encoding/bufferwriter.js +189 -0
  63. package/dist/lib/bitcore/encoding/varint.d.ts +20 -0
  64. package/dist/lib/bitcore/encoding/varint.d.ts.map +1 -0
  65. package/dist/lib/bitcore/encoding/varint.js +61 -0
  66. package/dist/lib/bitcore/errors.d.ts +28 -0
  67. package/dist/lib/bitcore/errors.d.ts.map +1 -0
  68. package/dist/lib/bitcore/errors.js +325 -0
  69. package/dist/lib/bitcore/hdprivatekey.d.ts +78 -0
  70. package/dist/lib/bitcore/hdprivatekey.d.ts.map +1 -0
  71. package/dist/lib/bitcore/hdprivatekey.js +381 -0
  72. package/dist/lib/bitcore/hdpublickey.d.ts +98 -0
  73. package/dist/lib/bitcore/hdpublickey.d.ts.map +1 -0
  74. package/dist/lib/bitcore/hdpublickey.js +416 -0
  75. package/dist/lib/bitcore/index.d.ts +60 -0
  76. package/dist/lib/bitcore/index.d.ts.map +1 -0
  77. package/dist/lib/bitcore/index.js +44 -0
  78. package/dist/lib/bitcore/message.d.ts +23 -0
  79. package/dist/lib/bitcore/message.d.ts.map +1 -0
  80. package/dist/lib/bitcore/message.js +112 -0
  81. package/dist/lib/bitcore/mnemonic/errors.d.ts +7 -0
  82. package/dist/lib/bitcore/mnemonic/errors.d.ts.map +1 -0
  83. package/dist/lib/bitcore/mnemonic/errors.js +20 -0
  84. package/dist/lib/bitcore/mnemonic/index.d.ts +5 -0
  85. package/dist/lib/bitcore/mnemonic/index.d.ts.map +1 -0
  86. package/dist/lib/bitcore/mnemonic/index.js +4 -0
  87. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts +23 -0
  88. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -0
  89. package/dist/lib/bitcore/mnemonic/mnemonic.js +164 -0
  90. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts +2 -0
  91. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -0
  92. package/dist/lib/bitcore/mnemonic/pbkdf2.js +25 -0
  93. package/dist/lib/bitcore/mnemonic/words/english.d.ts +2 -0
  94. package/dist/lib/bitcore/mnemonic/words/english.d.ts.map +1 -0
  95. package/dist/lib/bitcore/mnemonic/words/english.js +2050 -0
  96. package/dist/lib/bitcore/mnemonic/words/index.d.ts +4 -0
  97. package/dist/lib/bitcore/mnemonic/words/index.d.ts.map +1 -0
  98. package/dist/lib/bitcore/mnemonic/words/index.js +4 -0
  99. package/dist/lib/bitcore/musig2/index.d.ts +3 -0
  100. package/dist/lib/bitcore/musig2/index.d.ts.map +1 -0
  101. package/dist/lib/bitcore/musig2/index.js +2 -0
  102. package/dist/lib/bitcore/musig2/session.d.ts +79 -0
  103. package/dist/lib/bitcore/musig2/session.d.ts.map +1 -0
  104. package/dist/lib/bitcore/musig2/session.js +346 -0
  105. package/dist/lib/bitcore/musig2/signer.d.ts +61 -0
  106. package/dist/lib/bitcore/musig2/signer.d.ts.map +1 -0
  107. package/dist/lib/bitcore/musig2/signer.js +146 -0
  108. package/dist/lib/bitcore/networks.d.ts +53 -0
  109. package/dist/lib/bitcore/networks.d.ts.map +1 -0
  110. package/dist/lib/bitcore/networks.js +150 -0
  111. package/dist/lib/bitcore/opcode.d.ts +250 -0
  112. package/dist/lib/bitcore/opcode.d.ts.map +1 -0
  113. package/dist/lib/bitcore/opcode.js +270 -0
  114. package/dist/lib/bitcore/privatekey.d.ts +56 -0
  115. package/dist/lib/bitcore/privatekey.d.ts.map +1 -0
  116. package/dist/lib/bitcore/privatekey.js +237 -0
  117. package/dist/lib/bitcore/publickey.d.ts +59 -0
  118. package/dist/lib/bitcore/publickey.d.ts.map +1 -0
  119. package/dist/lib/bitcore/publickey.js +263 -0
  120. package/dist/lib/bitcore/script/interpreter.d.ts +98 -0
  121. package/dist/lib/bitcore/script/interpreter.d.ts.map +1 -0
  122. package/dist/lib/bitcore/script/interpreter.js +1704 -0
  123. package/dist/lib/bitcore/script.d.ts +111 -0
  124. package/dist/lib/bitcore/script.d.ts.map +1 -0
  125. package/dist/lib/bitcore/script.js +1112 -0
  126. package/dist/lib/bitcore/taproot/musig2.d.ts +29 -0
  127. package/dist/lib/bitcore/taproot/musig2.d.ts.map +1 -0
  128. package/dist/lib/bitcore/taproot/musig2.js +104 -0
  129. package/dist/lib/bitcore/taproot/nft.d.ts +164 -0
  130. package/dist/lib/bitcore/taproot/nft.d.ts.map +1 -0
  131. package/dist/lib/bitcore/taproot/nft.js +407 -0
  132. package/dist/lib/bitcore/taproot.d.ts +65 -0
  133. package/dist/lib/bitcore/taproot.d.ts.map +1 -0
  134. package/dist/lib/bitcore/taproot.js +288 -0
  135. package/dist/lib/bitcore/transaction/index.d.ts +12 -0
  136. package/dist/lib/bitcore/transaction/index.d.ts.map +1 -0
  137. package/dist/lib/bitcore/transaction/index.js +6 -0
  138. package/dist/lib/bitcore/transaction/input.d.ts +202 -0
  139. package/dist/lib/bitcore/transaction/input.d.ts.map +1 -0
  140. package/dist/lib/bitcore/transaction/input.js +911 -0
  141. package/dist/lib/bitcore/transaction/output.d.ts +48 -0
  142. package/dist/lib/bitcore/transaction/output.d.ts.map +1 -0
  143. package/dist/lib/bitcore/transaction/output.js +231 -0
  144. package/dist/lib/bitcore/transaction/sighash.d.ts +32 -0
  145. package/dist/lib/bitcore/transaction/sighash.d.ts.map +1 -0
  146. package/dist/lib/bitcore/transaction/sighash.js +335 -0
  147. package/dist/lib/bitcore/transaction/signature.d.ts +36 -0
  148. package/dist/lib/bitcore/transaction/signature.d.ts.map +1 -0
  149. package/dist/lib/bitcore/transaction/signature.js +130 -0
  150. package/dist/lib/bitcore/transaction/transaction.d.ts +164 -0
  151. package/dist/lib/bitcore/transaction/transaction.d.ts.map +1 -0
  152. package/dist/lib/bitcore/transaction/transaction.js +1016 -0
  153. package/dist/lib/bitcore/transaction/unspentoutput.d.ts +58 -0
  154. package/dist/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -0
  155. package/dist/lib/bitcore/transaction/unspentoutput.js +167 -0
  156. package/dist/lib/bitcore/unit.d.ts +44 -0
  157. package/dist/lib/bitcore/unit.d.ts.map +1 -0
  158. package/dist/lib/bitcore/unit.js +106 -0
  159. package/dist/lib/bitcore/uri.d.ts +29 -0
  160. package/dist/lib/bitcore/uri.d.ts.map +1 -0
  161. package/dist/lib/bitcore/uri.js +163 -0
  162. package/dist/lib/bitcore/util/base32.d.ts +5 -0
  163. package/dist/lib/bitcore/util/base32.d.ts.map +1 -0
  164. package/dist/lib/bitcore/util/base32.js +58 -0
  165. package/dist/lib/bitcore/util/buffer.d.ts +18 -0
  166. package/dist/lib/bitcore/util/buffer.d.ts.map +1 -0
  167. package/dist/lib/bitcore/util/buffer.js +76 -0
  168. package/dist/lib/bitcore/util/convertBits.d.ts +2 -0
  169. package/dist/lib/bitcore/util/convertBits.d.ts.map +1 -0
  170. package/dist/lib/bitcore/util/convertBits.js +26 -0
  171. package/dist/lib/bitcore/util/js.d.ts +9 -0
  172. package/dist/lib/bitcore/util/js.d.ts.map +1 -0
  173. package/dist/lib/bitcore/util/js.js +45 -0
  174. package/dist/lib/bitcore/util/preconditions.d.ts +6 -0
  175. package/dist/lib/bitcore/util/preconditions.d.ts.map +1 -0
  176. package/dist/lib/bitcore/util/preconditions.js +31 -0
  177. package/dist/lib/bitcore/util.d.ts +14 -0
  178. package/dist/lib/bitcore/util.d.ts.map +1 -0
  179. package/dist/lib/bitcore/util.js +13 -0
  180. package/dist/lib/bitcore/xaddress.d.ts +45 -0
  181. package/dist/lib/bitcore/xaddress.d.ts.map +1 -0
  182. package/dist/lib/bitcore/xaddress.js +279 -0
  183. package/dist/lib/rank/api.d.ts +75 -0
  184. package/dist/lib/rank/api.d.ts.map +1 -0
  185. package/dist/lib/rank/api.js +4 -0
  186. package/dist/lib/rank/index.d.ts +127 -0
  187. package/dist/lib/rank/index.d.ts.map +1 -0
  188. package/dist/lib/rank/index.js +421 -0
  189. package/dist/lib/rank/opcode.d.ts +23 -0
  190. package/dist/lib/rank/opcode.d.ts.map +1 -0
  191. package/dist/lib/rank/opcode.js +23 -0
  192. package/dist/lib/rank/script.d.ts +2 -0
  193. package/dist/lib/rank/script.d.ts.map +1 -0
  194. package/dist/lib/rank/script.js +7 -0
  195. package/dist/lib/rank/transaction.d.ts +3 -0
  196. package/dist/lib/rank/transaction.d.ts.map +1 -0
  197. package/dist/lib/rank/transaction.js +12 -0
  198. package/dist/lib/rpc.d.ts +136 -0
  199. package/dist/lib/rpc.d.ts.map +1 -0
  200. package/dist/lib/rpc.js +62 -0
  201. package/dist/utils/constants.d.ts +18 -0
  202. package/dist/utils/constants.d.ts.map +1 -0
  203. package/dist/utils/constants.js +20 -0
  204. package/dist/utils/env.d.ts +3 -0
  205. package/dist/utils/env.d.ts.map +1 -0
  206. package/dist/utils/env.js +8 -0
  207. package/dist/utils/string.d.ts +11 -0
  208. package/dist/utils/string.d.ts.map +1 -0
  209. package/dist/utils/string.js +47 -0
  210. package/dist/utils/types.d.ts +2 -0
  211. package/dist/utils/types.d.ts.map +1 -0
  212. package/dist/utils/types.js +1 -0
  213. package/dist/utils/wallet.d.ts +12 -0
  214. package/dist/utils/wallet.d.ts.map +1 -0
  215. package/dist/utils/wallet.js +28 -0
  216. package/package.json +91 -0
@@ -0,0 +1,7 @@
1
+ export declare const MnemonicError: Function;
2
+ export interface MnemonicErrorType {
3
+ InvalidEntropy: new (entropy: string) => Error;
4
+ UnknownWordlist: new (mnemonic: string) => Error;
5
+ InvalidMnemonic: new (mnemonic: string) => Error;
6
+ }
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/mnemonic/errors.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,aAAa,UAAyC,CAAA;AAGnE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,CAAA;IAC9C,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAA;IAChD,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAA;CACjD"}
@@ -0,0 +1,20 @@
1
+ import { BitcoreError } from '../errors.js';
2
+ const mnemonicErrorSpec = {
3
+ name: 'Mnemonic',
4
+ message: 'Internal Error on bitcore-mnemonic module {0}',
5
+ errors: [
6
+ {
7
+ name: 'InvalidEntropy',
8
+ message: 'Entropy length must be an even multiple of 11 bits: {0}',
9
+ },
10
+ {
11
+ name: 'UnknownWordlist',
12
+ message: 'Could not detect the used word list: {0}',
13
+ },
14
+ {
15
+ name: 'InvalidMnemonic',
16
+ message: 'Mnemonic string is invalid: {0}',
17
+ },
18
+ ],
19
+ };
20
+ export const MnemonicError = BitcoreError.extend(mnemonicErrorSpec);
@@ -0,0 +1,5 @@
1
+ export { Mnemonic, default } from './mnemonic.js';
2
+ export { MnemonicError } from './errors.js';
3
+ export { pbkdf2 } from './pbkdf2.js';
4
+ export { Words } from './words/index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/mnemonic/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { Mnemonic, default } from './mnemonic.js';
2
+ export { MnemonicError } from './errors.js';
3
+ export { pbkdf2 } from './pbkdf2.js';
4
+ export { Words } from './words/index.js';
@@ -0,0 +1,23 @@
1
+ import { HDPrivateKey } from '../hdprivatekey.js';
2
+ import { Network } from '../networks.js';
3
+ export declare class Mnemonic {
4
+ readonly wordlist: string[];
5
+ readonly phrase: string;
6
+ constructor(data?: Buffer | string | number | string[], wordlist?: string[]);
7
+ static Words: {
8
+ ENGLISH: string[];
9
+ };
10
+ static isValid(mnemonic: string, wordlist?: string[]): boolean;
11
+ static _belongsToWordlist(mnemonic: string, wordlist: string[]): boolean;
12
+ static _getDictionary(mnemonic?: string): string[] | undefined;
13
+ toSeed(passphrase?: string): Buffer;
14
+ static fromSeed(seed: Buffer, wordlist?: string[]): Mnemonic;
15
+ toHDPrivateKey(passphrase?: string, network?: string | Network): HDPrivateKey;
16
+ toString(): string;
17
+ inspect(): string;
18
+ static _mnemonic(ENT: number, wordlist: string[]): string;
19
+ static _entropy2mnemonic(entropy: Buffer, wordlist: string[]): string;
20
+ static _entropyChecksum(entropy: Buffer): string;
21
+ }
22
+ export default Mnemonic;
23
+ //# sourceMappingURL=mnemonic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/mnemonic/mnemonic.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAoCxC,qBAAa,QAAQ;IACnB,SAAgB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClC,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE;IAuD3E,MAAM,CAAC,KAAK;;MAAQ;IAcpB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO;IAmC9D,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO;IAexE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAoB9D,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBnC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ;IAoB5D,cAAc,CACZ,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GACzB,YAAY;IAUf,QAAQ,IAAI,MAAM;IASlB,OAAO,IAAI,MAAM;IAWjB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAYzD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAiCrE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAiBjD;AAED,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,164 @@
1
+ import { BN } from '../crypto/bn.js';
2
+ import { Hash } from '../crypto/hash.js';
3
+ import { Random } from '../crypto/random.js';
4
+ import { Preconditions } from '../util/preconditions.js';
5
+ import { HDPrivateKey } from '../hdprivatekey.js';
6
+ import { pbkdf2 } from './pbkdf2.js';
7
+ import { Words } from './words/index.js';
8
+ function normalizeUnicode(str) {
9
+ return str.normalize('NFKD');
10
+ }
11
+ export class Mnemonic {
12
+ wordlist;
13
+ phrase;
14
+ constructor(data, wordlist) {
15
+ if (Array.isArray(data)) {
16
+ wordlist = data;
17
+ data = undefined;
18
+ }
19
+ let ent;
20
+ let phrase;
21
+ let seed;
22
+ if (Buffer.isBuffer(data)) {
23
+ seed = data;
24
+ ent = seed.length * 8;
25
+ }
26
+ else if (typeof data === 'string') {
27
+ phrase = normalizeUnicode(data);
28
+ }
29
+ else if (typeof data === 'number') {
30
+ ent = data;
31
+ }
32
+ else if (data) {
33
+ throw new Error('Invalid data: Must be a Buffer, a string or an integer');
34
+ }
35
+ ent = ent || 128;
36
+ const detectedWordlist = Mnemonic._getDictionary(phrase);
37
+ wordlist = wordlist || detectedWordlist || Words.ENGLISH;
38
+ if (phrase && !detectedWordlist) {
39
+ throw new Error(`Could not detect the used word list: ${phrase}`);
40
+ }
41
+ if (seed) {
42
+ phrase = Mnemonic._entropy2mnemonic(seed, wordlist);
43
+ }
44
+ if (phrase && !Mnemonic.isValid(phrase, wordlist)) {
45
+ throw new Error(`Mnemonic string is invalid: ${phrase}`);
46
+ }
47
+ if (!seed && ent && (ent % 32 !== 0 || ent < 128 || ent > 256)) {
48
+ throw new Error('Values must be ENT > 128 and ENT < 256 and ENT % 32 == 0');
49
+ }
50
+ phrase = phrase || Mnemonic._mnemonic(ent, wordlist);
51
+ phrase = normalizeUnicode(phrase);
52
+ this.wordlist = wordlist;
53
+ this.phrase = phrase;
54
+ }
55
+ static Words = Words;
56
+ static isValid(mnemonic, wordlist) {
57
+ mnemonic = normalizeUnicode(mnemonic);
58
+ const detectedWordlist = Mnemonic._getDictionary(mnemonic);
59
+ wordlist = wordlist || detectedWordlist;
60
+ if (!wordlist) {
61
+ return false;
62
+ }
63
+ const words = mnemonic.split(' ');
64
+ let bin = '';
65
+ for (let i = 0; i < words.length; i++) {
66
+ const ind = wordlist.indexOf(words[i]);
67
+ if (ind < 0)
68
+ return false;
69
+ bin = bin + ('00000000000' + ind.toString(2)).slice(-11);
70
+ }
71
+ const cs = bin.length / 33;
72
+ const hash_bits = bin.slice(-cs);
73
+ const nonhash_bits = bin.slice(0, bin.length - cs);
74
+ const buf = Buffer.alloc(nonhash_bits.length / 8);
75
+ for (let i = 0; i < nonhash_bits.length / 8; i++) {
76
+ buf.writeUInt8(parseInt(bin.slice(i * 8, (i + 1) * 8), 2), i);
77
+ }
78
+ const expected_hash_bits = Mnemonic._entropyChecksum(buf);
79
+ return expected_hash_bits === hash_bits;
80
+ }
81
+ static _belongsToWordlist(mnemonic, wordlist) {
82
+ const words = normalizeUnicode(mnemonic).split(' ');
83
+ for (let i = 0; i < words.length; i++) {
84
+ const ind = wordlist.indexOf(words[i]);
85
+ if (ind < 0)
86
+ return false;
87
+ }
88
+ return true;
89
+ }
90
+ static _getDictionary(mnemonic) {
91
+ if (!mnemonic)
92
+ return undefined;
93
+ const dicts = Object.keys(Words);
94
+ for (let i = 0; i < dicts.length; i++) {
95
+ const key = dicts[i];
96
+ const wordlist = Words[key];
97
+ if (Mnemonic._belongsToWordlist(mnemonic, wordlist)) {
98
+ return wordlist;
99
+ }
100
+ }
101
+ return undefined;
102
+ }
103
+ toSeed(passphrase) {
104
+ passphrase = passphrase || '';
105
+ return pbkdf2(normalizeUnicode(this.phrase), normalizeUnicode('mnemonic' + passphrase), 2048, 64);
106
+ }
107
+ static fromSeed(seed, wordlist) {
108
+ Preconditions.checkArgument(Buffer.isBuffer(seed), 'seed must be a Buffer.');
109
+ if (wordlist !== undefined) {
110
+ Preconditions.checkArgument(Array.isArray(wordlist) || typeof wordlist === 'string', 'wordlist must be a string or an array.');
111
+ }
112
+ return new Mnemonic(seed, wordlist);
113
+ }
114
+ toHDPrivateKey(passphrase, network) {
115
+ const seed = this.toSeed(passphrase);
116
+ return HDPrivateKey.fromSeed(seed, network);
117
+ }
118
+ toString() {
119
+ return this.phrase;
120
+ }
121
+ inspect() {
122
+ return '<Mnemonic: ' + this.toString() + ' >';
123
+ }
124
+ static _mnemonic(ENT, wordlist) {
125
+ const buf = Random.getRandomBuffer(ENT / 8);
126
+ return Mnemonic._entropy2mnemonic(buf, wordlist);
127
+ }
128
+ static _entropy2mnemonic(entropy, wordlist) {
129
+ let bin = '';
130
+ for (let i = 0; i < entropy.length; i++) {
131
+ bin = bin + ('00000000' + entropy[i].toString(2)).slice(-8);
132
+ }
133
+ bin = bin + Mnemonic._entropyChecksum(entropy);
134
+ if (bin.length % 11 !== 0) {
135
+ throw new Error(`Entropy length must be an even multiple of 11 bits: ${bin}`);
136
+ }
137
+ const mnemonic = [];
138
+ for (let i = 0; i < bin.length / 11; i++) {
139
+ const wi = parseInt(bin.slice(i * 11, (i + 1) * 11), 2);
140
+ mnemonic.push(wordlist[wi]);
141
+ }
142
+ let ret;
143
+ if (wordlist === Words.ENGLISH) {
144
+ ret = mnemonic.join(' ');
145
+ }
146
+ else {
147
+ ret = mnemonic.join(' ');
148
+ }
149
+ return ret;
150
+ }
151
+ static _entropyChecksum(entropy) {
152
+ const hash = Hash.sha256(entropy);
153
+ const bits = entropy.length * 8;
154
+ const cs = bits / 32;
155
+ const hashbits = new BN(hash.toString('hex'), 16).toString(2);
156
+ let paddedHashbits = hashbits;
157
+ while (paddedHashbits.length % 256 !== 0) {
158
+ paddedHashbits = '0' + paddedHashbits;
159
+ }
160
+ const checksum = paddedHashbits.slice(0, cs);
161
+ return checksum;
162
+ }
163
+ }
164
+ export default Mnemonic;
@@ -0,0 +1,2 @@
1
+ export declare function pbkdf2(key: string | Buffer, salt: string | Buffer, iterations: number, dkLen: number): Buffer;
2
+ //# sourceMappingURL=pbkdf2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/mnemonic/pbkdf2.ts"],"names":[],"mappings":"AAiBA,wBAAgB,MAAM,CACpB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CA+BR"}
@@ -0,0 +1,25 @@
1
+ import { pbkdf2 as noblePbkdf2 } from '@noble/hashes/pbkdf2';
2
+ import { sha512 } from '@noble/hashes/sha512';
3
+ export function pbkdf2(key, salt, iterations, dkLen) {
4
+ const hLen = 64;
5
+ if (dkLen > (Math.pow(2, 32) - 1) * hLen) {
6
+ throw new Error('Requested key length too long');
7
+ }
8
+ if (typeof key !== 'string' && !Buffer.isBuffer(key)) {
9
+ throw new TypeError('key must a string or Buffer');
10
+ }
11
+ if (typeof salt !== 'string' && !Buffer.isBuffer(salt)) {
12
+ throw new TypeError('salt must a string or Buffer');
13
+ }
14
+ const keyBytes = typeof key === 'string'
15
+ ? new TextEncoder().encode(key)
16
+ : new Uint8Array(key);
17
+ const saltBytes = typeof salt === 'string'
18
+ ? new TextEncoder().encode(salt)
19
+ : new Uint8Array(salt);
20
+ const result = noblePbkdf2(sha512, keyBytes, saltBytes, {
21
+ c: iterations,
22
+ dkLen: dkLen,
23
+ });
24
+ return Buffer.from(result);
25
+ }
@@ -0,0 +1,2 @@
1
+ export declare const english: string[];
2
+ //# sourceMappingURL=english.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"english.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/words/english.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,UAigEnB,CAAA"}