You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2014/06/05 22:03:53 UTC

git commit: THRIFT-2568 Implement own certificate handler Client: C# Patch: Michael Blättler

Repository: thrift
Updated Branches:
  refs/heads/master 245dbdfd1 -> 7b11fec0c


THRIFT-2568 Implement own certificate handler
Client: C#
Patch: Michael Blättler

This closes #133

commit 57494794e787356ee98229cac35ea7aaa60ad562
 Author: mblaettler <mi...@bluewin.ch>
 Date: 2014-06-05T11:41:05Z

THRIFT-2568: Implemented possibility to use own certificate handler


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/7b11fec0
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/7b11fec0
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/7b11fec0

Branch: refs/heads/master
Commit: 7b11fec0c53b3231a472e008dfbb285d1aac44df
Parents: 245dbdf
Author: Jens Geyer <je...@apache.org>
Authored: Thu Jun 5 22:03:19 2014 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Thu Jun 5 22:03:19 2014 +0200

----------------------------------------------------------------------
 lib/csharp/src/Transport/TTLSSocket.cs | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/7b11fec0/lib/csharp/src/Transport/TTLSSocket.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/src/Transport/TTLSSocket.cs b/lib/csharp/src/Transport/TTLSSocket.cs
index beb5876..b87576d 100644
--- a/lib/csharp/src/Transport/TTLSSocket.cs
+++ b/lib/csharp/src/Transport/TTLSSocket.cs
@@ -67,6 +67,11 @@ namespace Thrift.Transport
 		private X509Certificate certificate = null;
 
 		/// <summary>
+		/// User defined certificate validator.
+		/// </summary>
+		private RemoteCertificateValidationCallback certValidator = null;
+
+		/// <summary>
 		/// Initializes a new instance of the <see cref="TTLSSocket"/> class.
 		/// </summary>
 		/// <param name="client">An already created TCP-client</param>
@@ -91,8 +96,9 @@ namespace Thrift.Transport
 		/// <param name="host">The host, where the socket should connect to.</param>
 		/// <param name="port">The port.</param>
 		/// <param name="certificatePath">The certificate path.</param>
-		public TTLSSocket(string host, int port, string certificatePath)
-			: this(host, port, 0, X509Certificate.CreateFromCertFile(certificatePath))
+		/// <param name="certValidator">User defined cert validator.</param>
+		public TTLSSocket(string host, int port, string certificatePath, RemoteCertificateValidationCallback certValidator = null)
+			: this(host, port, 0, X509Certificate.CreateFromCertFile(certificatePath), certValidator)
 		{
 		}
 
@@ -102,8 +108,9 @@ namespace Thrift.Transport
 		/// <param name="host">The host, where the socket should connect to.</param>
 		/// <param name="port">The port.</param>
 		/// <param name="certificate">The certificate.</param>
-		public TTLSSocket(string host, int port, X509Certificate certificate)
-			: this(host, port, 0, certificate)
+		/// <param name="certValidator">User defined cert validator.</param>
+		public TTLSSocket(string host, int port, X509Certificate certificate, RemoteCertificateValidationCallback certValidator = null)
+			: this(host, port, 0, certificate, certValidator)
 		{
 		}
 
@@ -114,12 +121,14 @@ namespace Thrift.Transport
 		/// <param name="port">The port.</param>
 		/// <param name="timeout">The timeout.</param>
 		/// <param name="certificate">The certificate.</param>
-		public TTLSSocket(string host, int port, int timeout, X509Certificate certificate)
+		/// <param name="certValidator">User defined cert validator.</param>
+		public TTLSSocket(string host, int port, int timeout, X509Certificate certificate, RemoteCertificateValidationCallback certValidator = null)
 		{
 			this.host = host;
 			this.port = port;
 			this.timeout = timeout;
 			this.certificate = certificate;
+			this.certValidator = certValidator;
 
 			InitSocket();
 		}
@@ -254,7 +263,14 @@ namespace Thrift.Transport
 				X509CertificateCollection validCerts = new X509CertificateCollection();
 				validCerts.Add(certificate);
 
-				this.secureStream = new SslStream(this.client.GetStream(), false, new RemoteCertificateValidationCallback(CertificateValidator));
+				if (this.certValidator != null)
+				{
+					this.secureStream = new SslStream(this.client.GetStream(), false, new RemoteCertificateValidationCallback(this.certValidator));
+				}
+				else
+				{
+					this.secureStream = new SslStream(this.client.GetStream(), false, new RemoteCertificateValidationCallback(CertificateValidator));
+				}
 				this.secureStream.AuthenticateAsClient(host, validCerts, SslProtocols.Tls, true);
 			}