105 lines
2.8 KiB
JavaScript
105 lines
2.8 KiB
JavaScript
|
var CSRF = $( "input[name='csrfmiddlewaretoken']" ).val();
|
||
|
|
||
|
function csrfSafeMethod(method) {
|
||
|
// these HTTP methods do not require CSRF protection
|
||
|
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
|
||
|
}
|
||
|
|
||
|
function showSetupDialog(titleTxt, bodyTxt) {
|
||
|
var modalDialog = $('#EventSetupModalDialog');
|
||
|
var title = modalDialog.find('.modal-title');
|
||
|
var body = modalDialog.find('.modal-body');
|
||
|
|
||
|
title.text(titleTxt);
|
||
|
var bodyText = bodyTxt;
|
||
|
|
||
|
var p = document.createElement("p");
|
||
|
p.innerHTML = bodyText;
|
||
|
body.empty();
|
||
|
body.append( p );
|
||
|
|
||
|
modalDialog.modal('show');
|
||
|
}
|
||
|
|
||
|
function generateKeys() {
|
||
|
var parameter = $("#event-param").val();
|
||
|
var tempParams = JSON.parse(JSON.parse(parameter).crypto);
|
||
|
//the full objects need to be initalised as per the library, then copy the values we need into it
|
||
|
//I follow Bingsheng's code as to what objects are used in the parameter object
|
||
|
var ctx = new CTX("BN254CX"); //new context we can use
|
||
|
var n = new ctx.BIG();
|
||
|
var g1 = new ctx.ECP();
|
||
|
var g2 = new ctx.ECP2();
|
||
|
|
||
|
//copying the values
|
||
|
n.copy(tempParams.n);
|
||
|
g1.copy(tempParams.g1);
|
||
|
g2.copy(tempParams.g2);
|
||
|
|
||
|
var params = {
|
||
|
n:n,
|
||
|
g1:g1,
|
||
|
g2:g2
|
||
|
}
|
||
|
|
||
|
var PKbytes = [];
|
||
|
var SKbytes = [];
|
||
|
|
||
|
var keypair = keyGen(params);
|
||
|
keypair.PK.toBytes(PKbytes);
|
||
|
keypair.SK.toBytes(SKbytes);
|
||
|
|
||
|
var PKB64Encoded = "";
|
||
|
for(let i = 0; i < PKbytes.length; i++) {
|
||
|
PKB64Encoded += btoa(PKbytes[i]);
|
||
|
}
|
||
|
|
||
|
var SKB64Encoded = "";
|
||
|
for(let j = 0; j < SKbytes.length; j++) {
|
||
|
SKB64Encoded += btoa(SKbytes[j]);
|
||
|
}
|
||
|
|
||
|
$('input#public-key').val(PKB64Encoded);
|
||
|
$('input#secret-key').val(SKB64Encoded);
|
||
|
|
||
|
//mostly code from before here
|
||
|
var blob = new Blob([SKB64Encoded], {type : 'text/plain'});
|
||
|
|
||
|
var dlBtn = $('a#download-btn');
|
||
|
var url = URL.createObjectURL(blob);
|
||
|
$(dlBtn).attr("href", url);
|
||
|
|
||
|
let fileName = "sk-" + EVENT_TITLE.replace(/[\W]/g, "-");
|
||
|
$(dlBtn).attr("download", fileName);
|
||
|
$(dlBtn).attr("disabled", false);
|
||
|
$("#public-submit").attr("disabled", false);
|
||
|
}
|
||
|
|
||
|
function onAfterKeySend() {
|
||
|
showSetupDialog('Public Key Successfully Received',
|
||
|
'Thank you! You can now close down this page.');
|
||
|
}
|
||
|
|
||
|
function submitPublicKey() {
|
||
|
$.ajaxSetup({
|
||
|
beforeSend: function(xhr, settings) {
|
||
|
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
|
||
|
xhr.setRequestHeader("X-CSRFToken", CSRF);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$.ajax({
|
||
|
type : "POST",
|
||
|
url : window.location,
|
||
|
data : { public_key: $('input#public-key').val() },
|
||
|
success : function(){
|
||
|
onAfterKeySend();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$('#EventSetupModalDialog').on('hide.bs.modal', function (e) {
|
||
|
// Update page to reflect the fact that the PK submission has taken place
|
||
|
location.reload();
|
||
|
});
|