private static bool ConfirmServerCertificate(Session oS, string sExpectedCN, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { CertificateValidity certificateValidity = CertificateValidity.Default; FiddlerApplication.CheckOverrideCertificatePolicy(oS, sExpectedCN, certificate, chain, sslPolicyErrors, ref certificateValidity); if (certificateValidity == CertificateValidity.ForceInvalid) { return(false); } if (certificateValidity == CertificateValidity.ForceValid) { return(true); } if ((certificateValidity != CertificateValidity.ConfirmWithUser && (sslPolicyErrors == SslPolicyErrors.None || CONFIG.IgnoreServerCertErrors)) || oS.oFlags.ContainsKey("X-IgnoreCertErrors")) { return(true); } if ((sslPolicyErrors & SslPolicyErrors.RemoteCertificateNameMismatch) == SslPolicyErrors.RemoteCertificateNameMismatch && oS.oFlags.ContainsKey("X-IgnoreCertCNMismatch")) { sslPolicyErrors &= ~SslPolicyErrors.RemoteCertificateNameMismatch; if (sslPolicyErrors == SslPolicyErrors.None) { return(true); } } return(false); }
private static bool ConfirmServerCertificate(Session oS, string sExpectedCN, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { bool flag; if (FiddlerApplication.CheckOverrideCertificatePolicy(oS, sExpectedCN, certificate, chain, sslPolicyErrors, out flag)) { return(flag); } if ((sslPolicyErrors == SslPolicyErrors.None) || CONFIG.IgnoreServerCertErrors) { return(true); } if ((slAcceptableBadCertificates != null) && slAcceptableBadCertificates.Contains(certificate.GetSerialNumberString())) { return(true); } if (CONFIG.QuietMode) { return(false); } frmAlert alert = new frmAlert("Ignore remote certificate error?", string.Format("Session #{5}: The remote server ({0}) presented a certificate that did not validate, due to {1}.\r\n\r\nSUBJECT: {2}\r\nISSUER: {3}\r\nEXPIRES: {4}\r\n\r\n(This warning can be disabled by clicking Tools | Fiddler Options.)", new object[] { sExpectedCN, sslPolicyErrors, certificate.Subject, certificate.Issuer, certificate.GetExpirationDateString(), oS.id }), "Ignore errors and proceed anyway?", MessageBoxButtons.YesNo, MessageBoxDefaultButton.Button2) { TopMost = true, StartPosition = FormStartPosition.CenterScreen }; DialogResult result = (DialogResult)FiddlerApplication._frmMain.Invoke(new getDecisionDelegate(FiddlerApplication._frmMain.GetDecision), new object[] { alert }); if (DialogResult.Yes == result) { if (slAcceptableBadCertificates == null) { slAcceptableBadCertificates = new StringCollection(); } slAcceptableBadCertificates.Add(certificate.GetSerialNumberString()); } return(DialogResult.Yes == result); }