Class HMAC256Generator


  • public final class HMAC256Generator
    extends HMACGenerator
    Calculate the HMAC-SHA256 of a key+message. This is compatible with javax.crypto.Mac.getInstance("HmacSHA256"). As of 0.9.12, uses javax.crypto.Mac. Warning - used by Syndie, don't break it.
    • Constructor Detail

      • HMAC256Generator

        public HMAC256Generator​(I2PAppContext context)
        Parameters:
        context - unused
    • Method Detail

      • 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. Outputs 32 bytes to target starting at targetOffset.
        Specified by:
        calculate in class HMACGenerator
        target - out parameter the first 16 bytes contain the HMAC, the last 16 bytes are zero
        targetOffset - offset into target to put the hmac
        Throws:
        UnsupportedOperationException - if the JVM does not support it
        IllegalArgumentException - for bad key or target too small
        Since:
        0.9.12 overrides HMACGenerator
      • calculate

        public void calculate​(byte[] key,
                              byte[] data,
                              int offset,
                              int length,
                              byte[] target,
                              int targetOffset)
        Calculate the HMAC of the data with the given key. Outputs 32 bytes to target starting at targetOffset.
        Parameters:
        key - first 32 bytes used as the key
        Throws:
        UnsupportedOperationException - if the JVM does not support it
        IllegalArgumentException - for bad key or target too small
        Since:
        0.9.38
      • 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.
        Specified by:
        verify in class HMACGenerator
        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, use 32 for HMAC256
        Since:
        0.9.12 overrides HMACGenerator
      • acquire

        Mac acquire()
        Package private for HKDF.
        Returns:
        cached or Mac.getInstance("HmacSHA256")
        Since:
        0.9.48
      • release

        void release​(Mac mac)
        Mac will be reset and initialized with a zero key. Package private for HKDF.
        Since:
        0.9.48