UNPKG

keyvenant

Version:

Keyvenant is a JavaScript tool to generate and export CovenantSQL keys to facilitate key management locally and in web extensions.

43 lines 3.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("./utils"); const sha256_1 = require("./utils/sha256"); /** * derive secret key from password user typed-in * use sha256x2 as key derivation function(kdf) * @param password user's password in utf8 * @param salt default salt in hex * @return secretKey string in hex (16 bytes because of sha256) */ function derive(password, salt) { if (typeof password === 'undefined' || password === null) { throw new Error('Must provide password and salt to derive a key'); } // convert strings to buffers const saltBuf = utils_1.string2Buffer(salt, 'hex'); const passwordBuf = utils_1.string2Buffer(password, 'utf8'); // use double sha256 as key derivation function const concated = Buffer.concat([passwordBuf, saltBuf]); const secretKey = sha256_1.sha256x2(concated); return secretKey.toString('hex'); } exports.derive = derive; /** * verify secret key from password and salt * @param password old password in utf8 * @param salt default salt in hex * @param secretKey secret key in hex * @return boolean of verify success or not */ function verify(password, salt, secretKey) { const secretKeyBuf = utils_1.string2Buffer(secretKey, 'hex'); // convert strings to buffers const saltBuf = utils_1.string2Buffer(salt, 'hex'); const passwordBuf = utils_1.string2Buffer(password, 'utf8'); // prepare secretKeyToVerify const concated = Buffer.concat([passwordBuf, saltBuf]); const secretKeyToVerify = sha256_1.sha256x2(concated); return Buffer.compare(secretKeyBuf, secretKeyToVerify) === 0; } exports.verify = verify; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0a2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZWNyZXRrZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBdUM7QUFDdkMsMkNBQXlDO0FBRXpDOzs7Ozs7R0FNRztBQUNILFNBQWdCLE1BQU0sQ0FDcEIsUUFBZ0IsRUFDaEIsSUFBWTtJQUVaLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO0tBQ2xFO0lBRUQsNkJBQTZCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLHFCQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzFDLE1BQU0sV0FBVyxHQUFHLHFCQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRW5ELCtDQUErQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsaUJBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVwQyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQWpCRCx3QkFpQkM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixNQUFNLENBQ3BCLFFBQWdCLEVBQ2hCLElBQVksRUFDWixTQUFpQjtJQUVqQixNQUFNLFlBQVksR0FBRyxxQkFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUVwRCw2QkFBNkI7SUFDN0IsTUFBTSxPQUFPLEdBQUcscUJBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUMsTUFBTSxXQUFXLEdBQUcscUJBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFbkQsNEJBQTRCO0lBQzVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxNQUFNLGlCQUFpQixHQUFHLGlCQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFNUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUM5RCxDQUFDO0FBaEJELHdCQWdCQyJ9