Class TlsBlockCipher

  • All Implemented Interfaces:
    TlsCipher

    public class TlsBlockCipher
    extends java.lang.Object
    implements TlsCipher
    A generic TLS 1.0-1.2 block cipher. This can be used for AES or 3DES for example.
    • Field Detail

      • randomData

        protected final byte[] randomData
      • encryptThenMAC

        protected final boolean encryptThenMAC
      • useExplicitIV

        protected final boolean useExplicitIV
      • useExtraPadding

        protected final boolean useExtraPadding
    • Method Detail

      • getCiphertextLimit

        public int getCiphertextLimit​(int plaintextLimit)
        Description copied from interface: TlsCipher
        Return the maximum size for the ciphertext given plaintextlimit bytes of plaintext.
        Specified by:
        getCiphertextLimit in interface TlsCipher
        Parameters:
        plaintextLimit - the maximum number of bytes of plaintext.
        Returns:
        the maximum size of the ciphertext for plaintextlimit bytes of input.
      • getPlaintextLimit

        public int getPlaintextLimit​(int ciphertextLimit)
        Description copied from interface: TlsCipher
        Return the maximum size for the plaintext given ciphertextlimit bytes of ciphertext.
        Specified by:
        getPlaintextLimit in interface TlsCipher
        Parameters:
        ciphertextLimit - the maximum number of bytes of ciphertext.
        Returns:
        the maximum size of the plaintext for ciphertextlimit bytes of input.
      • encodePlaintext

        public byte[] encodePlaintext​(long seqNo,
                                      short type,
                                      byte[] plaintext,
                                      int offset,
                                      int len)
                               throws java.io.IOException
        Description copied from interface: TlsCipher
        Encrypt and MAC the passed in plain text using the current cipher suite.
        Specified by:
        encodePlaintext in interface TlsCipher
        Parameters:
        seqNo - sequence number of the message represented by plaintext.
        type - content type of the message represented by plaintext.
        plaintext - array holding input plain text to the cipher.
        offset - offset into input array the plain text starts at.
        len - length of the plaintext in the array.
        Returns:
        the resulting cipher text.
        Throws:
        java.io.IOException
      • decodeCiphertext

        public byte[] decodeCiphertext​(long seqNo,
                                       short type,
                                       byte[] ciphertext,
                                       int offset,
                                       int len)
                                throws java.io.IOException
        Description copied from interface: TlsCipher
        Validate and decrypt the passed in cipher text using the current cipher suite.
        Specified by:
        decodeCiphertext in interface TlsCipher
        Parameters:
        seqNo - sequence number of the message represented by ciphertext.
        type - content type of the message represented by ciphertext.
        ciphertext - array holding input cipher text to the cipher.
        offset - offset into input array the cipher text starts at.
        len - length of the cipher text in the array.
        Returns:
        the resulting plaintext.
        Throws:
        java.io.IOException
      • checkPaddingConstantTime

        protected int checkPaddingConstantTime​(byte[] buf,
                                               int off,
                                               int len,
                                               int blockSize,
                                               int macSize)
      • chooseExtraPadBlocks

        protected int chooseExtraPadBlocks​(java.security.SecureRandom r,
                                           int max)
      • lowestBitSet

        protected int lowestBitSet​(int x)