diff --git a/src/lib/ae_utils/ae_utils__crypto.ts b/src/lib/ae_utils/ae_utils__crypto.ts index 919b6ade..ee506536 100644 --- a/src/lib/ae_utils/ae_utils__crypto.ts +++ b/src/lib/ae_utils/ae_utils__crypto.ts @@ -17,6 +17,8 @@ export let encrypt_content = async function encrypt_content( return { base64, iv }; } + +// This does not handle errors (invalid key/password) well. export let decrypt_content = async function decrypt_content( base64Content: string, iv: Uint8Array, keyData: string ) { diff --git a/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte b/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte index 0bc9aa43..d926563c 100644 --- a/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte +++ b/src/routes/journals/ae_comp__journal_entry_obj_id_view.svelte @@ -131,7 +131,7 @@ $effect(() => { tmp_entry_obj_changed = true; // } } else { - console.log('TEST: tmp_entry_obj == orig_entry_obj'); + // console.log('TEST: tmp_entry_obj == orig_entry_obj'); tmp_entry_obj_changed = false; } }); @@ -168,11 +168,12 @@ async function update_journal_entry() { }; if (tmp_entry_obj?.content && tmp_entry_obj?.private) { - console.log('TEST: Saving encrypted content', tmp_entry_obj?.content); + // console.log('TEST: Saving encrypted content', tmp_entry_obj?.content); content = tmp_entry_obj?.content; + // console.log('TEST: journal_key', journal_key); // Encrypt the content - let encrypted_base64 = await ae_util.encrypt_content(content, test_key); + let encrypted_base64 = await ae_util.encrypt_content(content, journal_key); encrypted_base64_content = encrypted_base64.base64; encryption_iv = encrypted_base64.iv; console.log(`IV: ${encryption_iv}; Encrypted: ${encrypted_base64_content}`); @@ -184,7 +185,7 @@ async function update_journal_entry() { data_kv.content = null; decrypted_content = ''; } else if (decrypted_content && !tmp_entry_obj?.private) { - console.log('TEST: Saving decrypted content', decrypted_content); + // console.log('TEST: Saving decrypted content', decrypted_content); content = decrypted_content; data_kv.content = content; @@ -283,13 +284,25 @@ async function change_journal_id() { // await ae_util.decrypt_content(base64, iv, keyData); // })(); -const test_key = "my-secret-key"; -let content = "This is my test content to encrypt and decrypt."; +// let journal_key: string = $state( 'my-secret-key-111'); +// let journal_key: string = $state($lq__journal_obj?.passcode); +let journal_key = $derived(() => { + return $lq__journal_obj?.passcode || 'my-secret-key-111'; +}); +// console.log('TEST: journal_key', journal_key); +let content = ''; // "This is my test content to encrypt and decrypt."; let encrypted_base64_content: string = $state(''); let encryption_iv: null|Uint8Array = $state(null); let decrypted_content: string = $state(''); let trigger_decrypt: boolean = $state(false); +$effect(() => { + if ($lq__journal_obj?.passcode) { + console.log('TEST: lq__journal_obj?.passcode', $lq__journal_obj?.passcode); + journal_key = $lq__journal_obj?.passcode; + } +}); + $effect(async () => { if (tmp_entry_obj?.content_encrypted && trigger_decrypt) { trigger_decrypt = false; @@ -302,8 +315,21 @@ $effect(async () => { console.log(`IV: ${encryption_iv}; Encrypted: ${encrypted_base64_content}`); } - let decrypted = await ae_util.decrypt_content(encrypted_base64_content, encryption_iv, test_key); + let decrypted: string|null = null; + try { + decrypted = await ae_util.decrypt_content(encrypted_base64_content, encryption_iv, journal_key); + } catch (error) { + console.error('Error decrypting content:', error); + alert('Failed to decrypt content. Please check the passcode.'); + return; + } + // let decrypted = await ae_util.decrypt_content(encrypted_base64_content, encryption_iv, journal_key); // decrypted_content = 'XXX '+decrypted+' XXX'; + + if (!decrypted) { + alert('Failed to decrypt content. Please check the passcode.'); + return; + } decrypted_content = decrypted; if (log_lvl) { console.log('Decrypted content:', decrypted_content); @@ -318,11 +344,11 @@ $effect(async () => { // if (tmp_entry_obj?.content) { // content = tmp_entry_obj?.content; - // let encrypted_base64 = await ae_util.encrypt_content(content, test_key); + // let encrypted_base64 = await ae_util.encrypt_content(content, journal_key); // encrypted_base64_content = encrypted_base64.base64; // encryption_iv = encrypted_base64.iv; - // let decrypted = await ae_util.decrypt_content(encrypted_base64_content, encryption_iv, test_key); + // let decrypted = await ae_util.decrypt_content(encrypted_base64_content, encryption_iv, journal_key); // decrypted_content = decrypted; // if (log_lvl) { // console.log('Decrypted content:', decrypted_content); @@ -880,15 +906,15 @@ $effect(async () => { {/if} - +