return crypto.subtle
.importKey('raw', password, 'PBKDF2', false, ['deriveKey'])
.then(derivationKey => {
+ new Uint8Array(password).fill(0)
const derivationAlgorithm: Pbkdf2Params = {
name: 'PBKDF2',
hash: 'SHA-512',
.deriveKey(derivationAlgorithm, derivationKey, derivedKeyType, false, keyUsages)
})
.catch(err => {
+ // DO NOT LOG ERRORS HERE, avoid leaking the password
+ new Uint8Array(password).fill(0)
+ Object.keys(err).forEach(key => delete err[key])
throw new Error('Failed to derive CryptoKey from password')
})
.finally(() => {