| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -73,16 +73,19 @@ const kdfCache: Record<string, Buffer> = {} | |||
| 73 | 73 | ||
| 74 | 74 | function kdf(password: string, salt: Buffer, n: number) { | |
| 75 | 75 | const cacheKey = `${blake2b256(salt, password).toString('hex')}-${n}` | |
| 76 | - let cached = kdfCache[cacheKey] | ||
| 77 | - if (!cached) { | ||
| 78 | - cached = kdfCache[cacheKey] = pbkdf2Sync(password, salt, n, 32, 'sha256') | ||
| 76 | + const key = kdfCache[cacheKey] || pbkdf2Sync(password, salt, n, 32, 'sha256') | ||
| 77 | + return { | ||
| 78 | + key: key, | ||
| 79 | + cache: () => { | ||
| 80 | + kdfCache[cacheKey] = key | ||
| 81 | + } | ||
| 79 | 82 | } | |
| 80 | - return cached | ||
| 81 | 83 | } | |
| 82 | 84 | ||
| 83 | 85 | function kdfEncrypt(clearText: Buffer, password: string, salt: Buffer): KdfCipherGlob { | |
| 84 | 86 | const iterations = 5000 | |
| 85 | - const key = kdf(password, salt, iterations) | ||
| 87 | + const { key, cache } = kdf(password, salt, iterations) | ||
| 88 | + cache() | ||
| 86 | 89 | const glob = encrypt(clearText, key) | |
| 87 | 90 | return { | |
| 88 | 91 | ...glob, | |
@@ -95,8 +98,13 @@ function kdfEncrypt(clearText: Buffer, password: string, salt: Buffer): KdfCiphe | |||
| 95 | 98 | ||
| 96 | 99 | function kdfDecrypt(glob: KdfCipherGlob, password: string): Buffer { | |
| 97 | 100 | const { salt, n } = glob.kdf | |
| 98 | - const key = kdf(password, Buffer.from(salt, 'hex'), n) | ||
| 99 | - return decrypt(glob, key) | ||
| 101 | + const { key, cache } = kdf(password, Buffer.from(salt, 'hex'), n) | ||
| 102 | + try { | ||
| 103 | + const clearText = decrypt(glob, key) | ||
| 104 | + cache() | ||
| 105 | + return clearText | ||
| 106 | + } finally { | ||
| 107 | + } | ||
| 100 | 108 | } | |
| 101 | 109 | ||
| 102 | 110 | async function handleCommand(cmd: CommandName, arg: any) { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments