ChainValidationHelper (MonoTlsProvider provider, MonoTlsSettings settings, bool cloneSettings, MonoTlsStream stream, ServerCertValidationCallbackWrapper callbackWrapper) { if (settings == null) settings = MonoTlsSettings.CopyDefaultSettings (); if (cloneSettings) settings = settings.CloneWithValidator (this); if (provider == null) provider = MonoTlsProviderFactory.GetProvider (); this.provider = provider; this.settings = settings; this.tlsStream = stream; this.callbackWrapper = callbackWrapper; var fallbackToSPM = false; if (settings != null) { if (settings.RemoteCertificateValidationCallback != null) { var callback = Private.CallbackHelpers.MonoToPublic (settings.RemoteCertificateValidationCallback); certValidationCallback = new ServerCertValidationCallback (callback); } certSelectionCallback = Private.CallbackHelpers.MonoToInternal (settings.ClientCertificateSelectionCallback); fallbackToSPM = settings.UseServicePointManagerCallback ?? stream != null; } if (stream != null) { this.request = stream.Request; this.sender = request; if (certValidationCallback == null) certValidationCallback = request.ServerCertValidationCallback; if (certSelectionCallback == null) certSelectionCallback = new LocalCertSelectionCallback (DefaultSelectionCallback); if (settings == null) fallbackToSPM = true; } if (fallbackToSPM && certValidationCallback == null) certValidationCallback = ServicePointManager.ServerCertValidationCallback; }
internal static bool InvokeCallback (ServerCertValidationCallback callback, object sender, X509Certificate certificate, X509Chain chain, MonoSslPolicyErrors sslPolicyErrors) { return callback.Invoke (sender, certificate, chain, (SslPolicyErrors)sslPolicyErrors); }
ChainValidationHelper (ChainValidationHelper other, MonoTlsProvider provider, MonoTlsSettings settings, ServerCertValidationCallbackWrapper callbackWrapper = null) { sender = other.sender; certValidationCallback = other.certValidationCallback; certSelectionCallback = other.certSelectionCallback; tlsStream = other.tlsStream; request = other.request; if (settings == null) settings = MonoTlsSettings.DefaultSettings; this.provider = provider; this.settings = settings.CloneWithValidator (this); this.callbackWrapper = callbackWrapper; }
internal ChainValidationHelper (HttpWebRequest request) { this.callbackWrapper = callbackWrapper; this.request = request; this.sender = request; if (certValidationCallback == null) certValidationCallback = request.ServerCertValidationCallback; if (certSelectionCallback == null) certSelectionCallback = new LocalCertSelectionCallback (DefaultSelectionCallback); if (certValidationCallback == null) certValidationCallback = ServicePointManager.ServerCertValidationCallback; }