package org.apache.kerberos.kerb.crypto;
import org.apache.kerberos.kerb.crypto.cksum.HashProvider;
import org.apache.kerberos.kerb.crypto.enc.EncryptProvider;
import java.util.Arrays;
public abstract class AbstractCryptoTypeHandler implements CryptoTypeHandler {
private EncryptProvider encProvider;
private HashProvider hashProvider;
public AbstractCryptoTypeHandler(EncryptProvider encProvider,
HashProvider hashProvider) {
this.encProvider = encProvider;
this.hashProvider = hashProvider;
}
@Override
public EncryptProvider encProvider() {
return encProvider;
}
@Override
public HashProvider hashProvider() {
return hashProvider;
}
protected static boolean checksumEqual(byte[] cksum1, byte[] cksum2) {
return Arrays.equals(cksum1, cksum2);
}
protected static boolean checksumEqual(byte[] cksum1, byte[] cksum2, int cksum2Start, int len) {
if (cksum1 == cksum2)
return true;
if (cksum1 == null || cksum2 == null)
return false;
if (len <= cksum2.length && len <= cksum1.length) {
for (int i = 0; i < len; i++)
if (cksum1[i] != cksum2[cksum2Start + i])
return false;
} else {
return false;
}
return true;
}
}