Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.crypto.macs;
  
HMAC implementation based on RFC2104 H(K XOR opad, H(K XOR ipad, text))
 
 public class OldHMac
 implements Mac
 {
     private final static int BLOCK_LENGTH = 64;
 
     private final static byte IPAD = (byte)0x36;
     private final static byte OPAD = (byte)0x5C;
 
     private Digest digest;
     private int digestSize;
     private byte[] inputPad = new byte[];
     private byte[] outputPad = new byte[];

    

Deprecated:
uses incorrect pad for SHA-512 and SHA-384 use HMac.
 
     public OldHMac(
         Digest digest)
     {
         this. = digest;
          = digest.getDigestSize();
     }
 
     public String getAlgorithmName()
     {
         return .getAlgorithmName() + "/HMAC";
     }
 
     public Digest getUnderlyingDigest()
     {
         return ;
     }
 
     public void init(
         CipherParameters params)
     {
         .reset();
 
         byte[] key = ((KeyParameter)params).getKey();
 
         if (key.length > )
         {
             .update(key, 0, key.length);
             .doFinal(, 0);
             for (int i = i < .i++)
             {
                 [i] = 0;
             }
         }
         else
         {
             System.arraycopy(key, 0, , 0, key.length);
             for (int i = key.lengthi < .i++)
             {
                 [i] = 0;
             }
         }
 
          = new byte[.];
         System.arraycopy(, 0, , 0, .);
 
         for (int i = 0; i < .i++)
         {
             [i] ^= ;
         }
 
         for (int i = 0; i < .i++)
         {
             [i] ^= ;
         }
 
         .update(, 0, .);
     }
 
     public int getMacSize()
     {
         return ;
     }
 
     public void update(
         byte in)
     {
         .update(in);
     }
 
     public void update(
         byte[] in,
        int inOff,
        int len)
    {
        .update(ininOfflen);
    }
    public int doFinal(
        byte[] out,
        int outOff)
    {
        byte[] tmp = new byte[];
        .doFinal(tmp, 0);
        .update(, 0, .);
        .update(tmp, 0, tmp.length);
        int     len = .doFinal(outoutOff);
        reset();
        return len;
    }

    
Reset the mac generator.
    public void reset()
    {
        /*
         * reset the underlying digest.
         */
        .reset();
        /*
         * reinitialize the digest.
         */
        .update(, 0, .);
    }
New to GrepCode? Check out our FAQ X