mirror of
https://github.com/status-im/bip39.git
synced 2025-02-19 16:04:16 +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 Buffer = require('safe-buffer').Buffer
|
||||||
var createHash = require('create-hash')
|
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')
|
var randomBytes = require('randombytes')
|
||||||
|
|
||||||
// use unorm until String.prototype.normalize gets better browser support
|
// use unorm until String.prototype.normalize gets better browser support
|
||||||
@ -58,6 +60,27 @@ function mnemonicToSeedHex (mnemonic, password) {
|
|||||||
return mnemonicToSeed(mnemonic, password).toString('hex')
|
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) {
|
function mnemonicToEntropy (mnemonic, wordlist) {
|
||||||
wordlist = wordlist || DEFAULT_WORDLIST
|
wordlist = wordlist || DEFAULT_WORDLIST
|
||||||
|
|
||||||
@ -132,7 +155,9 @@ function validateMnemonic (mnemonic, wordlist) {
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mnemonicToSeed: mnemonicToSeed,
|
mnemonicToSeed: mnemonicToSeed,
|
||||||
|
mnemonicToSeedAsync: mnemonicToSeedAsync,
|
||||||
mnemonicToSeedHex: mnemonicToSeedHex,
|
mnemonicToSeedHex: mnemonicToSeedHex,
|
||||||
|
mnemonicToSeedHexAsync: mnemonicToSeedHexAsync,
|
||||||
mnemonicToEntropy: mnemonicToEntropy,
|
mnemonicToEntropy: mnemonicToEntropy,
|
||||||
entropyToMnemonic: entropyToMnemonic,
|
entropyToMnemonic: entropyToMnemonic,
|
||||||
generateMnemonic: generateMnemonic,
|
generateMnemonic: generateMnemonic,
|
||||||
|
@ -16,10 +16,13 @@ function testVector (description, wordlist, password, v, i) {
|
|||||||
var vseedHex = v[2]
|
var vseedHex = v[2]
|
||||||
|
|
||||||
test('for ' + description + '(' + i + '), ' + ventropy, function (t) {
|
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.mnemonicToEntropy(vmnemonic, wordlist), ventropy, 'mnemonicToEntropy returns ' + ventropy.slice(0, 40) + '...')
|
||||||
t.equal(bip39.mnemonicToSeedHex(vmnemonic, password), vseedHex, 'mnemonicToSeedHex returns ' + vseedHex.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) + '...')
|
t.equal(bip39.entropyToMnemonic(ventropy, wordlist), vmnemonic, 'entropyToMnemonic returns ' + vmnemonic.slice(0, 40) + '...')
|
||||||
|
|
||||||
function rng () { return Buffer.from(ventropy, 'hex') }
|
function rng () { return Buffer.from(ventropy, 'hex') }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user