Package org.bouncycastle.tls.crypto.impl
Class TlsSuiteHMac
- java.lang.Object
-
- org.bouncycastle.tls.crypto.impl.TlsSuiteHMac
-
- All Implemented Interfaces:
TlsSuiteMac
public class TlsSuiteHMac extends java.lang.Object implements TlsSuiteMac
A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
-
-
Field Summary
Fields Modifier and Type Field Description protected TlsCryptoParameters
cryptoParams
protected int
digestBlockSize
protected int
digestOverhead
protected TlsHMAC
mac
protected int
macSize
-
Constructor Summary
Constructors Constructor Description TlsSuiteHMac(TlsCryptoParameters cryptoParams, TlsHMAC mac)
Generate a new instance of a TlsMac.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
calculateMac(long seqNo, short type, byte[] msg, int msgOff, int msgLen)
Calculate the MAC for some given data.byte[]
calculateMacConstantTime(long seqNo, short type, byte[] msg, int msgOff, int msgLen, int fullLength, byte[] dummyData)
Constant time calculation of the MAC for some given data with a given expected length.protected int
getDigestBlockCount(int inputLength)
protected static int
getMacSize(TlsCryptoParameters cryptoParams, TlsMAC mac)
int
getSize()
Return the output length (in bytes) of this MAC.protected byte[]
truncate(byte[] bs)
-
-
-
Field Detail
-
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 Detail
-
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 Detail
-
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 interfaceTlsSuiteMac
- 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 interfaceTlsSuiteMac
- 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 interfaceTlsSuiteMac
- 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)
-
-