Files
ignis/shims/crypto/random-bytes.js
2026-03-07 18:11:46 +01:00

21 lines
524 B
JavaScript

// Shim for crypto.randomBytes
// Uses Web Crypto API under the hood
export function randomBytes(size) {
const buf = new Uint8Array(size);
crypto.getRandomValues(buf);
// Add Buffer-like convenience methods
buf.toString = function(encoding) {
if (encoding === 'hex') {
return Array.from(this).map(b => b.toString(16).padStart(2, '0')).join('');
}
if (encoding === 'base64') {
return btoa(String.fromCharCode(...this));
}
return new TextDecoder().decode(this);
};
return buf;
}