package com.openvehicles.OVMS;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class HMAC {
private static final byte IPAD = 54;
private static final byte OPAD = 92;
private static final byte PADLEN = 64;
MessageDigest digest;
private byte[] ipad;
private byte[] opad;
public HMAC(String paramString, byte[] paramArrayOfByte) {
try {
this.digest = MessageDigest.getInstance(paramString);
init(paramArrayOfByte);
return;
} catch (NoSuchAlgorithmException localNoSuchAlgorithmException) {
}
throw new IllegalArgumentException("unknown digest algorithm "
+ paramString);
}
public HMAC(MessageDigest paramMessageDigest, byte[] paramArrayOfByte) {
paramMessageDigest.reset();
this.digest = paramMessageDigest;
init(paramArrayOfByte);
}
private void init(byte[] paramArrayOfByte) {
if (paramArrayOfByte.length > PADLEN) {
paramArrayOfByte = this.digest.digest(paramArrayOfByte);
this.digest.reset();
}
this.ipad = new byte[PADLEN];
this.opad = new byte[PADLEN];
int i = 0;
if (i >= paramArrayOfByte.length)
;
else {
if (i >= 64) {
this.digest.update(this.ipad);
this.ipad[i] = (byte) (0x36 ^ paramArrayOfByte[i]);
this.opad[i] = (byte) (0x5C ^ paramArrayOfByte[i]);
i++;
}
else {
this.ipad[i] = IPAD;
this.opad[i] = OPAD;
i++;
}
}
}
public void clear() {
this.digest.reset();
this.digest.update(this.ipad);
}
public byte[] sign() {
byte[] arrayOfByte = this.digest.digest();
this.digest.reset();
this.digest.update(this.opad);
return this.digest.digest(arrayOfByte);
}
public void update(byte[] paramArrayOfByte) {
this.digest.update(paramArrayOfByte);
}
public void update(byte[] paramArrayOfByte, int paramInt1, int paramInt2) {
this.digest.update(paramArrayOfByte, paramInt1, paramInt2);
}
public boolean verify(byte[] paramArrayOfByte) {
return Arrays.equals(paramArrayOfByte, sign());
}
}