### Question:
Cmac { public static byte[] cmac(EncryptProvider encProvider, byte[] key, byte[] data, int outputSize) throws KrbException { return cmac(encProvider, key, data, 0, data.length, outputSize); }  static byte[] cmac(EncryptProvider encProvider, byte[] key,
                       byte[] data, int outputSize); static byte[] cmac(EncryptProvider encProvider, byte[] key, byte[] data,
                       int start, int len, int outputSize); static byte[] cmac(EncryptProvider encProvider,
                              byte[] key, byte[] data); static byte[] cmac(EncryptProvider encProvider,
                              byte[] key, byte[] data, int start, int len);  }### Answer:
@Test public void testCmac() throws KrbException, KrbException { byte[] key = TestUtil.hex2bytes(keyBytes); byte[] input = TestUtil.hex2bytes(inputBytes); EncryptProvider encProvider = new Camellia128Provider(); byte[] result; result = Cmac.cmac(encProvider, key, input, 0, 0); Assert.assertArrayEquals("Test 1", TestUtil.hex2bytes(cmac1), result); result = Cmac.cmac(encProvider, key, input, 0, 16); Assert.assertArrayEquals("Test 2", TestUtil.hex2bytes(cmac2), result); result = Cmac.cmac(encProvider, key, input, 0, 40); Assert.assertArrayEquals("Test 3", TestUtil.hex2bytes(cmac3), result); result = Cmac.cmac(encProvider, key, input, 0, 64); Assert.assertArrayEquals("Test 4", TestUtil.hex2bytes(cmac4), result); }