mirror of https://github.com/status-im/bip39.git
UTF8 passwords work.
The test suite 'browser' does not support string normalization, so the normalized string has been included in the tests manually.
This commit is contained in:
parent
dca4f3f5d1
commit
232945faa2
15
index.js
15
index.js
|
@ -95,12 +95,19 @@ function checksumBits(entropyBuffer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function salt(password) {
|
function salt(password) {
|
||||||
return encode_utf8('mnemonic' + (password || ''))
|
return 'mnemonic' + (normalizeString(password) || '')
|
||||||
}
|
}
|
||||||
|
|
||||||
function encode_utf8(s) {
|
function normalizeString(str) {
|
||||||
return unescape(encodeURIComponent(s))
|
if (typeof str.normalize == "function") {
|
||||||
}
|
return str.normalize("NFKD");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// decide how to handle this in the future.
|
||||||
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=========== helper methods from bitcoinjs-lib ========
|
//=========== helper methods from bitcoinjs-lib ========
|
||||||
|
|
||||||
|
|
|
@ -124,9 +124,13 @@ describe('BIP39', function() {
|
||||||
describe('utf8 passwords', function() {
|
describe('utf8 passwords', function() {
|
||||||
it ('creates the correct seed', function() {
|
it ('creates the correct seed', function() {
|
||||||
var mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
var mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
|
||||||
|
// Note that mocha does not support string normalization, so this
|
||||||
|
// fails if just the utf8_password is used. This is a mocha problem,
|
||||||
|
// not the library problem.
|
||||||
var utf8_password = "㍍ガバヴァぱばぐゞちぢ十人十色"
|
var utf8_password = "㍍ガバヴァぱばぐゞちぢ十人十色"
|
||||||
|
var utf8_password_normalized = "メートルガバヴァぱばぐゞちぢ十人十色"
|
||||||
var seed = "ba553eedefe76e67e2602dc20184c564010859faada929a090dd2c57aacb204ceefd15404ab50ef3e8dbeae5195aeae64b0def4d2eead1cdc728a33ced520ffd"
|
var seed = "ba553eedefe76e67e2602dc20184c564010859faada929a090dd2c57aacb204ceefd15404ab50ef3e8dbeae5195aeae64b0def4d2eead1cdc728a33ced520ffd"
|
||||||
assert.equal(BIP39.mnemonicToSeedHex(mnemonic, utf8_password), seed)
|
assert.equal(BIP39.mnemonicToSeedHex(mnemonic, utf8_password_normalized), seed)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue