Now wrapping up...

This commit is contained in:
Scott Idem
2025-04-28 18:14:21 -04:00
parent cbb73ed3fd
commit 6094d5a79d
2 changed files with 40 additions and 12 deletions

View File

@@ -17,6 +17,8 @@ export let encrypt_content = async function encrypt_content(
return { base64, iv }; return { base64, iv };
} }
// This does not handle errors (invalid key/password) well.
export let decrypt_content = async function decrypt_content( export let decrypt_content = async function decrypt_content(
base64Content: string, iv: Uint8Array, keyData: string base64Content: string, iv: Uint8Array, keyData: string
) { ) {

View File

@@ -131,7 +131,7 @@ $effect(() => {
tmp_entry_obj_changed = true; tmp_entry_obj_changed = true;
// } // }
} else { } else {
console.log('TEST: tmp_entry_obj == orig_entry_obj'); // console.log('TEST: tmp_entry_obj == orig_entry_obj');
tmp_entry_obj_changed = false; tmp_entry_obj_changed = false;
} }
}); });
@@ -168,11 +168,12 @@ async function update_journal_entry() {
}; };
if (tmp_entry_obj?.content && tmp_entry_obj?.private) { 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; content = tmp_entry_obj?.content;
// console.log('TEST: journal_key', journal_key);
// Encrypt the content // 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; encrypted_base64_content = encrypted_base64.base64;
encryption_iv = encrypted_base64.iv; encryption_iv = encrypted_base64.iv;
console.log(`IV: ${encryption_iv}; Encrypted: ${encrypted_base64_content}`); console.log(`IV: ${encryption_iv}; Encrypted: ${encrypted_base64_content}`);
@@ -184,7 +185,7 @@ async function update_journal_entry() {
data_kv.content = null; data_kv.content = null;
decrypted_content = ''; decrypted_content = '';
} else if (decrypted_content && !tmp_entry_obj?.private) { } 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; content = decrypted_content;
data_kv.content = content; data_kv.content = content;
@@ -283,13 +284,25 @@ async function change_journal_id() {
// await ae_util.decrypt_content(base64, iv, keyData); // await ae_util.decrypt_content(base64, iv, keyData);
// })(); // })();
const test_key = "my-secret-key"; // let journal_key: string = $state( 'my-secret-key-111');
let content = "This is my test content to encrypt and decrypt."; // 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 encrypted_base64_content: string = $state('');
let encryption_iv: null|Uint8Array<ArrayBuffer> = $state(null); let encryption_iv: null|Uint8Array<ArrayBuffer> = $state(null);
let decrypted_content: string = $state(''); let decrypted_content: string = $state('');
let trigger_decrypt: boolean = $state(false); 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 () => { $effect(async () => {
if (tmp_entry_obj?.content_encrypted && trigger_decrypt) { if (tmp_entry_obj?.content_encrypted && trigger_decrypt) {
trigger_decrypt = false; trigger_decrypt = false;
@@ -302,8 +315,21 @@ $effect(async () => {
console.log(`IV: ${encryption_iv}; Encrypted: ${encrypted_base64_content}`); 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'; // decrypted_content = 'XXX '+decrypted+' XXX';
if (!decrypted) {
alert('Failed to decrypt content. Please check the passcode.');
return;
}
decrypted_content = decrypted; decrypted_content = decrypted;
if (log_lvl) { if (log_lvl) {
console.log('Decrypted content:', decrypted_content); console.log('Decrypted content:', decrypted_content);
@@ -318,11 +344,11 @@ $effect(async () => {
// if (tmp_entry_obj?.content) { // if (tmp_entry_obj?.content) {
// content = 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; // encrypted_base64_content = encrypted_base64.base64;
// encryption_iv = encrypted_base64.iv; // 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; // decrypted_content = decrypted;
// if (log_lvl) { // if (log_lvl) {
// console.log('Decrypted content:', decrypted_content); // console.log('Decrypted content:', decrypted_content);
@@ -880,15 +906,15 @@ $effect(async () => {
{/if} {/if}
</article> </article>
<!-- {@html async () => { <!-- {@html async () => {
const { base64, iv } = await encrypt_content(content, test_key); const { base64, iv } = await encrypt_content(content, journal_key);
// console.log('Encrypted content:', base64); // console.log('Encrypted content:', base64);
// console.log('IV:', iv); // console.log('IV:', iv);
const decryptedContent = await decrypt_content(base64, iv, test_key); const decryptedContent = await decrypt_content(base64, iv, journal_key);
// console.log('Decrypted content:', decryptedContent); // console.log('Decrypted content:', decryptedContent);
return base64; return base64;
}} --> }} -->
<!-- {@html encrypt_content($lq__journal_entry_obj?.content, test_key)} --> <!-- {@html encrypt_content($lq__journal_entry_obj?.content, journal_key)} -->
<!-- --{@html encrypted_base64_content}-- --> <!-- --{@html encrypted_base64_content}-- -->
<!-- {@html marked.parse($lq__journal_entry_obj?.content)} --> <!-- {@html marked.parse($lq__journal_entry_obj?.content)} -->
</div> </div>