2025-05-07 11:20:40 +08:00

98 lines
4.1 KiB
C#

#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.Collections;
using System.IO;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Tls
{
public interface TlsServer
: TlsPeer
{
void Init(TlsServerContext context);
/// <exception cref="IOException"></exception>
void NotifyClientVersion(ProtocolVersion clientVersion);
/// <exception cref="IOException"></exception>
void NotifyFallback(bool isFallback);
/// <exception cref="IOException"></exception>
void NotifyOfferedCipherSuites(int[] offeredCipherSuites);
/// <exception cref="IOException"></exception>
void NotifyOfferedCompressionMethods(byte[] offeredCompressionMethods);
/// <param name="clientExtensions">A <see cref="IDictionary"/> (Int32 -> byte[]). Will never be null.</param>
/// <exception cref="IOException"></exception>
void ProcessClientExtensions(IDictionary clientExtensions);
/// <exception cref="IOException"></exception>
ProtocolVersion GetServerVersion();
/// <exception cref="IOException"></exception>
int GetSelectedCipherSuite();
/// <exception cref="IOException"></exception>
byte GetSelectedCompressionMethod();
/// <summary>
/// Get the (optional) table of server extensions to be included in (extended) server hello.
/// </summary>
/// <returns>
/// A <see cref="IDictionary"/> (Int32 -> byte[]). May be null.
/// </returns>
/// <exception cref="IOException"></exception>
IDictionary GetServerExtensions();
/// <returns>
/// A <see cref="IList"/> (<see cref="SupplementalDataEntry"/>). May be null.
/// </returns>
/// <exception cref="IOException"></exception>
IList GetServerSupplementalData();
/// <exception cref="IOException"></exception>
TlsCredentials GetCredentials();
/// <remarks>
/// This method will be called (only) if the server included an extension of type
/// "status_request" with empty "extension_data" in the extended server hello. See <i>RFC 3546
/// 3.6. Certificate Status Request</i>. If a non-null <see cref="CertificateStatus"/> is returned, it
/// is sent to the client as a handshake message of type "certificate_status".
/// </remarks>
/// <returns>A <see cref="CertificateStatus"/> to be sent to the client (or null for none).</returns>
/// <exception cref="IOException"></exception>
CertificateStatus GetCertificateStatus();
/// <exception cref="IOException"></exception>
TlsKeyExchange GetKeyExchange();
/// <exception cref="IOException"></exception>
CertificateRequest GetCertificateRequest();
/// <param name="clientSupplementalData"><see cref="IList"/> (<see cref="SupplementalDataEntry"/>)</param>
/// <exception cref="IOException"></exception>
void ProcessClientSupplementalData(IList clientSupplementalData);
/// <summary>
/// Called by the protocol handler to report the client certificate, only if <c>GetCertificateRequest</c>
/// returned non-null.
/// </summary>
/// <remarks>Note: this method is responsible for certificate verification and validation.</remarks>
/// <param name="clientCertificate">the effective client certificate (may be an empty chain).</param>
/// <exception cref="IOException"></exception>
void NotifyClientCertificate(Certificate clientCertificate);
/// <summary>RFC 5077 3.3. NewSessionTicket Handshake Message.</summary>
/// <remarks>
/// This method will be called (only) if a NewSessionTicket extension was sent by the server. See
/// <i>RFC 5077 4. Recommended Ticket Construction</i> for recommended format and protection.
/// </remarks>
/// <returns>The <see cref="NewSessionTicket">ticket</see>)</returns>
/// <exception cref="IOException"></exception>
NewSessionTicket GetNewSessionTicket();
}
}
#pragma warning restore
#endif