package necessary;

import meerkat.protobuf.ConcreteCrypto;
import meerkat.protobuf.Crypto;

import com.google.protobuf.ByteString;
import meerkat.protobuf.Mixing;

import java.math.BigInteger;

public interface General {

    /*
        given RerandomizableEncryptedMessage returns an equivalent ElGamalCiphertext
     */
    ConcreteCrypto.ElGamalCiphertext calcRerandomizable2ElGamal(Crypto.RerandomizableEncryptedMessage enc);

    ByteString getG();
    ByteString getH();

    /*
        fiat shamir assumption
     */
    BigInteger hash(Mixing.ZeroKnowledgeProof.OrProof.ForRandomOracle input);
}