You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.3 KiB
43 lines
1.3 KiB
const KeyringController = require('eth-keyring-controller')
|
|
|
|
const seedPhraseVerifier = {
|
|
|
|
verifyAccounts(createdAccounts, seedWords) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
if (!createdAccounts || createdAccounts.length < 1) {
|
|
return reject(new Error('No created accounts defined.'))
|
|
}
|
|
|
|
let keyringController = new KeyringController({})
|
|
let Keyring = keyringController.getKeyringClassForType('HD Key Tree')
|
|
let opts = {
|
|
mnemonic: seedWords,
|
|
numberOfAccounts: createdAccounts.length,
|
|
}
|
|
|
|
let keyring = new Keyring(opts)
|
|
keyring.getAccounts()
|
|
.then((restoredAccounts) => {
|
|
|
|
log.debug('Created accounts: ' + JSON.stringify(createdAccounts))
|
|
log.debug('Restored accounts: ' + JSON.stringify(restoredAccounts))
|
|
|
|
if (restoredAccounts.length != createdAccounts.length) {
|
|
// this should not happen...
|
|
return reject(new Error("Wrong number of accounts"))
|
|
}
|
|
|
|
for (let i = 0; i < restoredAccounts.length; i++) {
|
|
if (restoredAccounts[i] !== createdAccounts[i]) {
|
|
return reject(new Error('Not identical accounts! Original: ' + createdAccounts[i] + ', Restored: ' + restoredAccounts[i]))
|
|
}
|
|
}
|
|
return resolve()
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
module.exports = seedPhraseVerifier |