]> git.codecow.com Git - libnemo.git/commitdiff
Password paranoia.
authorChris Duncan <chris@codecow.com>
Mon, 10 Aug 2026 05:04:18 +0000 (22:04 -0700)
committerChris Duncan <chris@codecow.com>
Mon, 10 Aug 2026 05:04:18 +0000 (22:04 -0700)
src/lib/vault/passkey.ts

index 6f82549665b15b0e2bb53d1e5f9e7ca708c4189b..22102e76509b45d13a203a86d467e766b9895a22 100644 (file)
@@ -21,6 +21,7 @@ export async function passkey (action: string, salt: ArrayBuffer, data: Record<s
                return crypto.subtle
                        .importKey('raw', password, 'PBKDF2', false, ['deriveKey'])
                        .then(derivationKey => {
+                               new Uint8Array(password).fill(0)
                                const derivationAlgorithm: Pbkdf2Params = {
                                        name: 'PBKDF2',
                                        hash: 'SHA-512',
@@ -35,6 +36,9 @@ export async function passkey (action: string, salt: ArrayBuffer, data: Record<s
                                        .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(() => {