nifty-wallet/app/scripts/lib/seed-phrase-verifier.js

43 lines
1.3 KiB
JavaScript
Raw Normal View History

2018-03-02 15:32:57 -08:00
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