From a87068655a3d31e2f85e5630462dd174b02f43c6 Mon Sep 17 00:00:00 2001 From: Adam Connelly Date: Wed, 9 Apr 2014 13:06:20 +0100 Subject: [PATCH] THRIFT-2455: Allow client certificates to be used with THttpClient --- lib/csharp/src/Transport/THttpClient.cs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/csharp/src/Transport/THttpClient.cs b/lib/csharp/src/Transport/THttpClient.cs index 78653f3b680..339024f3a33 100644 --- a/lib/csharp/src/Transport/THttpClient.cs +++ b/lib/csharp/src/Transport/THttpClient.cs @@ -27,10 +27,14 @@ namespace Thrift.Transport { - public class THttpClient : TTransport, IDisposable + using System.Linq; + using System.Security.Cryptography.X509Certificates; + + public class THttpClient : TTransport, IDisposable { private readonly Uri uri; - private Stream inputStream; + private readonly X509Certificate[] certificates; + private Stream inputStream; private MemoryStream outputStream = new MemoryStream(); // Timeouts in milliseconds @@ -44,12 +48,17 @@ public class THttpClient : TTransport, IDisposable private IWebProxy proxy = WebRequest.DefaultWebProxy; #endif - public THttpClient(Uri u) + public THttpClient(Uri u) : this(u, Enumerable.Empty()) { - uri = u; } - public int ConnectTimeout + public THttpClient(Uri u, IEnumerable certificates) + { + uri = u; + this.certificates = (certificates ?? Enumerable.Empty()).ToArray(); + } + + public int ConnectTimeout { set { @@ -180,6 +189,8 @@ private HttpWebRequest CreateRequest() { HttpWebRequest connection = (HttpWebRequest)WebRequest.Create(uri); + connection.ClientCertificates.AddRange(certificates); + #if !SILVERLIGHT if (connectTimeout > 0) {