package org.apache.kerberos.kerb.crypto.enc; import org.apache.kerberos.kerb.crypto.Cmac; import org.apache.kerberos.kerb.KrbException; public abstract class KeKiCmacEnc extends KeKiEnc { public KeKiCmacEnc(EncryptProvider encProvider) { super(encProvider, null); } @Override public int paddingSize() { return 0; } @Override public int checksumSize() { return encProvider().blockSize(); } @Override protected byte[] makeChecksum(byte[] key, byte[] data, int hashSize) throws KrbException { // generate hash byte[] hash = Cmac.cmac(encProvider(), key, data); // truncate hash byte[] output = new byte[hashSize]; System.arraycopy(hash, 0, output, 0, hashSize); return output; } }