SslContext.cs 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Net.Security;
  2. using System.Security.Authentication;
  3. using System.Security.Cryptography.X509Certificates;
  4. namespace NetCoreServer
  5. {
  6. /// <summary>
  7. /// SSL context
  8. /// </summary>
  9. public class SslContext
  10. {
  11. /// <summary>
  12. /// Initialize SSL context with default protocols
  13. /// </summary>
  14. public SslContext() : this(SslProtocols.Tls13) {}
  15. /// <summary>
  16. /// Initialize SSL context with given protocols
  17. /// </summary>
  18. /// <param name="protocols">SSL protocols</param>
  19. public SslContext(SslProtocols protocols) { Protocols = protocols; }
  20. /// <summary>
  21. /// Initialize SSL context with given protocols and validation callback
  22. /// </summary>
  23. /// <param name="protocols">SSL protocols</param>
  24. /// <param name="certificateValidationCallback">SSL certificate</param>
  25. public SslContext(SslProtocols protocols, RemoteCertificateValidationCallback certificateValidationCallback)
  26. {
  27. Protocols = protocols;
  28. CertificateValidationCallback = certificateValidationCallback;
  29. }
  30. /// <summary>
  31. /// Initialize SSL context with given protocols and certificate
  32. /// </summary>
  33. /// <param name="protocols">SSL protocols</param>
  34. /// <param name="certificate">SSL certificate</param>
  35. public SslContext(SslProtocols protocols, X509Certificate certificate) : this(protocols, certificate, null) {}
  36. /// <summary>
  37. /// Initialize SSL context with given protocols, certificate and validation callback
  38. /// </summary>
  39. /// <param name="protocols">SSL protocols</param>
  40. /// <param name="certificate">SSL certificate</param>
  41. /// <param name="certificateValidationCallback">SSL certificate</param>
  42. public SslContext(SslProtocols protocols, X509Certificate certificate, RemoteCertificateValidationCallback certificateValidationCallback)
  43. {
  44. Protocols = protocols;
  45. Certificate = certificate;
  46. CertificateValidationCallback = certificateValidationCallback;
  47. }
  48. /// <summary>
  49. /// Initialize SSL context with given protocols and certificates collection
  50. /// </summary>
  51. /// <param name="protocols">SSL protocols</param>
  52. /// <param name="certificates">SSL certificates collection</param>
  53. public SslContext(SslProtocols protocols, X509Certificate2Collection certificates) : this(protocols, certificates, null) {}
  54. /// <summary>
  55. /// Initialize SSL context with given protocols, certificates collection and validation callback
  56. /// </summary>
  57. /// <param name="protocols">SSL protocols</param>
  58. /// <param name="certificates">SSL certificates collection</param>
  59. /// <param name="certificateValidationCallback">SSL certificate</param>
  60. public SslContext(SslProtocols protocols, X509Certificate2Collection certificates, RemoteCertificateValidationCallback certificateValidationCallback)
  61. {
  62. Protocols = protocols;
  63. Certificates = certificates;
  64. CertificateValidationCallback = certificateValidationCallback;
  65. }
  66. /// <summary>
  67. /// SSL protocols
  68. /// </summary>
  69. public SslProtocols Protocols { get; set; }
  70. /// <summary>
  71. /// SSL certificate
  72. /// </summary>
  73. public X509Certificate Certificate { get; set; }
  74. /// <summary>
  75. /// SSL certificates collection
  76. /// </summary>
  77. public X509Certificate2Collection Certificates { get; set; }
  78. /// <summary>
  79. /// SSL certificate validation callback
  80. /// </summary>
  81. public RemoteCertificateValidationCallback CertificateValidationCallback { get; set; }
  82. /// <summary>
  83. /// Is the client is asked for a certificate for authentication.
  84. /// Note that this is only a request - if no certificate is provided, the server still accepts the connection request.
  85. /// </summary>
  86. public bool ClientCertificateRequired { get; set; }
  87. }
  88. }