mirror of
https://github.com/status-im/bip39.git
synced 2025-02-16 14:36:28 +00:00
Add Async method for converting to seed.
This commit is contained in:
parent
4fce199e73
commit
ba096d6a80
27
index.js
27
index.js
@ -1,6 +1,8 @@
|
||||
var Buffer = require('safe-buffer').Buffer
|
||||
var createHash = require('create-hash')
|
||||
var pbkdf2 = require('pbkdf2').pbkdf2Sync
|
||||
var _pbkdf2 = require('pbkdf2')
|
||||
var pbkdf2 = _pbkdf2.pbkdf2Sync
|
||||
var pbkdf2Async = _pbkdf2.pbkdf2
|
||||
var randomBytes = require('randombytes')
|
||||
|
||||
// use unorm until String.prototype.normalize gets better browser support
|
||||
@ -58,6 +60,27 @@ function mnemonicToSeedHex (mnemonic, password) {
|
||||
return mnemonicToSeed(mnemonic, password).toString('hex')
|
||||
}
|
||||
|
||||
function mnemonicToSeedAsync (mnemonic, password) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
try {
|
||||
var mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8')
|
||||
var saltBuffer = Buffer.from(salt(unorm.nfkd(password)), 'utf8')
|
||||
} catch (error) {
|
||||
return reject(error)
|
||||
}
|
||||
|
||||
pbkdf2Async(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512', function (err, data) {
|
||||
if (err) return reject(err)
|
||||
else return resolve(data)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function mnemonicToSeedHexAsync (mnemonic, password) {
|
||||
return mnemonicToSeedAsync(mnemonic, password)
|
||||
.then(function (buf) { return buf.toString('hex') })
|
||||
}
|
||||
|
||||
function mnemonicToEntropy (mnemonic, wordlist) {
|
||||
wordlist = wordlist || DEFAULT_WORDLIST
|
||||
|
||||
@ -132,7 +155,9 @@ function validateMnemonic (mnemonic, wordlist) {
|
||||
|
||||
module.exports = {
|
||||
mnemonicToSeed: mnemonicToSeed,
|
||||
mnemonicToSeedAsync: mnemonicToSeedAsync,
|
||||
mnemonicToSeedHex: mnemonicToSeedHex,
|
||||
mnemonicToSeedHexAsync: mnemonicToSeedHexAsync,
|
||||
mnemonicToEntropy: mnemonicToEntropy,
|
||||
entropyToMnemonic: entropyToMnemonic,
|
||||
generateMnemonic: generateMnemonic,
|
||||
|
@ -16,10 +16,13 @@ function testVector (description, wordlist, password, v, i) {
|
||||
var vseedHex = v[2]
|
||||
|
||||
test('for ' + description + '(' + i + '), ' + ventropy, function (t) {
|
||||
t.plan(5)
|
||||
t.plan(6)
|
||||
|
||||
t.equal(bip39.mnemonicToEntropy(vmnemonic, wordlist), ventropy, 'mnemonicToEntropy returns ' + ventropy.slice(0, 40) + '...')
|
||||
t.equal(bip39.mnemonicToSeedHex(vmnemonic, password), vseedHex, 'mnemonicToSeedHex returns ' + vseedHex.slice(0, 40) + '...')
|
||||
bip39.mnemonicToSeedHexAsync(vmnemonic, password).then(function (asyncSeedHex) {
|
||||
t.equal(asyncSeedHex, vseedHex, 'mnemonicToSeedHexAsync returns ' + vseedHex.slice(0, 40) + '...')
|
||||
})
|
||||
t.equal(bip39.entropyToMnemonic(ventropy, wordlist), vmnemonic, 'entropyToMnemonic returns ' + vmnemonic.slice(0, 40) + '...')
|
||||
|
||||
function rng () { return Buffer.from(ventropy, 'hex') }
|
||||
|
Loading…
x
Reference in New Issue
Block a user