Class CramerShoupCoreEngine

java.lang.Object
org.bouncycastle.crypto.engines.CramerShoupCoreEngine

public class CramerShoupCoreEngine extends 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 Details

    • CramerShoupCoreEngine

      public CramerShoupCoreEngine()
  • Method Details

    • init

      public void init(boolean forEncryption, CipherParameters param, 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 BigInteger convertInput(byte[] in, int inOff, int inLen)
    • convertOutput

      public byte[] convertOutput(BigInteger result)
    • encryptBlock

      public CramerShoupCiphertext encryptBlock(BigInteger input)
    • decryptBlock

      Throws:
      CramerShoupCoreEngine.CramerShoupCiphertextException
    • initSecureRandom

      protected SecureRandom initSecureRandom(boolean needed, SecureRandom provided)