private static bool CheckCertificateUsage(System.Security.Cryptography.X509Certificates.X509Certificate2 cert) { bool result; try { if (cert.Version < 3) { result = true; } else { System.Security.Cryptography.X509Certificates.X509KeyUsageExtension x509KeyUsageExtension = (System.Security.Cryptography.X509Certificates.X509KeyUsageExtension)cert.Extensions["2.5.29.15"]; System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension x509EnhancedKeyUsageExtension = (System.Security.Cryptography.X509Certificates.X509EnhancedKeyUsageExtension)cert.Extensions["2.5.29.37"]; if (x509KeyUsageExtension != null && x509EnhancedKeyUsageExtension != null) { if ((x509KeyUsageExtension.KeyUsages & ServicePointManager.ChainValidationHelper.s_flags) == System.Security.Cryptography.X509Certificates.X509KeyUsageFlags.None) { result = false; } else { result = (x509EnhancedKeyUsageExtension.EnhancedKeyUsages["1.3.6.1.5.5.7.3.1"] != null || x509EnhancedKeyUsageExtension.EnhancedKeyUsages["2.16.840.1.113730.4.1"] != null); } } else if (x509KeyUsageExtension != null) { result = ((x509KeyUsageExtension.KeyUsages & ServicePointManager.ChainValidationHelper.s_flags) != System.Security.Cryptography.X509Certificates.X509KeyUsageFlags.None); } else if (x509EnhancedKeyUsageExtension != null) { result = (x509EnhancedKeyUsageExtension.EnhancedKeyUsages["1.3.6.1.5.5.7.3.1"] != null || x509EnhancedKeyUsageExtension.EnhancedKeyUsages["2.16.840.1.113730.4.1"] != null); } else { System.Security.Cryptography.X509Certificates.X509Extension x509Extension = cert.Extensions["2.16.840.1.113730.1.1"]; if (x509Extension != null) { string text = x509Extension.NetscapeCertType(false); result = (text.IndexOf("SSL Server Authentication") != -1); } else { result = true; } } } } catch (Exception arg) { Console.Error.WriteLine("ERROR processing certificate: {0}", arg); Console.Error.WriteLine("Please, report this problem to the Mono team"); result = false; } return(result); }
private static bool CheckCertificateUsage(X509Certificate2 cert) { try { if (cert.Version < 3) { return(true); } X509KeyUsageExtension x509KeyUsageExtension = (X509KeyUsageExtension)cert.Extensions["2.5.29.15"]; X509EnhancedKeyUsageExtension x509EnhancedKeyUsageExtension = (X509EnhancedKeyUsageExtension)cert.Extensions["2.5.29.37"]; if (x509KeyUsageExtension != null && x509EnhancedKeyUsageExtension != null) { if ((x509KeyUsageExtension.KeyUsages & s_flags) == X509KeyUsageFlags.None) { return(false); } return(x509EnhancedKeyUsageExtension.EnhancedKeyUsages["1.3.6.1.5.5.7.3.1"] != null || x509EnhancedKeyUsageExtension.EnhancedKeyUsages["2.16.840.1.113730.4.1"] != null); } if (x509KeyUsageExtension != null) { return((x509KeyUsageExtension.KeyUsages & s_flags) != X509KeyUsageFlags.None); } if (x509EnhancedKeyUsageExtension != null) { return(x509EnhancedKeyUsageExtension.EnhancedKeyUsages["1.3.6.1.5.5.7.3.1"] != null || x509EnhancedKeyUsageExtension.EnhancedKeyUsages["2.16.840.1.113730.4.1"] != null); } System.Security.Cryptography.X509Certificates.X509Extension x509Extension = cert.Extensions["2.16.840.1.113730.1.1"]; if (x509Extension != null) { string text = x509Extension.NetscapeCertType(multiLine: false); return(text.IndexOf("SSL Server Authentication") != -1); } return(true); IL_0133: bool result; return(result); } catch (Exception arg) { Console.Error.WriteLine("ERROR processing certificate: {0}", arg); Console.Error.WriteLine("Please, report this problem to the Mono team"); return(false); IL_0162: bool result; return(result); } }