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

SmimeCapabilities

using Org.BouncyCastle.Asn1.Misc; using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.Smime { public class SmimeCapabilities : Asn1Encodable { public static readonly DerObjectIdentifier PreferSignedData = PkcsObjectIdentifiers.PreferSignedData; public static readonly DerObjectIdentifier CannotDecryptAny = PkcsObjectIdentifiers.CannotDecryptAny; public static readonly DerObjectIdentifier SmimeCapabilitesVersions = PkcsObjectIdentifiers.SmimeCapabilitiesVersions; public static readonly DerObjectIdentifier Aes256Cbc = NistObjectIdentifiers.IdAes256Cbc; public static readonly DerObjectIdentifier Aes192Cbc = NistObjectIdentifiers.IdAes192Cbc; public static readonly DerObjectIdentifier Aes128Cbc = NistObjectIdentifiers.IdAes128Cbc; public static readonly DerObjectIdentifier IdeaCbc = MiscObjectIdentifiers.as_sys_sec_alg_ideaCBC; public static readonly DerObjectIdentifier Cast5Cbc = MiscObjectIdentifiers.cast5CBC; public static readonly DerObjectIdentifier DesCbc = OiwObjectIdentifiers.DesCbc; public static readonly DerObjectIdentifier DesEde3Cbc = PkcsObjectIdentifiers.DesEde3Cbc; public static readonly DerObjectIdentifier RC2Cbc = PkcsObjectIdentifiers.RC2Cbc; private readonly Asn1Sequence m_capabilities; public static SmimeCapabilities GetInstance(object obj) { if (obj == null) return null; SmimeCapabilities smimeCapabilities = obj as SmimeCapabilities; if (smimeCapabilities != null) return smimeCapabilities; AttributeX509 attributeX = obj as AttributeX509; if (attributeX != null) return new SmimeCapabilities((Asn1Sequence)attributeX.AttrValues[0]); return new SmimeCapabilities(Asn1Sequence.GetInstance(obj)); } public static SmimeCapabilities GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SmimeCapabilities(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SmimeCapabilities GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SmimeCapabilities(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public SmimeCapabilities(Asn1Sequence seq) { if (seq == null) throw new ArgumentNullException("seq"); m_capabilities = seq; } public IList<SmimeCapability> GetCapabilitiesForOid(DerObjectIdentifier capability) { List<SmimeCapability> list = new List<SmimeCapability>(); DoGetCapabilitiesForOid(capability, list); return list; } private void DoGetCapabilitiesForOid(DerObjectIdentifier capability, List<SmimeCapability> list) { foreach (Asn1Encodable capability2 in m_capabilities) { SmimeCapability instance = SmimeCapability.GetInstance(capability2); if (instance.CapabilityID.Equals(capability)) list.Add(instance); } } public override Asn1Object ToAsn1Object() { return m_capabilities; } } }