Committing
This commit is contained in:
parent
7e601a25e3
commit
cf2bf7de22
4 changed files with 33 additions and 12 deletions
|
@ -20,6 +20,7 @@
|
||||||
"atob": "^2.1.2",
|
"atob": "^2.1.2",
|
||||||
"body-parser": "^1.18.3",
|
"body-parser": "^1.18.3",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"milagro-crypto-js": "git+https://github.com/milagro-crypto/milagro-crypto-js.git"
|
"milagro-crypto-js": "git+https://github.com/milagro-crypto/milagro-crypto-js.git",
|
||||||
|
"npm": "^6.4.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,7 +244,7 @@ function isEventTimingsValid() {
|
||||||
var end_dateObj = new Date(end_date_time);
|
var end_dateObj = new Date(end_date_time);
|
||||||
|
|
||||||
// Ensure that the start date is before the end date and that the end date is after the start date
|
// Ensure that the start date is before the end date and that the end date is after the start date
|
||||||
if(!(start_dateObj < end_dateObj && end_dateObj > start_dateObj)) {
|
if(!(start_date_time < end_date_time)) {
|
||||||
checkAndAddError({
|
checkAndAddError({
|
||||||
error: "The start date must be before the end date and the end after the start date.",
|
error: "The start date must be before the end date and the end after the start date.",
|
||||||
helpBlockId: "event-timings-error-block"
|
helpBlockId: "event-timings-error-block"
|
||||||
|
|
|
@ -1,4 +1,19 @@
|
||||||
|
function getBytes(arr) {
|
||||||
|
for(var i = 0; i < arr.length; i++) {
|
||||||
|
arr[i] = parseInt(arr[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Uint8Array(arr);
|
||||||
|
}
|
||||||
|
|
||||||
$('#begin-test').click(function() {
|
$('#begin-test').click(function() {
|
||||||
|
var ctx = new CTX("BN254CX");
|
||||||
|
var ciphertext = {
|
||||||
|
C1: null,
|
||||||
|
C2: null,
|
||||||
|
r: null
|
||||||
|
}
|
||||||
|
|
||||||
var ballot = JSON.parse(sjcl.decrypt($('#SK').val(), $('#ballot').text()));
|
var ballot = JSON.parse(sjcl.decrypt($('#SK').val(), $('#ballot').text()));
|
||||||
|
|
||||||
var votes = ballot['encryptedVotes'];
|
var votes = ballot['encryptedVotes'];
|
||||||
|
@ -10,21 +25,26 @@ $('#begin-test').click(function() {
|
||||||
voteNum++;
|
voteNum++;
|
||||||
$('#ballot-result').text($('#ballot-result').text() + "Vote " + voteNum + ": \n ");
|
$('#ballot-result').text($('#ballot-result').text() + "Vote " + voteNum + ": \n ");
|
||||||
|
|
||||||
// For each encrypted fragment within the vote (i.e. the presence of a vote for each option)...
|
// For each encrypted fragment within the vote (i.e. the encoded vote for one option)...
|
||||||
vote['fragments'].forEach(function(fragment) {
|
vote['fragments'].forEach(function(fragment) {
|
||||||
optionNum++;
|
optionNum++;
|
||||||
$('#ballot-result').text($('#ballot-result').text() + "Option " + optionNum + ": \n ");
|
$('#ballot-result').text($('#ballot-result').text() + "Option " + optionNum + ": \n ");
|
||||||
|
|
||||||
var encoding = "";
|
var encoding = "";
|
||||||
console.log(fragment);
|
|
||||||
|
|
||||||
// For each pair of values in C1 and C2 and the randomness r, test whether C2/(C1)^r = g^0 or g^1, and
|
var C1 = getBytes(fragment['C1'].split(","));
|
||||||
// record g's exponent.
|
var C2 = getBytes(fragment['C2'].split(","));
|
||||||
for (var i = 0; i < fragment['C1'].length; i++) {
|
var r = getBytes(fragment['r'].split(","));
|
||||||
cipherText = "("+fragment['C1']+","+fragment['C2']+")";
|
|
||||||
var m = fragment['C2'][i] / Math.pow(fragment['C1'][i], fragment['r'][i]);
|
ciphertext.C1 = new ctx.ECP.fromBytes(C1);
|
||||||
encoding += (m) ? "1" : "0";
|
ciphertext.C2 = new ctx.ECP.fromBytes(C2);
|
||||||
}
|
ciphertext.r = new ctx.BIG.fromBytes(r);
|
||||||
|
|
||||||
|
// For each pair of C1,C2 values (i.e. one ballot's ciphertext) and the randomness used in its encryption r,
|
||||||
|
// test whether C2/(C1)^r = g^0 or g^1, and record g's exponent.
|
||||||
|
var m = ciphertext.C2 / Math.pow(ciphertext.C1, ciphertext.r);
|
||||||
|
console.log("m = "+m);
|
||||||
|
encoding += (m) ? "1" : "0";
|
||||||
|
|
||||||
// Somehow, this string of 1s and 0s here needs to become _one_ 1 or 0 to signify whether the option was
|
// Somehow, this string of 1s and 0s here needs to become _one_ 1 or 0 to signify whether the option was
|
||||||
// voted for or not.
|
// voted for or not.
|
||||||
|
|
Reference in a new issue