private void InitPolyCommit() { if (Size > 0) { PolyCommit = new PolyCommit(); PolyCommit.Setup((int)Math.Ceiling(Size / 3.0), Seed); } }
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); } } }
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; }
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); }
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; }
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); }