UNPKG

keyvenant

Version:

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

39 lines 3.12 kB
import { string2Buffer } from './utils'; import { sha256x2 } from './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) */ export 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 = string2Buffer(salt, 'hex'); const passwordBuf = string2Buffer(password, 'utf8'); // use double sha256 as key derivation function const concated = Buffer.concat([passwordBuf, saltBuf]); const secretKey = sha256x2(concated); return secretKey.toString('hex'); } /** * 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 */ export function verify(password, salt, secretKey) { const secretKeyBuf = string2Buffer(secretKey, 'hex'); // convert strings to buffers const saltBuf = string2Buffer(salt, 'hex'); const passwordBuf = string2Buffer(password, 'utf8'); // prepare secretKeyToVerify const concated = Buffer.concat([passwordBuf, saltBuf]); const secretKeyToVerify = sha256x2(concated); return Buffer.compare(secretKeyBuf, secretKeyToVerify) === 0; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0a2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZWNyZXRrZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFekM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsUUFBZ0IsRUFDaEIsSUFBWTtJQUVaLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO0tBQ2xFO0lBRUQsNkJBQTZCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUVuRCwrQ0FBK0M7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3RELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVwQyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQ3BCLFFBQWdCLEVBQ2hCLElBQVksRUFDWixTQUFpQjtJQUVqQixNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBRXBELDZCQUE2QjtJQUM3QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQzFDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFbkQsNEJBQTRCO0lBQzVCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN0RCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUU1QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzlELENBQUMifQ==