public KeyUsage GetKeyUsage(X509Certificate2 cert) { if (cert == null || cert.Handle == IntPtr.Zero) { throw new ArgumentNullException(nameof(cert)); } if (cert.Extensions == null) { return(KeyUsage.None); } KeyUsage keyUsage = KeyUsage.None; foreach (var extension in cert.Extensions) { X509EnhancedKeyUsageExtension ekus = extension as X509EnhancedKeyUsageExtension; if (ekus != null) { foreach (var eku in ekus.EnhancedKeyUsages) { if (EnhancedKeyUsage.ContainsKey(eku.Value)) { keyUsage = SetFlag(keyUsage, EnhancedKeyUsage[eku.Value]); } } } ekus = null; X509BasicConstraintsExtension basicConstraintsExtension = extension as X509BasicConstraintsExtension; if (basicConstraintsExtension != null) { if (basicConstraintsExtension.CertificateAuthority == true) { keyUsage = SetFlag(keyUsage, KeyUsage.CertificateAuthority); } } basicConstraintsExtension = null; } return(keyUsage); }