package org.apache.kerberos.kerb.crypto.cksum.provider;
import org.apache.kerberos.kerb.KrbException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MessageDigestHashProvider extends AbstractHashProvider {
private String algorithm;
protected MessageDigest messageDigest;
public MessageDigestHashProvider(int hashSize, int blockSize, String algorithm) {
super(hashSize, blockSize);
this.algorithm = algorithm;
init();
}
@Override
protected void init() {
try {
messageDigest = MessageDigest.getInstance(algorithm);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Failed to init JCE provider", e);
}
}
@Override
public void hash(byte[] data, int start, int len) throws KrbException {
messageDigest.update(data, start, len);
}
@Override
public byte[] output() {
return messageDigest.digest();
}
}