Example #1
0
 private void InitPolyCommit()
 {
     if (Size > 0)
     {
         PolyCommit = new PolyCommit();
         PolyCommit.Setup((int)Math.Ceiling(Size / 3.0), Seed);
     }
 }
Example #2
0
 private void InitPolyCommit()
 {
     if (Size > 0)
     {
         PolyCommit = new PolyCommit();
         PolyCommit.Setup((int)Math.Ceiling(Size / 3.0), Seed);
     }
 }
Example #3
0
        public ShareRenewalRound(Party me, Quorum quorumFrom, Quorum quorumTo, BigZp[] startShares, BigInteger prime, int startSharesPerParty, int finalSharesPerParty, ulong protocolId)
            : base(me, new Quorum[] { quorumFrom, quorumTo }, protocolId)
        {
            FinalSharesPerParty = finalSharesPerParty;
            StartSharesPerParty = startSharesPerParty;
            StartShares         = startShares;
            Prime = prime;
            ReceivedReshareCount = 0;

            foreach (var from in Quorums[0].Members)
            {
                sharesRecv[from] = new List <ShareWitnessMsg <BigZp> > [startSharesPerParty];
                for (int i = 0; i < startSharesPerParty; i++)
                {
                    numCommitsRecv[from] = 0;
                    sharesRecv[from][i]  = new List <ShareWitnessMsg <BigZp> >();
                }
            }

            StartShareCount = Quorums[FROM].Size * StartSharesPerParty;
            FinalShareCount = Quorums[TO].Size * FinalSharesPerParty;
            NewPolyDeg      = (int)Math.Ceiling(FinalShareCount / 3.0) - 1;

            VandermondeInv = StaticCache.GetVandermondeInvColumn(Prime, StartShareCount);

            if (Quorums[TO].HasMember(Me.Id))
            {
                var quorumIter = Quorums[TO].Members.GetEnumerator();
                int i          = 0;
                while (quorumIter.MoveNext())
                {
                    if (Me.Id == quorumIter.Current)
                    {
                        MyQuorumIndex = i;
                        break;
                    }
                    i++;
                }
            }

            if (Quorums[TO] is ByzantineQuorum)
            {
                var byzTo = Quorums[TO] as ByzantineQuorum;
                if (FinalShareCount == Quorums[TO].Size)
                {
                    PolyCommit = byzTo.PolyCommit;
                }
                else
                {
                    PolyCommit = new PolyCommit();
                    PolyCommit.Setup(NewPolyDeg + 1, byzTo.Seed);
                }
            }
        }
Example #4
0
        public static MG GenerateCommitment(int numShares, BigZp[] coeffs, BigInteger prime, ref MG[] witnesses, PolyCommit polyCommit)
        {
            var iz = new BigZp[numShares];
            for (int i = 0; i < numShares; i++)
            {
                iz[i] = new BigZp(prime, new BigInteger(i + 1));
            }

            byte[] proof = null;
            MG commitment = polyCommit.Commit(coeffs, iz, ref witnesses, ref proof, false);

            return commitment;
        }
Example #5
0
        public RandGenProtocol(Party me, Quorum quorum, BigZp myRandom, BigInteger prime)
            : base(me, quorum)
        {
            MyRandom   = myRandom;
            Prime      = prime;
            PolyDegree = (int)Math.Ceiling(Quorum.Size / 3.0) - 1;

            if (Quorum is ByzantineQuorum)
            {
                PolyCommit = (Quorum as ByzantineQuorum).PolyCommit;
            }

            CombinedShare = new BigZp(Prime);
        }
Example #6
0
        public SharingProtocol(Party me, int srcParty, Quorum dstQuorum, BigZp secret, BigInteger prime, ulong protocolId)
            : base(me, QuorumPlusParty(dstQuorum, srcParty), protocolId)
        {
            Prime  = prime;
            Secret = secret;

            SrcParty  = srcParty;
            DstQuorum = dstQuorum;

            if (dstQuorum is ByzantineQuorum)
            {
                PolyCommit = ((ByzantineQuorum)dstQuorum).PolyCommit;
            }
            PolyDegree = (int)Math.Ceiling(DstQuorum.Size / 3.0) - 1;
        }
Example #7
0
        public static MG GenerateCommitment(int numShares, BigZp[] coeffs, BigInteger prime, ref MG[] witnesses, PolyCommit polyCommit)
        {
            var iz = new BigZp[numShares];

            for (int i = 0; i < numShares; i++)
            {
                iz[i] = new BigZp(prime, new BigInteger(i + 1));
            }

            byte[] proof      = null;
            MG     commitment = polyCommit.Commit(coeffs, iz, ref witnesses, ref proof, false);

            return(commitment);
        }