import { hash, verify } from "@node-rs/argon2";

// Argon2id-Parameter (OWASP-Empfehlung als sichere Basis).
const ARGON2_OPTIONS = {
  memoryCost: 19456, // 19 MiB
  timeCost: 2,
  parallelism: 1,
} as const;

/** Erzeugt einen sicheren Argon2id-Hash für ein Klartext-Passwort. */
export async function hashPassword(plain: string): Promise<string> {
  return hash(plain, ARGON2_OPTIONS);
}

/** Prüft ein Klartext-Passwort gegen einen gespeicherten Hash. */
export async function verifyPassword(
  storedHash: string,
  plain: string,
): Promise<boolean> {
  try {
    return await verify(storedHash, plain);
  } catch {
    // Ungültiger Hash o. Ä. — niemals Details nach außen geben.
    return false;
  }
}
