Files
openclaw/src/infra/secure-random.ts
Jacob Tomlinson ae703ab0e7 infra: harden identifier entropy and delay jitter (#57744)
* infra: harden identifier entropy and delay jitter

* test: make randomness hardening deterministic in CI
2026-03-30 16:57:30 +01:00

25 lines
825 B
TypeScript

import { randomBytes, randomInt, randomUUID } from "node:crypto";
export function generateSecureUuid(): string {
return randomUUID();
}
export function generateSecureToken(bytes = 16): string {
return randomBytes(bytes).toString("base64url");
}
export function generateSecureHex(bytes = 16): string {
return randomBytes(bytes).toString("hex");
}
/** Returns a cryptographically secure fraction in the range [0, 1). */
export function generateSecureFraction(): number {
return randomBytes(4).readUInt32BE(0) / 0x1_0000_0000;
}
export function generateSecureInt(maxExclusive: number): number;
export function generateSecureInt(minInclusive: number, maxExclusive: number): number;
export function generateSecureInt(a: number, b?: number): number {
return typeof b === "number" ? randomInt(a, b) : randomInt(a);
}