this.#phrase = undefined\r
}\r
\r
- /**\r
- * Validates a mnemonic phrase.\r
- *\r
- * @param {string} mnemonic - Mnemonic phrase to validate\r
- * @returns {boolean} True if the mnemonic phrase is valid\r
- */\r
- static async validate (mnemonic: string): Promise<boolean> {\r
- const words = mnemonic.normalize('NFKD').split(' ')\r
- if (words.length % 3 !== 0) {\r
- return false\r
- }\r
-\r
- let bits = 0n, bitLength = 0n\r
- for (const word of words) {\r
- const wordIndex = Bip39Words.indexOf(word)\r
- if (wordIndex === -1) {\r
- return false\r
- }\r
- bits = (bits << 11n) | BigInt(Bip39Words.indexOf(word))\r
- bitLength += 11n\r
- }\r
- if (Number(bitLength) % 33 !== 0) {\r
- return false\r
- }\r
-\r
- const checksumLength = bitLength / 33n\r
- const entropyLength = Number(bitLength - checksumLength)\r
- const entropyBits = bits >> checksumLength\r
- const checksumBits = bits & ((1n << checksumLength) - 1n)\r
-\r
- if (entropyBits == null\r
- || entropyBits < 0n\r
- || entropyBits > (1n << 256n) - 1n\r
- || entropyLength < 128\r
- || entropyLength > 256\r
- || entropyLength % 32 !== 0\r
- ) {\r
- return false\r
- }\r
-\r
- const entropyHex = entropyBits.toString(16).padStart(entropyLength / 4, '0')\r
- const entropy = await Entropy.import(entropyHex)\r
- const expectedChecksum = await this.checksum(entropy.bytes)\r
- if (expectedChecksum !== checksumBits) {\r
- return false\r
- }\r
-\r
- return true\r
- }\r
-\r
async toBip39Seed (passphrase: string): Promise<Uint8Array<ArrayBuffer>>\r
/**\r
* Converts the mnemonic phrase to a BIP-39 seed.\r
? bytes.toHex(this.#blake2bSeed)\r
: this.#blake2bSeed\r
}\r
+\r
+ /**\r
+ * Validates a mnemonic phrase.\r
+ *\r
+ * @param {string} mnemonic - Mnemonic phrase to validate\r
+ * @returns {boolean} True if the mnemonic phrase is valid\r
+ */\r
+ static async validate (mnemonic: string): Promise<boolean> {\r
+ const words = mnemonic.normalize('NFKD').split(' ')\r
+ if (words.length % 3 !== 0) {\r
+ return false\r
+ }\r
+\r
+ let bits = 0n, bitLength = 0n\r
+ for (const word of words) {\r
+ const wordIndex = Bip39Words.indexOf(word)\r
+ if (wordIndex === -1) {\r
+ return false\r
+ }\r
+ bits = (bits << 11n) | BigInt(Bip39Words.indexOf(word))\r
+ bitLength += 11n\r
+ }\r
+ if (Number(bitLength) % 33 !== 0) {\r
+ return false\r
+ }\r
+\r
+ const checksumLength = bitLength / 33n\r
+ const entropyLength = Number(bitLength - checksumLength)\r
+ const entropyBits = bits >> checksumLength\r
+ const checksumBits = bits & ((1n << checksumLength) - 1n)\r
+\r
+ if (entropyBits == null\r
+ || entropyBits < 0n\r
+ || entropyBits > (1n << 256n) - 1n\r
+ || entropyLength < 128\r
+ || entropyLength > 256\r
+ || entropyLength % 32 !== 0\r
+ ) {\r
+ return false\r
+ }\r
+\r
+ const entropyHex = entropyBits.toString(16).padStart(entropyLength / 4, '0')\r
+ const entropy = await Entropy.import(entropyHex)\r
+ const expectedChecksum = await this.checksum(entropy.bytes)\r
+ if (expectedChecksum !== checksumBits) {\r
+ return false\r
+ }\r
+\r
+ return true\r
+ }\r
}\r
\r