## net.i2p.crypto
Class HMACGenerator

    java.lang.Object
      net.i2p.crypto.HMACGenerator

public class HMACGenerator
extends java.lang.Object

Calculate the HMAC-MD5 of a key+message. All the good stuff occurs in `HMac` and `MD5Digest`.

Constructor Summary
`HMACGenerator(I2PAppContext context)`

Method Summary
`Hash` `calculate(SessionKey key, byte[] data)` Calculate the HMAC of the data with the given key
`void` `calculate(SessionKey key, byte[] data, int offset, int length, byte[] target, int targetOffset)` Calculate the HMAC of the data with the given key
`boolean` `verify(SessionKey key, byte[] curData, int curOffset, int curLength, byte[] origMAC, int origMACOffset, int origMACLength)` Verify the MAC inline, reducing some unnecessary memory churn.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### HMACGenerator

    public HMACGenerator(I2PAppContext context)

Method Detail

### calculate

    public Hash calculate(SessionKey key,
                          byte[] data)

  Calculate the HMAC of the data with the given key

### calculate

    public void calculate(SessionKey key,
                          byte[] data,
                          int offset,
                          int length,
                          byte[] target,
                          int targetOffset)

  Calculate the HMAC of the data with the given key

### verify

    public boolean verify(SessionKey key,
                          byte[] curData,
                          int curOffset,
                          int curLength,
                          byte[] origMAC,
                          int origMACOffset,
                          int origMACLength)

  Verify the MAC inline, reducing some unnecessary memory churn.

  Parameters:
    `key` - session key to verify the MAC with
    `curData` - MAC to verify
    `curOffset` - index into curData to MAC
    `curLength` - how much data in curData do we want to run the HMAC over
    `origMAC` - what do we expect the MAC of curData to equal
    `origMACOffset` - index into origMAC
    `origMACLength` - how much of the MAC do we want to verify