Class TlsSuiteHMac

java.lang.Object
org.bouncycastle.tls.crypto.impl.TlsSuiteHMac
All Implemented Interfaces:
TlsSuiteMac

public class TlsSuiteHMac extends Object implements TlsSuiteMac
A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
  • Field Details

    • cryptoParams

      protected final TlsCryptoParameters cryptoParams
    • mac

      protected final TlsHMAC mac
    • digestBlockSize

      protected final int digestBlockSize
    • digestOverhead

      protected final int digestOverhead
    • macSize

      protected final int macSize
  • Constructor Details

    • TlsSuiteHMac

      public TlsSuiteHMac(TlsCryptoParameters cryptoParams, TlsHMAC mac)
      Generate a new instance of a TlsMac.
      Parameters:
      cryptoParams - the TLS client context specific crypto parameters.
      mac - The MAC to use.
  • Method Details

    • getMacSize

      protected static int getMacSize(TlsCryptoParameters cryptoParams, TlsMAC mac)
    • getSize

      public int getSize()
      Description copied from interface: TlsSuiteMac
      Return the output length (in bytes) of this MAC.
      Specified by:
      getSize in interface TlsSuiteMac
      Returns:
      The output length of this MAC.
    • calculateMac

      public byte[] calculateMac(long seqNo, short type, byte[] msg, int msgOff, int msgLen)
      Description copied from interface: TlsSuiteMac
      Calculate the MAC for some given data.
      Specified by:
      calculateMac in interface TlsSuiteMac
      Parameters:
      seqNo - The sequence number of the record.
      type - The content type of the message.
      msg - A byte array containing the message.
      msgOff - The number of bytes to skip, before the message starts.
      msgLen - The length of the message.
      Returns:
      A new byte array containing the MAC value.
    • calculateMacConstantTime

      public byte[] calculateMacConstantTime(long seqNo, short type, byte[] msg, int msgOff, int msgLen, int fullLength, byte[] dummyData)
      Description copied from interface: TlsSuiteMac
      Constant time calculation of the MAC for some given data with a given expected length.
      Specified by:
      calculateMacConstantTime in interface TlsSuiteMac
      Parameters:
      seqNo - The sequence number of the record.
      type - The content type of the message.
      msg - A byte array containing the message.
      msgOff - The number of bytes to skip, before the message starts.
      msgLen - The length of the message.
      fullLength - The expected length of the full message.
      dummyData - Random data for padding out the MAC calculation if required.
      Returns:
      A new byte array containing the MAC value.
    • getDigestBlockCount

      protected int getDigestBlockCount(int inputLength)
    • truncate

      protected byte[] truncate(byte[] bs)