namespace NFC.Crypto
{
    public interface ICipher
    {
        /// <summary>
        /// Size of Cipher Block in Byte
        /// </summary>
        public uint BlockSize { get; }

        /// <summary>
        /// Size of Key in Byte
        /// </summary>
        public uint KeySize { get; }

        /// <summary>
        /// Encrypt Data
        /// </summary>
        /// <param name="data">Data in BlockSize</param>
        /// <param name="key">Key</param>
        /// <param name="IV">Initialisation Vector</param>
        /// <returns></returns>
        public byte[] Encrypt(byte[] data, byte[] key, byte[] IV);

        /// <summary>
        /// Decrypt Data
        /// </summary>
        /// <param name="data">Data in BlockSize</param>
        /// <param name="key">Key</param>
        /// <param name="IV">Initialisation Vector</param>
        public byte[] Decrypt(byte[] data, byte[] key, byte[] IV);
    }
}