package com.dianping.pigeon.remoting.common.util;
import java.nio.ByteBuffer;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.MacSpi;
public final class HmacSHA1 extends MacSpi
implements Cloneable
{
private HmacCore hmac = null;
private static final int SHA1_BLOCK_LENGTH = 64;
public HmacSHA1()
throws NoSuchAlgorithmException
{
this.hmac = new HmacCore(MessageDigest.getInstance("SHA1"), 64);
}
protected int engineGetMacLength()
{
return this.hmac.getDigestLength();
}
protected void engineInit(Key paramKey, AlgorithmParameterSpec paramAlgorithmParameterSpec)
throws InvalidKeyException, InvalidAlgorithmParameterException
{
this.hmac.init(paramKey, paramAlgorithmParameterSpec);
}
protected void engineUpdate(byte paramByte)
{
this.hmac.update(paramByte);
}
protected void engineUpdate(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
{
this.hmac.update(paramArrayOfByte, paramInt1, paramInt2);
}
protected void engineUpdate(ByteBuffer paramByteBuffer) {
this.hmac.update(paramByteBuffer);
}
protected byte[] engineDoFinal()
{
return this.hmac.doFinal();
}
protected void engineReset()
{
this.hmac.reset();
}
public Object clone()
{
HmacSHA1 localHmacSHA1 = null;
try {
localHmacSHA1 = (HmacSHA1)super.clone();
localHmacSHA1.hmac = ((HmacCore)this.hmac.clone());
} catch (CloneNotSupportedException localCloneNotSupportedException) {
}
return localHmacSHA1;
}
}