|  | 
| 1 | 1 | import bip39Words from '@/lib/bip39-words' | 
| 2 |  | -import { fromHex, toHex } from '@/lib/hex' | 
| 3 | 2 | 
 | 
| 4 | 3 | export async function deriveKey (passphrase, salt) { | 
| 5 | 4 |   const enc = new TextEncoder() | 
| @@ -28,7 +27,7 @@ export async function deriveKey (passphrase, salt) { | 
| 28 | 27 |   ) | 
| 29 | 28 | 
 | 
| 30 | 29 |   const rawKey = await window.crypto.subtle.exportKey('raw', key) | 
| 31 |  | -  const hash = toHex(await window.crypto.subtle.digest('SHA-256', rawKey)) | 
|  | 30 | +  const hash = Buffer.from(await window.crypto.subtle.digest('SHA-256', rawKey)).toString('hex') | 
| 32 | 31 |   const unextractableKey = await window.crypto.subtle.importKey( | 
| 33 | 32 |     'raw', | 
| 34 | 33 |     rawKey, | 
| @@ -59,19 +58,19 @@ export async function encrypt ({ key, hash }, value) { | 
| 59 | 58 |   ) | 
| 60 | 59 |   return { | 
| 61 | 60 |     keyHash: hash, | 
| 62 |  | -    iv: toHex(iv.buffer), | 
| 63 |  | -    value: toHex(encrypted) | 
|  | 61 | +    iv: Buffer.from(iv).toString('hex'), | 
|  | 62 | +    value: Buffer.from(encrypted).toString('hex') | 
| 64 | 63 |   } | 
| 65 | 64 | } | 
| 66 | 65 | 
 | 
| 67 | 66 | export async function decrypt (key, { iv, value }) { | 
| 68 | 67 |   const decrypted = await window.crypto.subtle.decrypt( | 
| 69 | 68 |     { | 
| 70 | 69 |       name: 'AES-GCM', | 
| 71 |  | -      iv: fromHex(iv) | 
|  | 70 | +      iv: Buffer.from(iv, 'hex') | 
| 72 | 71 |     }, | 
| 73 | 72 |     key, | 
| 74 |  | -    fromHex(value) | 
|  | 73 | +    Buffer.from(value, 'hex') | 
| 75 | 74 |   ) | 
| 76 | 75 |   const decoded = new TextDecoder().decode(decrypted) | 
| 77 | 76 |   return JSON.parse(decoded) | 
|  | 
0 commit comments