Build MVP with Pi installer and atomic updates
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
|
||||
import type { FastifyRequest } from "fastify";
|
||||
|
||||
export const SESSION_COOKIE = "companion_session";
|
||||
export const CSRF_COOKIE = "companion_csrf";
|
||||
|
||||
export function randomToken(bytes = 32): string {
|
||||
return randomBytes(bytes).toString("base64url");
|
||||
}
|
||||
|
||||
export function hashToken(token: string): string {
|
||||
return createHash("sha256").update(token).digest("hex");
|
||||
}
|
||||
|
||||
export function safeEqual(left: string, right: string): boolean {
|
||||
const leftBuffer = Buffer.from(left);
|
||||
const rightBuffer = Buffer.from(right);
|
||||
return leftBuffer.length === rightBuffer.length && timingSafeEqual(leftBuffer, rightBuffer);
|
||||
}
|
||||
|
||||
export function clientAddress(request: FastifyRequest): string {
|
||||
return request.ip.slice(0, 64);
|
||||
}
|
||||
Reference in New Issue
Block a user