Implement PBKDF

This commit is contained in:
2024-05-21 16:00:24 +02:00
parent 4b94352d8b
commit 271d87827d
2 changed files with 47 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
import logger from 'log'
const log = logger('crypto:pbkdf')
export async function pbkdf(password: string, salt: Uint8Array, usages: KeyUsage[]): Promise<CryptoKey> {
log.trace('derive')
log.debug(`Usages : ${usages}`)
const keyMaterial = await window.crypto.subtle.importKey(
"raw",
new TextEncoder().encode(password),
"PBKDF2",
false,
["deriveBits", "deriveKey"],
)
return crypto.subtle.deriveKey(
{
name: "PBKDF2",
iterations: 250_000,
hash: "SHA-512",
salt,
},
keyMaterial,
{name: "AES-GCM", length: 256},
false,
usages,
)
}