import { randomBytes, timingSafeEqual } from "node:crypto";

export function createCapabilityToken(): string {
  return randomBytes(32).toString("base64url");
}

export function tokensEqual(expected: string, provided: string | null | undefined): boolean {
  if (provided === undefined || provided === null || provided.length === 0) {
    return false;
  }
  const expectedBuffer = Buffer.from(expected);
  const providedBuffer = Buffer.from(provided);
  if (expectedBuffer.length !== providedBuffer.length) {
    return false;
  }
  return timingSafeEqual(expectedBuffer, providedBuffer);
}
