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/05/08 22:32:10 UTC
git commit: THRIFT-2455 Allow client certificates to be used with
THttpClient Client: C# Patch: Adam Connelly & Jens Geyer
Repository: thrift
Updated Branches:
refs/heads/master 37042270e -> c0ad36848
THRIFT-2455 Allow client certificates to be used with THttpClient
Client: C#
Patch: Adam Connelly & Jens Geyer
This closes #96
commit a87068655a3d31e2f85e5630462dd174b02f43c6
Author: Adam Connelly <ad...@resdiary.com>
Date: 2014-04-09T12:06:20Z
THRIFT-2455: Allow client certificates to be used with THttpClient
Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/c0ad3684
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/c0ad3684
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/c0ad3684
Branch: refs/heads/master
Commit: c0ad3684863649a02a53ec7e462af248acaf1bd7
Parents: 3704227
Author: Jens Geyer <je...@apache.org>
Authored: Thu May 8 22:31:34 2014 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Thu May 8 22:31:34 2014 +0200
----------------------------------------------------------------------
lib/csharp/src/Transport/THttpClient.cs | 33 ++++++++++++++++++++--------
1 file changed, 24 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/thrift/blob/c0ad3684/lib/csharp/src/Transport/THttpClient.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/src/Transport/THttpClient.cs b/lib/csharp/src/Transport/THttpClient.cs
index d19b7a7..2acf468 100644
--- a/lib/csharp/src/Transport/THttpClient.cs
+++ b/lib/csharp/src/Transport/THttpClient.cs
@@ -24,32 +24,42 @@ using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading;
+using System.Linq;
+using System.Security.Cryptography.X509Certificates;
namespace Thrift.Transport
{
- public class THttpClient : TTransport, IDisposable
- {
- private readonly Uri uri;
- private Stream inputStream;
- private MemoryStream outputStream = new MemoryStream();
+
+ public class THttpClient : TTransport, IDisposable
+ {
+ private readonly Uri uri;
+ private readonly X509Certificate[] certificates;
+ private Stream inputStream;
+ private MemoryStream outputStream = new MemoryStream();
// Timeouts in milliseconds
private int connectTimeout = 30000;
private int readTimeout = 30000;
- private IDictionary<String, String> customHeaders = new Dictionary<string, string>();
+ private IDictionary<String, String> customHeaders = new Dictionary<string, string>();
#if !SILVERLIGHT
private IWebProxy proxy = WebRequest.DefaultWebProxy;
#endif
- public THttpClient(Uri u)
+ public THttpClient(Uri u)
+ : this(u, Enumerable.Empty<X509Certificate>())
{
- uri = u;
}
- public int ConnectTimeout
+ public THttpClient(Uri u, IEnumerable<X509Certificate> certificates)
+ {
+ uri = u;
+ this.certificates = (certificates ?? Enumerable.Empty<X509Certificate>()).ToArray();
+ }
+
+ public int ConnectTimeout
{
set
{
@@ -180,7 +190,12 @@ namespace Thrift.Transport
{
HttpWebRequest connection = (HttpWebRequest)WebRequest.Create(uri);
+
#if !SILVERLIGHT
+ // Adding certificates through code is not supported with WP7 Silverlight
+ // see "Windows Phone 7 and Certificates_FINAL_121610.pdf"
+ connection.ClientCertificates.AddRange(certificates);
+
if (connectTimeout > 0)
{
connection.Timeout = connectTimeout;