Add some constructors for C# 3.0

Rename ClientCertAuthConfiguration to ClientSslAuthConfiguration
Rename ServerCertAuthConfiguration to ServerSslAuthConfiguration
Add the licence comment to new files
This commit is contained in:
Adrien JUND 2014-10-28 11:24:00 +01:00
parent cc0ab61eb9
commit 4e7bca4f38
13 changed files with 242 additions and 130 deletions

View File

@ -554,7 +554,7 @@ namespace WebSocketSharp
this TcpClient tcpClient, this TcpClient tcpClient,
string protocol, string protocol,
bool secure, bool secure,
ServerCertAuthConfiguration certificateConfig, ServerSslAuthConfiguration certificateConfig,
Logger logger) Logger logger)
{ {
return new TcpListenerWebSocketContext (tcpClient, protocol, secure, certificateConfig, logger); return new TcpListenerWebSocketContext (tcpClient, protocol, secure, certificateConfig, logger);

View File

@ -1,44 +0,0 @@
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace WebSocketSharp
{
public class ClientCertAuthConfiguration
{
/// <summary>
/// Gets or sets the certificate configuration used to authenticate the clients on the secure connection.
/// </summary>
/// <value>
/// A <see cref="X509CertificateCollection"/> that represents the certificate collection used to authenticate
/// the clients.
/// </value>
public X509CertificateCollection clientCertificates { get; set; }
/// <summary>
/// Gets or sets the Ssl protocols type enabled.
/// </summary>
/// <value>
/// The <see cref="SslProtocols"/> value that represents the protocol used for authentication.
/// </value>
public SslProtocols EnabledSslProtocols { get; set; }
/// <summary>
/// Gets or sets the verification of certificate revocation option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the certificate revocation list is checked during authentication.
/// </value>
public bool CheckCertificateRevocation { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="ClientCertAuthConfiguration"/> class.
/// </summary>
public ClientCertAuthConfiguration(X509CertificateCollection clientCertificates,
SslProtocols enabledSslProtocols = SslProtocols.Default, bool checkCertificateRevocation = false)
{
this.clientCertificates = clientCertificates;
this.EnabledSslProtocols = enabledSslProtocols;
this.CheckCertificateRevocation = checkCertificateRevocation;
}
}
}

View File

@ -0,0 +1,96 @@
#region License
/*
* ClientSslAuthConfiguration.cs
*
* The MIT License
*
* Copyright (c) 2014 liryna
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#endregion
#region Authors
/*
* Authors:
* - Liryna liryna.stark@gmail.com
*/
#endregion
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace WebSocketSharp
{
public class ClientSslAuthConfiguration
{
/// <summary>
/// Gets or sets the certificate configuration used to authenticate the clients on the secure connection.
/// </summary>
/// <value>
/// A <see cref="X509CertificateCollection"/> that represents the certificate collection used to authenticate
/// the clients.
/// </value>
public X509CertificateCollection clientCertificates { get; set; }
/// <summary>
/// Gets or sets the Ssl protocols type enabled.
/// </summary>
/// <value>
/// The <see cref="SslProtocols"/> value that represents the protocol used for authentication.
/// </value>
public SslProtocols EnabledSslProtocols { get; set; }
/// <summary>
/// Gets or sets the verification of certificate revocation option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the certificate revocation list is checked during authentication.
/// </value>
public bool CheckCertificateRevocation { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="ClientSslAuthConfiguration"/> class.
/// </summary>
public ClientSslAuthConfiguration(X509CertificateCollection clientCertificates)
: this(clientCertificates, SslProtocols.Default, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ClientSslAuthConfiguration"/> class.
/// </summary>
public ClientSslAuthConfiguration(X509CertificateCollection clientCertificates,
SslProtocols enabledSslProtocols)
: this(clientCertificates, enabledSslProtocols, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ClientSslAuthConfiguration"/> class.
/// </summary>
public ClientSslAuthConfiguration(X509CertificateCollection clientCertificates,
SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
{
this.clientCertificates = clientCertificates;
this.EnabledSslProtocols = enabledSslProtocols;
this.CheckCertificateRevocation = checkCertificateRevocation;
}
}
}

View File

@ -54,7 +54,7 @@ namespace WebSocketSharp.Net
#region Private Fields #region Private Fields
private List<HttpListenerPrefix> _all; // host == '+' private List<HttpListenerPrefix> _all; // host == '+'
private ServerCertAuthConfiguration _certConfig; private ServerSslAuthConfiguration _sslAuthenticationConfig;
private static readonly string _defaultCertFolderPath; private static readonly string _defaultCertFolderPath;
private IPEndPoint _endpoint; private IPEndPoint _endpoint;
private Dictionary<HttpListenerPrefix, HttpListener> _prefixes; private Dictionary<HttpListenerPrefix, HttpListener> _prefixes;
@ -83,13 +83,13 @@ namespace WebSocketSharp.Net
int port, int port,
bool secure, bool secure,
string certificateFolderPath, string certificateFolderPath,
ServerCertAuthConfiguration defaultCertificate, ServerSslAuthConfiguration defaultCertificate,
bool reuseAddress) bool reuseAddress)
{ {
if (secure) { if (secure) {
_secure = secure; _secure = secure;
_certConfig = getCertificate (port, certificateFolderPath, defaultCertificate); _sslAuthenticationConfig = getCertificate(port, certificateFolderPath, defaultCertificate);
if (_certConfig == null) if (_sslAuthenticationConfig == null)
throw new ArgumentException ("No server certificate could be found."); throw new ArgumentException ("No server certificate could be found.");
} }
@ -116,10 +116,10 @@ namespace WebSocketSharp.Net
#region Public Properties #region Public Properties
public ServerCertAuthConfiguration CertificateConfig public ServerSslAuthConfiguration CertificateConfig
{ {
get { get {
return _certConfig; return _sslAuthenticationConfig;
} }
} }
@ -174,8 +174,8 @@ namespace WebSocketSharp.Net
return rsa; return rsa;
} }
private static ServerCertAuthConfiguration getCertificate( private static ServerSslAuthConfiguration getCertificate(
int port, string certificateFolderPath, ServerCertAuthConfiguration defaultCertificate) int port, string certificateFolderPath, ServerSslAuthConfiguration defaultCertificate)
{ {
if (certificateFolderPath == null || certificateFolderPath.Length == 0) if (certificateFolderPath == null || certificateFolderPath.Length == 0)
certificateFolderPath = _defaultCertFolderPath; certificateFolderPath = _defaultCertFolderPath;
@ -187,7 +187,7 @@ namespace WebSocketSharp.Net
var cert = new X509Certificate2 (cer); var cert = new X509Certificate2 (cer);
cert.PrivateKey = createRSAFromFile (key); cert.PrivateKey = createRSAFromFile (key);
return new ServerCertAuthConfiguration(cert); return new ServerSslAuthConfiguration(cert);
} }
} }
catch { catch {

View File

@ -107,7 +107,7 @@ namespace WebSocketSharp.Net
port, port,
secure, secure,
httpListener.CertificateFolderPath, httpListener.CertificateFolderPath,
httpListener.DefaultCertificateConfig, httpListener.DefaultSslAuthenticationConfig,
httpListener.ReuseAddress); httpListener.ReuseAddress);
eps[port] = epl; eps[port] = epl;

View File

@ -64,7 +64,7 @@ namespace WebSocketSharp.Net
private Dictionary<HttpListenerContext, HttpListenerContext> _ctxRegistry; private Dictionary<HttpListenerContext, HttpListenerContext> _ctxRegistry;
private object _ctxRegistrySync; private object _ctxRegistrySync;
private Func<IIdentity, NetworkCredential> _credFinder; private Func<IIdentity, NetworkCredential> _credFinder;
private ServerCertAuthConfiguration _defaultCert; private ServerSslAuthConfiguration _defaultSslAuthenticationConfig;
private bool _disposed; private bool _disposed;
private bool _ignoreWriteExceptions; private bool _ignoreWriteExceptions;
private bool _listening; private bool _listening;
@ -213,27 +213,27 @@ namespace WebSocketSharp.Net
} }
/// <summary> /// <summary>
/// Gets or sets the default certificate used to authenticate the server on the secure /// Gets or sets the default Ssl configuration used to authenticate the server on the secure
/// connection. /// connection.
/// </summary> /// </summary>
/// <value> /// <value>
/// A <see cref="X509Certificate2"/> used to authenticate the server if the certificate /// A <see cref="ServerSslAuthConfiguration"/> used to authenticate the server if the certificate
/// files aren't found in the <see cref="CertificateFolderPath"/>. The default value is /// files aren't found in the <see cref="CertificateFolderPath"/>. The default value is
/// <see langword="null"/>. /// <see langword="null"/>.
/// </value> /// </value>
/// <exception cref="ObjectDisposedException"> /// <exception cref="ObjectDisposedException">
/// This listener has been closed. /// This listener has been closed.
/// </exception> /// </exception>
public ServerCertAuthConfiguration DefaultCertificateConfig public ServerSslAuthConfiguration DefaultSslAuthenticationConfig
{ {
get { get {
CheckDisposed (); CheckDisposed ();
return _defaultCert; return _defaultSslAuthenticationConfig;
} }
set { set {
CheckDisposed (); CheckDisposed ();
_defaultCert = value; _defaultSslAuthenticationConfig = value;
} }
} }

View File

@ -61,7 +61,7 @@ namespace WebSocketSharp.Net.WebSockets
#region Internal Constructors #region Internal Constructors
internal TcpListenerWebSocketContext ( internal TcpListenerWebSocketContext (
TcpClient tcpClient, string protocol, bool secure, ServerCertAuthConfiguration certificateConfig, Logger logger) TcpClient tcpClient, string protocol, bool secure, ServerSslAuthConfiguration certificateConfig, Logger logger)
{ {
_tcpClient = tcpClient; _tcpClient = tcpClient;
_secure = secure; _secure = secure;

View File

@ -181,16 +181,16 @@ namespace WebSocketSharp.Server
} }
/// <summary> /// <summary>
/// Gets or sets the certificate used to authenticate the server on the secure connection. /// Gets or sets the Ssl configuration used to authenticate the server on the secure connection.
/// </summary> /// </summary>
/// <value> /// <value>
/// A <see cref="X509Certificate2"/> that represents the certificate used to authenticate /// A <see cref="ServerSslAuthConfiguration"/> that represents the Ssl configuration used to authenticate
/// the server. /// the server.
/// </value> /// </value>
public ServerCertAuthConfiguration CertificateConfig public ServerSslAuthConfiguration CertificateConfig
{ {
get { get {
return _listener.DefaultCertificateConfig; return _listener.DefaultSslAuthenticationConfig;
} }
set { set {
@ -203,7 +203,7 @@ namespace WebSocketSharp.Server
if (EndPointListener.CertificateExists (_port, _listener.CertificateFolderPath)) if (EndPointListener.CertificateExists (_port, _listener.CertificateFolderPath))
_logger.Warn ("The server certificate associated with the port number already exists."); _logger.Warn ("The server certificate associated with the port number already exists.");
_listener.DefaultCertificateConfig = value; _listener.DefaultSslAuthenticationConfig = value;
} }
} }
@ -509,7 +509,7 @@ namespace WebSocketSharp.Server
{ {
return _secure && return _secure &&
!EndPointListener.CertificateExists (_port, _listener.CertificateFolderPath) && !EndPointListener.CertificateExists (_port, _listener.CertificateFolderPath) &&
_listener.DefaultCertificateConfig == null _listener.DefaultSslAuthenticationConfig == null
? "The secure connection requires a server certificate." ? "The secure connection requires a server certificate."
: null; : null;
} }

View File

@ -1,53 +0,0 @@
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace WebSocketSharp
{
public class ServerCertAuthConfiguration
{
/// <summary>
/// Gets or sets the certificate used to authenticate the server on the secure connection.
/// </summary>
/// <value>
/// A <see cref="X509Certificate2"/> that represents the certificate used to authenticate
/// the server.
/// </value>
public X509Certificate2 ServerCertificate { get; set; }
/// <summary>
/// Gets or sets the client certificate request option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the client must supply a certificate for authentication.
/// </value>
public bool ClientCertificateRequired { get; set; }
/// <summary>
/// Gets or sets the Ssl protocols type enabled.
/// </summary>
/// <value>
/// The <see cref="SslProtocols"/> value that represents the protocol used for authentication.
/// </value>
public SslProtocols EnabledSslProtocols { get; set; }
/// <summary>
/// Gets or sets the verification of certificate revocation option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the certificate revocation list is checked during authentication.
/// </value>
public bool CheckCertificateRevocation { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="ServerCertAuthConfiguration"/> class.
/// </summary>
public ServerCertAuthConfiguration(X509Certificate2 serverCertificate, bool clientCertificateRequired = false,
SslProtocols enabledSslProtocols = SslProtocols.Default, bool checkCertificateRevocation = false)
{
this.ServerCertificate = serverCertificate;
this.ClientCertificateRequired = clientCertificateRequired;
this.EnabledSslProtocols = enabledSslProtocols;
this.CheckCertificateRevocation = checkCertificateRevocation;
}
}
}

View File

@ -0,0 +1,113 @@
#region License
/*
* ServerSslAuthConfiguration.cs
*
* The MIT License
*
* Copyright (c) 2014 liryna
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#endregion
#region Authors
/*
* Authors:
* - Liryna liryna.stark@gmail.com
*/
#endregion
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
namespace WebSocketSharp
{
public class ServerSslAuthConfiguration
{
/// <summary>
/// Gets or sets the certificate used to authenticate the server on the secure connection.
/// </summary>
/// <value>
/// A <see cref="X509Certificate2"/> that represents the certificate used to authenticate
/// the server.
/// </value>
public X509Certificate2 ServerCertificate { get; set; }
/// <summary>
/// Gets or sets the client certificate request option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the client must supply a certificate for authentication.
/// </value>
public bool ClientCertificateRequired { get; set; }
/// <summary>
/// Gets or sets the Ssl protocols type enabled.
/// </summary>
/// <value>
/// The <see cref="SslProtocols"/> value that represents the protocol used for authentication.
/// </value>
public SslProtocols EnabledSslProtocols { get; set; }
/// <summary>
/// Gets or sets the verification of certificate revocation option.
/// </summary>
/// <value>
/// A Boolean value that specifies whether the certificate revocation list is checked during authentication.
/// </value>
public bool CheckCertificateRevocation { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="ServerSslAuthConfiguration"/> class.
/// </summary>
public ServerSslAuthConfiguration(X509Certificate2 serverCertificate)
: this(serverCertificate, false, SslProtocols.Default, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ServerSslAuthConfiguration"/> class.
/// </summary>
public ServerSslAuthConfiguration(X509Certificate2 serverCertificate, bool clientCertificateRequired)
: this(serverCertificate, clientCertificateRequired, SslProtocols.Default, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ServerSslAuthConfiguration"/> class.
/// </summary>
public ServerSslAuthConfiguration(X509Certificate2 serverCertificate, bool clientCertificateRequired,
SslProtocols enabledSslProtocols)
: this(serverCertificate, clientCertificateRequired, enabledSslProtocols, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ServerSslAuthConfiguration"/> class.
/// </summary>
public ServerSslAuthConfiguration(X509Certificate2 serverCertificate, bool clientCertificateRequired,
SslProtocols enabledSslProtocols, bool checkCertificateRevocation)
{
this.ServerCertificate = serverCertificate;
this.ClientCertificateRequired = clientCertificateRequired;
this.EnabledSslProtocols = enabledSslProtocols;
this.CheckCertificateRevocation = checkCertificateRevocation;
}
}
}

View File

@ -60,7 +60,7 @@ namespace WebSocketSharp.Server
private System.Net.IPAddress _address; private System.Net.IPAddress _address;
private AuthenticationSchemes _authSchemes; private AuthenticationSchemes _authSchemes;
private ServerCertAuthConfiguration _certificateConfig; private ServerSslAuthConfiguration _certificateConfig;
private Func<IIdentity, NetworkCredential> _credentialsFinder; private Func<IIdentity, NetworkCredential> _credentialsFinder;
private TcpListener _listener; private TcpListener _listener;
private Logger _logger; private Logger _logger;
@ -315,10 +315,10 @@ namespace WebSocketSharp.Server
/// Gets or sets the certificate configuration used to authenticate the server on the secure connection. /// Gets or sets the certificate configuration used to authenticate the server on the secure connection.
/// </summary> /// </summary>
/// <value> /// <value>
/// A <see cref="ServerCertAuthConfiguration"/> that represents the certificate configuration used to authenticate /// A <see cref="ServerSslAuthConfiguration"/> that represents the certificate configuration used to authenticate
/// the server. /// the server.
/// </value> /// </value>
public ServerCertAuthConfiguration CertificateConfig public ServerSslAuthConfiguration SslAuthenticationConfig
{ {
get { get {
return _certificateConfig; return _certificateConfig;

View File

@ -71,7 +71,7 @@ namespace WebSocketSharp
private string _base64Key; private string _base64Key;
private LocalCertificateSelectionCallback private LocalCertificateSelectionCallback
_certSelectionCallback; _certSelectionCallback;
private ClientCertAuthConfiguration private ClientSslAuthConfiguration
_certificateConfig; _certificateConfig;
private RemoteCertificateValidationCallback private RemoteCertificateValidationCallback
_certValidationCallback; _certValidationCallback;
@ -467,10 +467,10 @@ namespace WebSocketSharp
/// Gets or sets the certificate configuration used to authenticate the client on the secure connection. /// Gets or sets the certificate configuration used to authenticate the client on the secure connection.
/// </summary> /// </summary>
/// <value> /// <value>
/// A <see cref="ClientCertAuthConfiguration"/> that represents the certificate configuration used to authenticate /// A <see cref="ClientSslAuthConfiguration"/> that represents the certificate configuration used to authenticate
/// the client. /// the client.
/// </value> /// </value>
public ClientCertAuthConfiguration CertificateConfig public ClientSslAuthConfiguration SslAuthenticationConfig
{ {
get get
{ {

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -67,8 +67,8 @@
<Compile Include="CloseEventArgs.cs" /> <Compile Include="CloseEventArgs.cs" />
<Compile Include="ByteOrder.cs" /> <Compile Include="ByteOrder.cs" />
<Compile Include="ErrorEventArgs.cs" /> <Compile Include="ErrorEventArgs.cs" />
<Compile Include="Net\ClientCertAuthConfiguration.cs" /> <Compile Include="Net\ClientSslAuthConfiguration.cs" />
<Compile Include="Server\ServerCertAuthConfiguration.cs" /> <Compile Include="Server\ServerSslAuthConfiguration.cs" />
<Compile Include="WebSocket.cs" /> <Compile Include="WebSocket.cs" />
<Compile Include="Server\WebSocketServer.cs" /> <Compile Include="Server\WebSocketServer.cs" />
<Compile Include="Net\AuthenticationSchemes.cs" /> <Compile Include="Net\AuthenticationSchemes.cs" />