41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
|
const persistence = require("../core/persistence/persistence");
|
||
|
const cryptoUtil = require("../core/cryptoUtil");
|
||
|
|
||
|
const bip39 = require('bip39');
|
||
|
const bip32 = require('bip32');
|
||
|
|
||
|
module.exports.description = "Create keys using a randomly generated seed";
|
||
|
|
||
|
module.exports.builder = (yargs) => {
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports.handler = (argv) => {
|
||
|
console.log("Create keys using a randomly generated seed");
|
||
|
persistence().LoadDB()
|
||
|
.then(db => {
|
||
|
const mnemonic = bip39.generateMnemonic();
|
||
|
console.log("Backup generated Mnemonic: ", mnemonic);
|
||
|
|
||
|
// TODO: validate user backed up mnemonic
|
||
|
const seed = bip39.mnemonicToSeedSync(mnemonic);
|
||
|
console.log("Seed: ", seed.toString('hex'))
|
||
|
const node = bip32.fromSeed(seed);
|
||
|
console.log("xpriv: ", node.toBase58());
|
||
|
|
||
|
// TODO: Get user key password
|
||
|
const password = "vanished";
|
||
|
// TODO: Encrypt text securely...
|
||
|
const encryptedPrivateKey = cryptoUtil.encrypt(node.toBase58(), password);
|
||
|
|
||
|
console.log("Encrypted Private Key: ", encryptedPrivateKey);
|
||
|
|
||
|
// Check if a key exist...
|
||
|
db.Key.create({
|
||
|
encryptedPrivateKey: encryptedPrivateKey,
|
||
|
name: "FirstKey"
|
||
|
}).then(key => {
|
||
|
console.log("Successfully created: ", key.name)
|
||
|
})
|
||
|
})
|
||
|
}
|