package org.apache.kerberos.kerb.crypto.cksum.provider; import org.apache.kerberos.kerb.crypto.cksum.AbstractCheckSumTypeHandler; import org.apache.kerberos.kerb.crypto.cksum.HashProvider; import org.apache.kerberos.kerb.KrbException; public abstract class AbstractUnkeyedCheckSumTypeHandler extends AbstractCheckSumTypeHandler { public AbstractUnkeyedCheckSumTypeHandler(HashProvider hashProvider, int computeSize, int outputSize) { super(null, hashProvider, computeSize, outputSize); } @Override public byte[] checksum(byte[] data, int start, int len) throws KrbException { int outputSize = outputSize(); HashProvider hp = hashProvider(); hp.hash(data, start, len); byte[] workBuffer = hp.output(); if (outputSize < workBuffer.length) { byte[] output = new byte[outputSize]; System.arraycopy(workBuffer, 0, output, 0, outputSize); return output; } return workBuffer; } @Override public boolean verify(byte[] data, int start, int len, byte[] checksum) throws KrbException { byte[] newCksum = checksum(data, start, len); return checksumEqual(newCksum, checksum); } }