zero-sight-protocol
Version:
A secure, zero-knowledge, PIN-based encryption protocol for custodial Web3 wallets.
17 lines (15 loc) • 569 B
JavaScript
import crypto from 'crypto';
/**
* Derives a 32-byte key from a password or PIN using scrypt.
* @param {string} secret - User's PIN, password, or recovery secret.
* @param {Buffer} salt - A unique salt (from entropy.js).
* @returns {Promise<Buffer>} - Derived 32-byte key.
*/
export function deriveKey(secret, salt) {
return new Promise((resolve, reject) => {
crypto.scrypt(secret, salt, 32, { cost: 16384, blockSize: 8, parallelization: 1 }, (err, derivedKey) => {
if (err) reject(err);
else resolve(derivedKey);
});
});
}