public CipherProof doEncrypt(int vote) { var pk = retrieveKey(); var M = retrieveM(); var eg = new DJN.DJN(numCandidates); var cipherProof = eg.mvote<BigInteger, BigInteger>(vote, pk); log("Cipher Created "); return cipherProof; }
internal void decrypt() { var pk = retrieveKey(); var nc = retrieveTotalCandidates(); var c = aggregate(); var djn = new DJN.DJN(nc); string[] lines = System.IO.File.ReadAllLines(@"sk.txt"); var sk = BigInteger.Parse(lines[0]); var res = djn.decrypt(c, pk, sk); foreach (var b in res) log(b.ToString()); }
internal void checkProofs() { var nc = retrieveTotalCandidates(); var pk = retrieveKey(); var djn = new DJN.DJN(nc); var vids = retrieveVoteIDs(); int count = 0; foreach (var vid in vids) { var vote = retrieveProofs(vid); var ok = false; if (vote.Item2.Item1.Length > 0) { ok = djn.checkProof(vote.Item1, vote.Item2, pk); if (ok) count++; setVoteValidity(vid, ok); } log("Vote with id:" + vid + (ok ? " is valid!" : " is invalid!")); } log("Num of valid votes = "+count); }
internal void combineShares() { var allShares = retrieveDecryptedShares(); var pk = retrieveKey(); var m = retrieveM(); //var nc = retrieveTotalCandidates(); var options = retrieveElectionOptions(); var nc = options.Count; var djn = new DJN.DJN(nc); var allres = djn.combine(allShares.ToArray(), pk); for (int i = 0; i < allres.Length; i++) { var label = options[i]; var res = allres[i]; log("Result for " + label +" is " + res); } }
internal BigInteger aggregate() { var ls = retrieveValidVotes(); var pk = retrieveKey(); var nc = retrieveTotalCandidates(); var djn = new DJN.DJN(nc); var c = djn.aggregate(ls, pk); log("Aggregated to " + c.ToString()); addResult(c); return c; }