mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-23 05:47:59 -05:00
26 lines
820 B
TypeScript
26 lines
820 B
TypeScript
import { type ClassValue, clsx } from 'clsx'
|
|
import { createHash } from 'crypto'
|
|
import { twMerge } from 'tailwind-merge'
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
/**
|
|
* Hashes a secret using SHA-256 with a salt
|
|
* @param secret - The secret to hash
|
|
* @param salt - Optional salt to use for hashing. If not provided, a random salt will be generated
|
|
* @returns A promise that resolves to an object containing the hashed secret and salt
|
|
*/
|
|
export async function hashSecret(
|
|
secret: string,
|
|
salt?: string
|
|
): Promise<{ hash: string; salt: string }> {
|
|
const useSalt =
|
|
salt || createHash('sha256').update(crypto.randomUUID()).digest('hex').slice(0, 16)
|
|
const hash = createHash('sha256')
|
|
.update(secret + useSalt)
|
|
.digest('hex')
|
|
return { hash, salt: useSalt }
|
|
}
|