25 lines
584 B
TypeScript
25 lines
584 B
TypeScript
import { hash, verify, Algorithm } from '@node-rs/argon2';
|
|||
|
|
|
||
|
|
const ARGON2_OPTIONS = {
|
||
|
|
algorithm: Algorithm.Argon2id,
|
||
|
|
memoryCost: 19_456,
|
||
|
|
timeCost: 2,
|
||
|
|
parallelism: 1,
|
||
|
|
};
|
||
|
|
|
||
|
|
export async function hashPassword(password: string): Promise<string> {
|
||
|
|
return hash(password, ARGON2_OPTIONS);
|
||
|
|
}
|
||
|
|
|
||
|
|
export async function verifyPassword(password: string, passwordHash: string): Promise<boolean> {
|
||
|
|
try {
|
||
|
|
return await verify(passwordHash, password);
|
||
|
|
} catch {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isArgon2idHash(value: string): boolean {
|
||
|
|
return value.startsWith('$argon2id$');
|
||
|
|
}
|