com.ibm.crypto.fips.provider

Class HmacSHA256

  • java.lang.Object
    • javax.crypto.MacSpi
      • com.ibm.crypto.fips.provider.HmacSHA256
  • All Implemented Interfaces:
    java.lang.Cloneable


    public final class HmacSHA256
    extends javax.crypto.MacSpi
    implements java.lang.Cloneable
    This is an implementation of the HMAC-SHA256 algorithm.
    • Constructor Summary

      Constructors 
      Constructor and Description
      HmacSHA256()
      Standard constructor, creates a new HmacSHA256 instance.
    • Method Summary

      Methods 
      Modifier and Type Method and Description
      java.lang.Object clone() 
      protected byte[] engineDoFinal()
      Completes the HMAC computation and resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
      protected int engineGetMacLength()
      Returns the length of the HMAC in bytes.
      protected void engineInit(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)
      Initializes the HMAC with the given secret key and algorithm parameters.
      protected void engineReset()
      Resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
      protected void engineUpdate(byte input)
      Processes the given byte.
      protected void engineUpdate(byte[] input, int offset, int len)
      Processes the first len bytes in input, starting at offset.
      protected void finalize()
      This function zeroizes the key so that it isn't in memory when GC is done.
      java.lang.Object internalClone() 
      protected byte[] internalDoFinal()
      Completes the HMAC computation and resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
      protected int internalGetMacLength()
      Returns the length of the HMAC in bytes.
      protected void internalInit(java.security.Key key, java.security.spec.AlgorithmParameterSpec params)
      Initializes the HMAC with the given secret key and algorithm parameters.
      protected void internalReset()
      Resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
      protected void internalUpdate(byte input)
      Processes the given byte.
      protected void internalUpdate(byte[] input, int offset, int len)
      Processes the first len bytes in input, starting at offset.
      void zeroize()
      This function zeroizes the key so that it isn't in memory
      • Methods inherited from class javax.crypto.MacSpi

        engineUpdate
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HmacSHA256

        public HmacSHA256()
                   throws java.security.NoSuchAlgorithmException
        Standard constructor, creates a new HmacSHA256 instance. Verify the JCE framework in the constructor.
        Throws:
        java.lang.SecurityException - if fails to verify the JCE framework.
        java.security.NoSuchAlgorithmException
    • Method Detail

      • engineGetMacLength

        protected int engineGetMacLength()
        Returns the length of the HMAC in bytes.
        Specified by:
        engineGetMacLength in class javax.crypto.MacSpi
        Returns:
        the HMAC length in bytes.
        Throws:
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalGetMacLength

        protected int internalGetMacLength()
        Returns the length of the HMAC in bytes.
        Returns:
        the HMAC length in bytes.
      • engineInit

        protected void engineInit(java.security.Key key,
                      java.security.spec.AlgorithmParameterSpec params)
                           throws java.security.InvalidKeyException,
                                  java.security.InvalidAlgorithmParameterException
        Initializes the HMAC with the given secret key and algorithm parameters.
        Specified by:
        engineInit in class javax.crypto.MacSpi
        Parameters:
        key - the secret key.
        params - the algorithm parameters.
        Throws:
        java.security.InvalidKeyException - if the given key is inappropriate for initializing this MAC.
        java.security.InvalidAlgorithmParameterException - if the given algorithm parameters are inappropriate for this MAC.
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalInit

        protected void internalInit(java.security.Key key,
                        java.security.spec.AlgorithmParameterSpec params)
                             throws java.security.InvalidKeyException,
                                    java.security.InvalidAlgorithmParameterException
        Initializes the HMAC with the given secret key and algorithm parameters.
        Parameters:
        key - the secret key.
        params - the algorithm parameters.
        Throws:
        java.security.InvalidKeyException - if the given key is inappropriate for initializing this MAC.
        java.security.InvalidAlgorithmParameterException - if the given algorithm parameters are inappropriate for this MAC.
      • engineUpdate

        protected void engineUpdate(byte input)
        Processes the given byte.
        Specified by:
        engineUpdate in class javax.crypto.MacSpi
        Parameters:
        input - the input byte to be processed.
        Throws:
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalUpdate

        protected void internalUpdate(byte input)
        Processes the given byte.
        Parameters:
        input - the input byte to be processed.
      • engineUpdate

        protected void engineUpdate(byte[] input,
                        int offset,
                        int len)
        Processes the first len bytes in input, starting at offset.
        Specified by:
        engineUpdate in class javax.crypto.MacSpi
        Parameters:
        input - the input buffer.
        offset - the offset in input where the input starts.
        len - the number of bytes to process.
        Throws:
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalUpdate

        protected void internalUpdate(byte[] input,
                          int offset,
                          int len)
        Processes the first len bytes in input, starting at offset.
        Parameters:
        input - the input buffer.
        offset - the offset in input where the input starts.
        len - the number of bytes to process.
      • engineDoFinal

        protected byte[] engineDoFinal()
        Completes the HMAC computation and resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
        Specified by:
        engineDoFinal in class javax.crypto.MacSpi
        Returns:
        the HMAC result.
        Throws:
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalDoFinal

        protected byte[] internalDoFinal()
        Completes the HMAC computation and resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
        Returns:
        the HMAC result.
      • engineReset

        protected void engineReset()
        Resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
        Specified by:
        engineReset in class javax.crypto.MacSpi
        Throws:
        FIPSRuntimeException - if SelfTest.isFipsRunnable returns false.
      • internalReset

        protected void internalReset()
        Resets the HMAC for further use, maintaining the secret key that the HMAC was initialized with.
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class javax.crypto.MacSpi
      • internalClone

        public java.lang.Object internalClone()
      • zeroize

        public void zeroize()
        This function zeroizes the key so that it isn't in memory
      • finalize

        protected void finalize()
        This function zeroizes the key so that it isn't in memory when GC is done.
        Overrides:
        finalize in class java.lang.Object
© Portions Copyright 2003, 2014, 2015, 2016 IBM Corporation. All rights reserved.
© Portions Copyright 2003, 2014 Oracle and/or its affiliates. All rights reserved.