using System.Net.Security;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace NetCoreServer
{
///
/// SSL context
///
public class SslContext
{
///
/// Initialize SSL context with default protocols
///
public SslContext() : this(SslProtocols.Tls13) {}
///
/// Initialize SSL context with given protocols
///
/// SSL protocols
public SslContext(SslProtocols protocols) { Protocols = protocols; }
///
/// Initialize SSL context with given protocols and validation callback
///
/// SSL protocols
/// SSL certificate
public SslContext(SslProtocols protocols, RemoteCertificateValidationCallback certificateValidationCallback)
{
Protocols = protocols;
CertificateValidationCallback = certificateValidationCallback;
}
///
/// Initialize SSL context with given protocols and certificate
///
/// SSL protocols
/// SSL certificate
public SslContext(SslProtocols protocols, X509Certificate certificate) : this(protocols, certificate, null) {}
///
/// Initialize SSL context with given protocols, certificate and validation callback
///
/// SSL protocols
/// SSL certificate
/// SSL certificate
public SslContext(SslProtocols protocols, X509Certificate certificate, RemoteCertificateValidationCallback certificateValidationCallback)
{
Protocols = protocols;
Certificate = certificate;
CertificateValidationCallback = certificateValidationCallback;
}
///
/// Initialize SSL context with given protocols and certificates collection
///
/// SSL protocols
/// SSL certificates collection
public SslContext(SslProtocols protocols, X509Certificate2Collection certificates) : this(protocols, certificates, null) {}
///
/// Initialize SSL context with given protocols, certificates collection and validation callback
///
/// SSL protocols
/// SSL certificates collection
/// SSL certificate
public SslContext(SslProtocols protocols, X509Certificate2Collection certificates, RemoteCertificateValidationCallback certificateValidationCallback)
{
Protocols = protocols;
Certificates = certificates;
CertificateValidationCallback = certificateValidationCallback;
}
///
/// SSL protocols
///
public SslProtocols Protocols { get; set; }
///
/// SSL certificate
///
public X509Certificate Certificate { get; set; }
///
/// SSL certificates collection
///
public X509Certificate2Collection Certificates { get; set; }
///
/// SSL certificate validation callback
///
public RemoteCertificateValidationCallback CertificateValidationCallback { get; set; }
///
/// Is the client is asked for a certificate for authentication.
/// Note that this is only a request - if no certificate is provided, the server still accepts the connection request.
///
public bool ClientCertificateRequired { get; set; }
}
}