keyvenant
Version:
Keyvenant is a JavaScript tool to generate and export CovenantSQL keys to facilitate key management locally and in web extensions.
76 lines • 4.66 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.
*/
import { createKeystore, recoverFromKeystore } from './lib/keystore';
import { exportToFile, importFromFile } from './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'
}
};
export default 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 createKeystore(password, salt, addrVersion, privateKeyVersion);
}
/**
* dump to keystore file
* @param password
*/
dump(password) {
let keystore = this.create(password);
let name = 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 = importFromFile(filepath);
let salt = this.config.secretKey.salt;
console.log('// keystore from file', keystore);
let privateKey = recoverFromKeystore(password, salt, keystore);
console.log('// private key', privateKey);
return privateKey;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFMUQsaUJBQWlCO0FBQ2pCLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxLQUFLO0lBQ2hCLFFBQVEsRUFBRTtRQUNSLE9BQU8sRUFBRTtZQUNQLE9BQU8sRUFBRSxHQUFHO1lBQ1osT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNELFVBQVUsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsOEJBQThCO1FBQzlCLHNFQUFzRTtRQUN0RSxJQUFJLEVBQUUsa0NBQWtDO0tBQ3pDO0NBQ0YsQ0FBQTtBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUztJQUc1QixZQUFZLEtBQVc7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFBO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQWdCO1FBQ3JCLElBQUksV0FBVyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU87WUFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFFeEMsSUFBSSxpQkFBaUIsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUE7UUFDL0QsSUFBSSxJQUFJLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBRTdDLE9BQU8sY0FBYyxDQUNuQixRQUFRLEVBQ1IsSUFBSSxFQUNKLFdBQVcsRUFDWCxpQkFBaUIsQ0FDbEIsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsUUFBZ0I7UUFDbkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwQyxJQUFJLElBQUksR0FBVyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDeEMsSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQTtRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTlDLElBQUksVUFBVSxHQUFXLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN6QyxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0NBQ0YifQ==