#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR) #pragma warning disable using System; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto { /// The base interface for implementations of message authentication codes (MACs). public interface IMac { /// Initialise the MAC. /// The key or other data required by the MAC. void Init(ICipherParameters parameters); /// The algorithm name. string AlgorithmName { get; } /// Return the size, in bytes, of the MAC produced by this implementation. /// the size, in bytes, of the MAC produced by this implementation. int GetMacSize(); /// Update the MAC with a single byte. /// the input byte to be entered. void Update(byte input); /// Update the MAC with a block of bytes. /// the byte array containing the data. /// the offset into the byte array where the data starts. /// the length of the data. void BlockUpdate(byte[] input, int inOff, int inLen); #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || _UNITY_2021_2_OR_NEWER_ /// Update the MAC with a span of bytes. /// the span containing the data. void BlockUpdate(ReadOnlySpan input); #endif /// Perform final calculations, producing the result MAC. /// This call leaves the MAC reset. /// the byte array the MAC is to be copied into. /// the offset into the byte array the MAC is to start at. /// the number of bytes written int DoFinal(byte[] output, int outOff); #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || _UNITY_2021_2_OR_NEWER_ /// Perform final calculations, producing the result MAC. /// This call leaves the MAC reset. /// the span the MAC is to be copied into. /// the number of bytes written int DoFinal(Span output); #endif /// Reset the MAC back to its initial state. void Reset(); } } #pragma warning restore #endif