# System.Net.Security ``` diff namespace System.Net.Security { + public delegate X509Certificate ServerCertificateSelectionCallback(object sender, string hostName); + public readonly struct SslApplicationProtocol : IEquatable { + public static readonly SslApplicationProtocol Http11; + public static readonly SslApplicationProtocol Http2; + public SslApplicationProtocol(byte[] protocol); + public SslApplicationProtocol(string protocol); + public ReadOnlyMemory Protocol { get; } + public bool Equals(SslApplicationProtocol other); + public override bool Equals(object obj); + public override int GetHashCode(); + public static bool operator ==(SslApplicationProtocol left, SslApplicationProtocol right); + public static bool operator !=(SslApplicationProtocol left, SslApplicationProtocol right); + public override string ToString(); + } + public class SslClientAuthenticationOptions { + public SslClientAuthenticationOptions(); + public bool AllowRenegotiation { get; set; } + public List ApplicationProtocols { get; set; } + public X509RevocationMode CertificateRevocationCheckMode { get; set; } + public X509CertificateCollection ClientCertificates { get; set; } + public SslProtocols EnabledSslProtocols { get; set; } + public EncryptionPolicy EncryptionPolicy { get; set; } + public LocalCertificateSelectionCallback LocalCertificateSelectionCallback { get; set; } + public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } + public string TargetHost { get; set; } + } + public class SslServerAuthenticationOptions { + public SslServerAuthenticationOptions(); + public bool AllowRenegotiation { get; set; } + public List ApplicationProtocols { get; set; } + public X509RevocationMode CertificateRevocationCheckMode { get; set; } + public bool ClientCertificateRequired { get; set; } + public SslProtocols EnabledSslProtocols { get; set; } + public EncryptionPolicy EncryptionPolicy { get; set; } + public RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; } + public X509Certificate ServerCertificate { get; set; } + public ServerCertificateSelectionCallback ServerCertificateSelectionCallback { get; set; } + } public class SslStream : AuthenticatedStream { + public SslApplicationProtocol NegotiatedApplicationProtocol { get; } + public Task AuthenticateAsClientAsync(SslClientAuthenticationOptions sslClientAuthenticationOptions, CancellationToken cancellationToken); + public Task AuthenticateAsServerAsync(SslServerAuthenticationOptions sslServerAuthenticationOptions, CancellationToken cancellationToken); } } ```