From 066f80e377408a94635d5f044c66418d0dc07f26 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期五, 07 九月 2018 15:07:37 +0800
Subject: [PATCH] update 猫耳sdk

---
 System/HttpRequest/HttpBehaviour.cs |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/System/HttpRequest/HttpBehaviour.cs b/System/HttpRequest/HttpBehaviour.cs
index f28a99a..5e245f7 100644
--- a/System/HttpRequest/HttpBehaviour.cs
+++ b/System/HttpRequest/HttpBehaviour.cs
@@ -5,6 +5,8 @@
 using System.Net;
 using System.Text;
 using System.IO;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
 
 public class HttpBehaviour : MonoBehaviour
 {
@@ -55,6 +57,7 @@
             request.ReadWriteTimeout = 2000;
             request.Proxy = null;
             request.KeepAlive = false;
+            ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback;
         }
         catch (Exception ex)
         {
@@ -107,6 +110,50 @@
 
     }
 
+    private static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
+    {
+        if (sslPolicyErrors == SslPolicyErrors.None)
+            return true;
+
+        var _acceptCertificate = true;
+
+        if ((sslPolicyErrors &
+             SslPolicyErrors.RemoteCertificateNotAvailable) == SslPolicyErrors.RemoteCertificateNotAvailable)
+        {
+            _acceptCertificate = false;
+        }
+        else
+        {
+            if ((sslPolicyErrors &
+                 SslPolicyErrors.RemoteCertificateNameMismatch) == SslPolicyErrors.RemoteCertificateNameMismatch)
+            {
+                _acceptCertificate = false;
+            }
+
+            if ((sslPolicyErrors &
+                 SslPolicyErrors.RemoteCertificateChainErrors) == SslPolicyErrors.RemoteCertificateChainErrors)
+            {
+                foreach (X509ChainStatus item in chain.ChainStatus)
+                {
+                    if (item.Status != X509ChainStatusFlags.RevocationStatusUnknown &&
+                        item.Status != X509ChainStatusFlags.OfflineRevocation)
+                        break;
+
+                    if (item.Status != X509ChainStatusFlags.NoError)
+                    {
+                        _acceptCertificate = false;
+                    }
+                }
+            }
+        }
+
+        if (_acceptCertificate == false)
+        {
+            _acceptCertificate = true;
+        }
+
+        return _acceptCertificate;
+    }
     void Update()
     {
         if (Time.time > timeOut && !getResult)

--
Gitblit v1.8.0