// https://stackoverflow.com/questions/40645538/communicate-data-from-popup-to-content-script-injected-by-popup-with-executescri let derivedKeyGlobal; let ownPublicKeyGlobalTesting; console.log('from content script'); async function sendFieldsForEncryption(fields_array, regenerateOwnPublicKeyBoolean, getOwnPublicKeyBoolean) { let message={"url": document.URL, "fields" : fields_array}; if(regenerateOwnPublicKeyBoolean) message.regenerateOwnPublicKey = true; if(getOwnPublicKeyBoolean) message.getOwnPublicKey = true; try { returnValue = await browser.runtime.sendMessage(message); } catch(err) { console.log("Error in browser.runtime.sendMessage in sendFieldsForEncryption"); console.log(err); returnValue={error: err}; }; if(returnValue.error) { console.log(returnValue.error); return returnValue; } return returnValue; } // This function assumes that there is just 1 eventlistener, itself // In case of multiple event handlers, we need to make sure that the 1) other event handlers handle the user data in a privacy-preserving way and // 2) usability - this event handler is executed after all other ones that expect plaintext data (if there are handlers run chronologically after it, then they need to send the current - encrypted - content of the form data) async function handleButtonClick(event) { event.preventDefault(); console.log("Helloworld"); let dataObject = {}; let name = document.getElementById("name").value; let age = document.getElementById("age").value; dataObject["name"] = name; dataObject["age"] = age; // Encrypt name and age let fields = Object.keys(dataObject); let returnValue = await sendFieldsForEncryption([...Object.values(dataObject)], true, true); if(returnValue.error) return; let encryptedFields=returnValue.ciphertextFields; let counter=0; for(obj of fields) { document.getElementById(obj).value=encryptedFields[counter]; console.log(document.getElementById(obj).value); counter++; } console.log("Done with buttonclick handling"); document.getElementById("form").submit(); } function getRandomString(length) { let randomString=""; do { randomString += Math.random().toString(36).substring(2); } while (randomString.length < length+1); return randomString.substring(0,length); } async function handleNButtonClicks(event) { event.preventDefault(); const url=document.URL + "action.php"; const time_measurements = []; const number_of_trials=10; console.log("Hello starting this many trials for case with native server or with SGX:" + number_of_trials); for(let counter=0; counter