function showHideMenu(){ var doc = document.getElementById("moreoptions"); if(doc.className == "hidden-by-default") { doc.className = "moreoptions"; }else{ doc.className = "hidden-by-default"; } } function truncateCryptFields(){ getEncFieldsListIntegers().forEach( element=> { document.getElementById("form_crypt_" + element).value = ""; }); getEncFieldsListStrings().forEach( element=> { document.getElementById("form_crypt_" + element).value = ""; }); } function getEncFieldsListStrings(){ return ['iv','mode','adata','cipher','salt']; } function getEncFieldsListIntegers(){ return ['v','iter','ks','ts']; } function crypt(){ var key = document.getElementById("key").value; var enc = JSON.parse(sjcl.encrypt(key,document.getElementById("form_content").value)); var encFields = getEncFieldsListStrings(); encFields.forEach(element => { document.getElementById("form_crypt_" + element).value = enc[element]; }); var encFields = getEncFieldsListIntegers(); encFields.forEach(element => { document.getElementById("form_crypt_" + element).value = parseInt(enc[element]); }); document.getElementById("form_content").value = enc["ct"]; } function uncrypt(){ var key = document.getElementById("key").value; if( document.getElementById("form_content") ){ var encArr = new Object(); var encFields = getEncFieldsListStrings(); encFields.forEach(element => { encArr[element] = document.getElementById("form_crypt_" + element).value; }); var encFields = getEncFieldsListIntegers(); encFields.forEach(element => { encArr[element] = parseInt(document.getElementById("form_crypt_" + element).value); }); encArr["ct"] = document.getElementById("form_content").value; try{ var clearTxt = sjcl.decrypt(key,JSON.stringify(encArr)); document.getElementById("form_content").value = clearTxt; truncateCryptFields(); } catch(error) { alert("Le pad n'a pas pu être déchiffré."); } }else{ sjclArr["ct"] = document.getElementById("content").innerHTML; try{ var clearTxt = sjcl.decrypt(key,JSON.stringify(sjclArr)); document.getElementById("content").innerHTML = clearTxt; } catch(error) { alert("Le pad n'a pas pu être déchiffré."); } } } function ready(){ document.getElementById("showOptions").addEventListener("click",showHideMenu); if(document.getElementById("buttonCrypt")){ document.getElementById("buttonCrypt").addEventListener("click",crypt); } document.getElementById("buttonUncrypt").addEventListener("click",uncrypt); }