You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.8 KiB
JavaScript

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);
}