assets/js/e2e_contact.js (view raw)
1const formButton = document.querySelector("#contact-form > button");
2
3formButton.onclick = async (event) => {
4 event.preventDefault();
5
6 // Load OpenPGP Module dynamically
7 const openpgp = await import("/js/openpgp.min.mjs");
8
9 // Retrieve public key
10 const publicKeyArmored = await fetch("/tim@5ika.ch.pub").then((res) =>
11 res.text()
12 );
13 const publicKey = await openpgp.readKey({ armoredKey: publicKeyArmored });
14
15 // Prepare payload
16 const author = document.getElementById("msg-author")?.value || "";
17 const content = document.getElementById("msg-content")?.value || "";
18 const datetime = new Date().toISOString();
19 const payload = { author, content, datetime };
20
21 // Encrypt message
22 const encrypted = await openpgp.encrypt({
23 message: await openpgp.createMessage({
24 text: JSON.stringify(payload),
25 }),
26 encryptionKeys: publicKey,
27 });
28
29 // Show cipher in page
30 const resultElement = document.getElementById("msg-encrypted");
31 resultElement.innerHTML = '';
32 const pElement = document.createElement("p");
33 pElement.innerText =
34 "Voici le message chiffré. Vous pouvez me l'envoyer par n'importe quel moyen, je serais le seul à pouvoir le lire.";
35 resultElement.appendChild(pElement);
36 const preElement = document.createElement("pre");
37 preElement.innerText = encrypted;
38 resultElement.appendChild(preElement);
39};