keyvenant
Version:
Keyvenant is a JavaScript tool to generate and export CovenantSQL keys to facilitate key management locally and in web extensions.
79 lines • 4.64 kB
JavaScript
;
/**
* Copyright 2018 The CovenantSQL Authors.
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const keystore_1 = require("./lib/keystore");
const utils_1 = require("./lib/utils");
// default config
const defaultConfig = {
isMainNet: false,
versions: {
address: {
mainNet: 0x0,
testNet: 0x6f
},
privateKey: 0x23
},
secretKey: {
// deprecated salt for testnet
// salt: Buffer.from('auxten-key-salt-auxten', 'utf8').toString('hex')
salt: 'c04ea47149654131794b6a702f394543'
}
};
class Keyvenant {
constructor(props) {
this.config = (props && props.config) || defaultConfig;
}
/**
* create keystore & return
* @param password
* @return keystore object
*/
create(password) {
let addrVersion = this.config.isMainNet
? this.config.versions.address.mainNet
: this.config.versions.address.testNet;
let privateKeyVersion = this.config.versions.privateKey;
let salt = this.config.secretKey.salt;
return keystore_1.createKeystore(password, salt, addrVersion, privateKeyVersion);
}
/**
* dump to keystore file
* @param password
*/
dump(password) {
let keystore = this.create(password);
let name = utils_1.exportToFile(keystore);
console.log('Keystore exported: ', name);
}
/**
* recover private key from keystore and password
* only in Node env
* @param password
* @param filepath keystore filepath
* @return private key string in hex
*/
recover(password, filepath) {
let keystore = utils_1.importFromFile(filepath);
let salt = this.config.secretKey.salt;
console.log('// keystore from file', keystore);
let privateKey = keystore_1.recoverFromKeystore(password, salt, keystore);
console.log('// private key', privateKey);
return privateKey;
}
}
exports.default = Keyvenant;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOztBQUVILDZDQUFvRTtBQUNwRSx1Q0FBMEQ7QUFFMUQsaUJBQWlCO0FBQ2pCLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxHQUFHO1lBQ1osT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNELFVBQVUsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsOEJBQThCO1FBQzlCLHNFQUFzRTtRQUN0RSxJQUFJLEVBQUUsa0NBQWtDO0tBQ3pDO0NBQ0YsQ0FBQTtBQUVELE1BQXFCLFNBQVM7SUFHNUIsWUFBWSxLQUFXO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsQ0FBQTtJQUN4RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxRQUFnQjtRQUNyQixJQUFJLFdBQVcsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFBO1FBRXhDLElBQUksaUJBQWlCLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFBO1FBQy9ELElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQTtRQUU3QyxPQUFPLHlCQUFjLENBQ25CLFFBQVEsRUFDUixJQUFJLEVBQ0osV0FBVyxFQUNYLGlCQUFpQixDQUNsQixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxRQUFnQjtRQUNuQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BDLElBQUksSUFBSSxHQUFXLG9CQUFZLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxRQUFRLEdBQUcsc0JBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxJQUFJLElBQUksR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUU5QyxJQUFJLFVBQVUsR0FBVyw4QkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRXRFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDekMsT0FBTyxVQUFVLENBQUE7SUFDbkIsQ0FBQztDQUNGO0FBdkRELDRCQXVEQyJ9