<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.0" />

ExtendedKeyUsage

using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.X509 { public class ExtendedKeyUsage : Asn1Encodable { private readonly HashSet<DerObjectIdentifier> m_usageTable = new HashSet<DerObjectIdentifier>(); private readonly Asn1Sequence m_seq; public int Count => m_usageTable.Count; public static ExtendedKeyUsage GetInstance(object obj) { if (obj == null) return null; ExtendedKeyUsage extendedKeyUsage = obj as ExtendedKeyUsage; if (extendedKeyUsage != null) return extendedKeyUsage; X509Extension x509Extension = obj as X509Extension; if (x509Extension != null) return GetInstance(X509Extension.ConvertValueToObject(x509Extension)); return new ExtendedKeyUsage(Asn1Sequence.GetInstance(obj)); } public static ExtendedKeyUsage GetInstance(Asn1TaggedObject obj, bool explicitly) { return new ExtendedKeyUsage(Asn1Sequence.GetInstance(obj, explicitly)); } public static ExtendedKeyUsage GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new ExtendedKeyUsage(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public static ExtendedKeyUsage FromExtensions(X509Extensions extensions) { return GetInstance(X509Extensions.GetExtensionParsedValue(extensions, X509Extensions.ExtendedKeyUsage)); } private ExtendedKeyUsage(Asn1Sequence seq) { m_seq = seq; foreach (Asn1Encodable item in seq) { DerObjectIdentifier instance = DerObjectIdentifier.GetInstance(item); m_usageTable.Add(instance); } } public ExtendedKeyUsage(params KeyPurposeID[] usages) { m_seq = new DerSequence(usages); foreach (KeyPurposeID item in usages) { m_usageTable.Add(item); } } public ExtendedKeyUsage(IEnumerable<DerObjectIdentifier> usages) { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(); foreach (DerObjectIdentifier usage in usages) { asn1EncodableVector.Add(usage); m_usageTable.Add(usage); } m_seq = new DerSequence(asn1EncodableVector); } public bool HasKeyPurposeId(KeyPurposeID keyPurposeId) { return m_usageTable.Contains(keyPurposeId); } public IList<DerObjectIdentifier> GetAllUsages() { return new List<DerObjectIdentifier>(m_usageTable); } public override Asn1Object ToAsn1Object() { return m_seq; } } }