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