mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-23 02:10:12 +01:00
14d85b1332
A few inconsistencies in JSDoc formatting have been fixed throughout the project. Many issues remain; these were just the few things that were easy to fix with a regular expression. The changes include: * Using lower-case for primitive types, but capitalizing non-primitive types * Separating the parameter identifier and the description with a dash * Omitting a dash between the return type and the return description * Ensuring the parameter type is first and the identifier is second (in a few places it was backwards) * Using square brackets to denote when a parameter is optional, rather than putting "(optional)" in the parameter description * Including a type and identifier with every parameter * Fixing inconsistent spacing, except where it's used for alignment * Remove incorrectly formatted `@deprecated` tags that reference non- existent properties * Remove lone comment block without accompanying function Additionally, one parameter was renamed for clarity.
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
import KeyringController from 'eth-keyring-controller'
|
|
import log from 'loglevel'
|
|
|
|
const seedPhraseVerifier = {
|
|
/**
|
|
* Verifies if the seed words can restore the accounts.
|
|
*
|
|
* Key notes:
|
|
* - The seed words can recreate the primary keyring and the accounts belonging to it.
|
|
* - The created accounts in the primary keyring are always the same.
|
|
* - The keyring always creates the accounts in the same sequence.
|
|
*
|
|
* @param {Array} createdAccounts - The accounts to restore
|
|
* @param {string} seedWords - The seed words to verify
|
|
* @returns {Promise<void>} Promises undefined
|
|
*
|
|
*/
|
|
async verifyAccounts(createdAccounts, seedWords) {
|
|
if (!createdAccounts || createdAccounts.length < 1) {
|
|
throw new Error('No created accounts defined.')
|
|
}
|
|
|
|
const keyringController = new KeyringController({})
|
|
const Keyring = keyringController.getKeyringClassForType('HD Key Tree')
|
|
const opts = {
|
|
mnemonic: seedWords,
|
|
numberOfAccounts: createdAccounts.length,
|
|
}
|
|
|
|
const keyring = new Keyring(opts)
|
|
const restoredAccounts = await keyring.getAccounts()
|
|
log.debug(`Created accounts: ${JSON.stringify(createdAccounts)}`)
|
|
log.debug(`Restored accounts: ${JSON.stringify(restoredAccounts)}`)
|
|
|
|
if (restoredAccounts.length !== createdAccounts.length) {
|
|
// this should not happen...
|
|
throw new Error('Wrong number of accounts')
|
|
}
|
|
|
|
for (let i = 0; i < restoredAccounts.length; i++) {
|
|
if (
|
|
restoredAccounts[i].toLowerCase() !== createdAccounts[i].toLowerCase()
|
|
) {
|
|
throw new Error(
|
|
`Not identical accounts! Original: ${createdAccounts[i]}, Restored: ${restoredAccounts[i]}`,
|
|
)
|
|
}
|
|
}
|
|
},
|
|
}
|
|
|
|
export default seedPhraseVerifier
|