code: public byte[] decrypt(SecretKey ctrKey, SecretKey macKey, byte[] ciphertext, byte[]... associatedData) throws UnauthenticCiphertextException, IllegalBlockSizeException {
  		final byte[] ctrKeyBytes = ctrKey.getEncoded();
  		final byte[] macKeyBytes = macKey.getEncoded();
  		if (ctrKeyBytes == null || macKeyBytes == null) {
  			throw new IllegalArgumentException("Can't get bytes of given key.");
  		}
  		try {
  			return decrypt(ctrKeyBytes, macKeyBytes, ciphertext, associatedData);
  		} finally {
  			Arrays.fill(ctrKeyBytes, (byte) 0);
  			Arrays.fill(macKeyBytes, (byte) 0);
  		}
  	}
docs: Convenience method, if you are using the javax.crypto API. This is just a wrapper for {@link #decrypt(byte[], byte[], byte[], byte[]...)}.
  
  @param ctrKey SIV mode requires two separate keys. You can use one long key, which is splitted in half. See https://tools.ietf.org/html/rfc5297#section-2.2
  @param macKey SIV mode requires two separate keys. You can use one long key, which is splitted in half. See https://tools.ietf.org/html/rfc5297#section-2.2
  @param ciphertext Your cipehrtext, which shall be decrypted.
  @param associatedData Optional associated data, which needs to be authenticated during decryption.
  @return Plaintext byte array.
  @throws IllegalArgumentException If keys are invalid or {@link SecretKey#getEncoded()} is not supported.
  @throws UnauthenticCiphertextException If the authentication failed, e.g. because ciphertext and/or associatedData are corrupted.
  @throws IllegalBlockSizeException If the provided ciphertext is of invalid length.