domino-server/secret.js

22 lines
657 B
JavaScript
Raw Permalink Normal View History

2024-07-14 21:41:38 +02:00
const crypto = require('crypto');
/**
* Generate a random base32-encoded secret for authentication.
* @param {number} length - The length of the generated secret.
* @returns {string} - The base32-encoded secret.
*/
function generateRandomSecret(length = 32) {
const bytes = crypto.randomBytes(length);
const base32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'; // RFC 4648 Base32 alphabet
let secret = '';
for (let i = 0; i < bytes.length; i++) {
secret += base32Chars[bytes[i] % 32];
}
return secret;
}
const secret = generateRandomSecret();
console.log('Generated secret:', secret);
console.log(crypto.randomBytes(32).toString('hex'))