From 662c06f0db3c53703dc0c4c55470a58cb623ec89 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Tue, 9 Jun 2009 08:13:36 +0000 Subject: [PATCH] * Updated to the latest HttpServer which includes several SSL fixes for client and server certificates * CapsBase (CapsClient) now accepts all server SSL certificates. The actual security logic will be implemented in the HTTP handler, but this is currently a TODO git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2865 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse.Http/CapsBase.cs | 14 ++++++++++++++ OpenMetaverse.Http/CapsServer.cs | 8 +------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/OpenMetaverse.Http/CapsBase.cs b/OpenMetaverse.Http/CapsBase.cs index ca544027..91831aad 100644 --- a/OpenMetaverse.Http/CapsBase.cs +++ b/OpenMetaverse.Http/CapsBase.cs @@ -33,12 +33,26 @@ using System.Security.Cryptography.X509Certificates; namespace OpenMetaverse.Http { + public class TrustAllCertificatePolicy : ICertificatePolicy + { + public TrustAllCertificatePolicy() { } + public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int problem) + { + return true; + } + } + public static class CapsBase { public delegate void OpenWriteEventHandler(HttpWebRequest request); public delegate void DownloadProgressEventHandler(HttpWebRequest request, HttpWebResponse response, int bytesReceived, int totalBytesToReceive); public delegate void RequestCompletedEventHandler(HttpWebRequest request, HttpWebResponse response, byte[] responseData, Exception error); + static CapsBase() + { + System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); + } + private class RequestState { public HttpWebRequest Request; diff --git a/OpenMetaverse.Http/CapsServer.cs b/OpenMetaverse.Http/CapsServer.cs index 08b9df72..e7707ebc 100644 --- a/OpenMetaverse.Http/CapsServer.cs +++ b/OpenMetaverse.Http/CapsServer.cs @@ -86,7 +86,7 @@ namespace OpenMetaverse.Http this.rootCA = rootCA; serverOwned = true; capsHandler = BuildCapsHandler(@"^/caps/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"); - server = HttpListener.Create(log4netLogWriter.Instance, address, port, sslCertificate, ClientCertCallback, SslProtocols.Default, requireClientCertificate); + server = HttpListener.Create(log4netLogWriter.Instance, address, port, sslCertificate, SslProtocols.Default, requireClientCertificate); } public CapsServer(HttpListener httpServer, string handlerPath) @@ -262,12 +262,6 @@ namespace OpenMetaverse.Http response.Send(); } - bool ClientCertCallback(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - // FIXME: Implement this - return true; - } - HttpRequestHandler BuildCapsHandler(string path) { // All responses have to be send with response.Send() manually to allow proper handling of event queue