package profiling; import com.google.protobuf.InvalidProtocolBufferException; import meerkat.crypto.concrete.ECElGamalEncryption; import meerkat.protobuf.ConcreteCrypto; import meerkat.protobuf.Crypto; import meerkat.protobuf.Voting; import meerkat.mixer.Utils; import org.factcenter.qilin.primitives.concrete.ECElGamal; import org.factcenter.qilin.primitives.concrete.ECGroup; import java.math.BigInteger; import java.util.Random; /** * Created by Tzlil on 1/20/2016. */ public class Rerandomize { Random rand; ECElGamal.SK key; ECGroup group; ECElGamalEncryption enc; ConcreteCrypto.ElGamalPublicKey serializedPk; int n; Crypto.EncryptionRandomness[] randomnesses; Crypto.RerandomizableEncryptedMessage[] encryptedMessage; public void setup() throws Exception { rand = new Random(); group = new ECGroup("secp256k1"); BigInteger sk = ECElGamal.generateSecretKey(group, rand); key = new ECElGamal.SK(group, sk); serializedPk = Utils.serializePk(group, key); enc = new ECElGamalEncryption(); enc.init(serializedPk); int LogVotes = 10; int layers = 2*LogVotes - 1; n = layers * (1<