UNPKG

thor-devkit

Version:

Typescript library to aid DApp development on VeChain Thor

74 lines 5.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Keystore = void 0; const ethers_1 = require("ethers"); const buffer_1 = require("buffer"); var Keystore; (function (Keystore) { /** * encrypt private key to keystore with given password * @param privateKey the private key to be encrypted * @param password password to encrypt the private key */ function encrypt(privateKey, password) { const hexKey = '0x' + privateKey.toString('hex'); const addr = (0, ethers_1.computeAddress)(hexKey).toLowerCase(); return (0, ethers_1.encryptKeystoreJson)({ address: addr, privateKey: hexKey }, password, { scrypt: { N: 131072, p: 1, r: 8 } }).then(str => normalize(JSON.parse(str))); } Keystore.encrypt = encrypt; /** * decrypt private key from keystore * an error thrown if not well formed * @param ks the keystore * @param password password to decrypt keystore */ function decrypt(ks, password) { return (0, ethers_1.decryptKeystoreJson)(JSON.stringify(ks), password) .then(sk => buffer_1.Buffer.from(sk.privateKey.slice(2), 'hex')); } Keystore.decrypt = decrypt; /** * roughly check whether keystore is well formed * @param ks the keystore */ function wellFormed(ks) { try { validate(normalize(ks)); return true; } catch (_a) { return false; } } Keystore.wellFormed = wellFormed; /** normalize keystore. e.g. lower case keys */ function normalize(obj) { const lowerKey = (o) => { return Object.keys(o).reduce((converted, k) => { let v = o[k]; if (typeof v === 'object') { v = lowerKey(v); } converted[k.toLowerCase()] = v; return converted; }, {}); }; return lowerKey(obj); } function validate(ks) { if (ks.version !== 1 && ks.version !== 3) { throw new Error('unsupported version'); } if (!/^[0-9a-f]{40}$/i.test(ks.address)) { throw new Error('invalid address'); } if (!/^[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}$/i.test(ks.id)) { throw new Error('invalid id'); } if (typeof ks.crypto !== 'object') { throw new Error('invalid crypto'); } return ks; } })(Keystore || (exports.Keystore = Keystore = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5c3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMva2V5c3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlGO0FBQ2pGLG1DQUErQjtBQVUvQixJQUFpQixRQUFRLENBc0V4QjtBQXRFRCxXQUFpQixRQUFRO0lBQ3JCOzs7O09BSUc7SUFDSCxTQUFnQixPQUFPLENBQUMsVUFBa0IsRUFBRSxRQUFnQjtRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxNQUFNLElBQUksR0FBRyxJQUFBLHVCQUFjLEVBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDakQsT0FBTyxJQUFBLDRCQUFtQixFQUN0QixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUNyQyxRQUFRLEVBQ1IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ3hDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFSZSxnQkFBTyxVQVF0QixDQUFBO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFnQixPQUFPLENBQUMsRUFBWSxFQUFFLFFBQWdCO1FBQ2xELE9BQU8sSUFBQSw0QkFBbUIsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQzthQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUhlLGdCQUFPLFVBR3RCLENBQUE7SUFFRDs7O09BR0c7SUFDSCxTQUFnQixVQUFVLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUM7WUFDRCxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDdkIsT0FBTyxJQUFJLENBQUE7UUFDZixDQUFDO1FBQUMsV0FBTSxDQUFDO1lBQ0wsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFQZSxtQkFBVSxhQU96QixDQUFBO0lBRUQsK0NBQStDO0lBQy9DLFNBQVMsU0FBUyxDQUFDLEdBQVc7UUFDMUIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRTtZQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLENBQUMsR0FBSSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JCLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3hCLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ25CLENBQUM7Z0JBQ0QsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDOUIsT0FBTyxTQUFTLENBQUE7WUFDcEIsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQTtRQUNELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFZO1FBQzFCLElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFDMUMsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsaUVBQWlFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDakMsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUNyQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0FBQ0wsQ0FBQyxFQXRFZ0IsUUFBUSx3QkFBUixRQUFRLFFBc0V4QiJ9