#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