コード例 #1
0
 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;
 }
コード例 #2
0
    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());
    }
コード例 #3
0
 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);
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
    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;
    }