Class CramerShoupCoreEngine


  • public class CramerShoupCoreEngine
    extends java.lang.Object
    Essentially the Cramer-Shoup encryption / decryption algorithms according to "A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack." (Crypto 1998)
    • Constructor Detail

      • CramerShoupCoreEngine

        public CramerShoupCoreEngine()
    • Method Detail

      • init

        public void init​(boolean forEncryption,
                         CipherParameters param,
                         java.lang.String label)
        initialise the CramerShoup engine.
        Parameters:
        forEncryption - whether this engine should encrypt or decrypt
        param - the necessary CramerShoup key parameters.
        label - the label for labelled CS as String
      • init

        public void init​(boolean forEncryption,
                         CipherParameters param)
        initialise the CramerShoup engine.
        Parameters:
        forEncryption - whether this engine should encrypt or decrypt
        param - the necessary CramerShoup key parameters.
      • getInputBlockSize

        public int getInputBlockSize()
        Return the maximum size for an input block to this engine. For Cramer Shoup this is always one byte less than the key size on encryption, and the same length as the key size on decryption. TODO: correct?
        Returns:
        maximum size for an input block.
      • getOutputBlockSize

        public int getOutputBlockSize()
        Return the maximum size for an output block to this engine. For Cramer Shoup this is always one byte less than the key size on decryption, and the same length as the key size on encryption. TODO: correct?
        Returns:
        maximum size for an output block.
      • convertInput

        public java.math.BigInteger convertInput​(byte[] in,
                                                 int inOff,
                                                 int inLen)
      • convertOutput

        public byte[] convertOutput​(java.math.BigInteger result)
      • initSecureRandom

        protected java.security.SecureRandom initSecureRandom​(boolean needed,
                                                              java.security.SecureRandom provided)