Merge pull request #804 from AlexBHarley/alexbharley/bip39
Use built in bip39
This commit is contained in:
commit
7a48c1e330
@ -49,18 +49,14 @@
|
||||
"elliptic": "^6.5.3",
|
||||
"js-sha3": "^0.8.0",
|
||||
"libsodium-wrappers": "^0.7.6",
|
||||
"pbkdf2": "^3.1.2",
|
||||
"ripemd160": "^2.0.2",
|
||||
"sha.js": "^2.4.11",
|
||||
"unorm": "^1.5.0"
|
||||
"sha.js": "^2.4.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/bn.js": "^4.11.6",
|
||||
"@types/elliptic": "^6.4.12",
|
||||
"@types/libsodium-wrappers": "^0.7.7",
|
||||
"@types/pbkdf2": "^3.1.0",
|
||||
"@types/ripemd160": "^2.0.0",
|
||||
"@types/sha.js": "^2.4.0",
|
||||
"@types/unorm": "^1.3.27"
|
||||
"@types/sha.js": "^2.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
import { fromHex, toHex, toUtf8 } from "@cosmjs/encoding";
|
||||
import { fromHex, toHex } from "@cosmjs/encoding";
|
||||
import * as bip39 from "bip39";
|
||||
import { pbkdf2 } from "pbkdf2";
|
||||
import * as unorm from "unorm";
|
||||
|
||||
import { EnglishMnemonic } from "./englishmnemonic";
|
||||
|
||||
@ -36,30 +34,6 @@ export class Bip39 {
|
||||
}
|
||||
|
||||
public static async mnemonicToSeed(mnemonic: EnglishMnemonic, password?: string): Promise<Uint8Array> {
|
||||
// reimplementation of bip39.mnemonicToSeed using the asynchronous
|
||||
// interface of https://www.npmjs.com/package/pbkdf2
|
||||
const mnemonicBytes = toUtf8(unorm.nfkd(mnemonic.toString()));
|
||||
const salt = "mnemonic" + (password ? unorm.nfkd(password) : "");
|
||||
const saltBytes = toUtf8(salt);
|
||||
return this.pbkdf2(mnemonicBytes, saltBytes, 2048, 64, "sha512");
|
||||
}
|
||||
|
||||
// convert pbkdf2's callback interface to Promise interface
|
||||
private static async pbkdf2(
|
||||
secret: Uint8Array,
|
||||
salt: Uint8Array,
|
||||
iterations: number,
|
||||
keylen: number,
|
||||
digest: string,
|
||||
): Promise<Uint8Array> {
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
pbkdf2(secret, salt, iterations, keylen, digest, (err, derivedKey) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(new Uint8Array(derivedKey));
|
||||
}
|
||||
});
|
||||
});
|
||||
return new Uint8Array(await bip39.mnemonicToSeed(mnemonic.toString(), password));
|
||||
}
|
||||
}
|
||||
|
||||
19
yarn.lock
19
yarn.lock
@ -1530,13 +1530,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
|
||||
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
|
||||
|
||||
"@types/pbkdf2@^3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1"
|
||||
integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/prettier@^1.19.0":
|
||||
version "1.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f"
|
||||
@ -1574,11 +1567,6 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/unorm@^1.3.27":
|
||||
version "1.3.28"
|
||||
resolved "https://registry.yarnpkg.com/@types/unorm/-/unorm-1.3.28.tgz#580141162f2fd221faae2b2d68da6c839402c375"
|
||||
integrity sha512-l3uh18vcvkQ964HSK7Tx0YbhxN/Hj+k1w3nLT08n770lngqVKljmF7Ht4e7elFbx6L2WYse97whtpJOo8MHtxQ==
|
||||
|
||||
"@types/ws@^6.0.1":
|
||||
version "6.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.4.tgz#7797707c8acce8f76d8c34b370d4645b70421ff1"
|
||||
@ -6308,7 +6296,7 @@ path-type@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
pbkdf2@^3.0.3, pbkdf2@^3.0.9, pbkdf2@^3.1.2:
|
||||
pbkdf2@^3.0.3, pbkdf2@^3.0.9:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
|
||||
integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
|
||||
@ -7984,11 +7972,6 @@ universalify@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
|
||||
|
||||
unorm@^1.5.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af"
|
||||
integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==
|
||||
|
||||
unpipe@1.0.0, unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user