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

SmimeCapability

using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.Pkcs; using System; namespace Org.BouncyCastle.Asn1.Smime { public class SmimeCapability : Asn1Encodable { public static readonly DerObjectIdentifier PreferSignedData = PkcsObjectIdentifiers.PreferSignedData; public static readonly DerObjectIdentifier CannotDecryptAny = PkcsObjectIdentifiers.CannotDecryptAny; public static readonly DerObjectIdentifier SmimeCapabilitiesVersions = PkcsObjectIdentifiers.SmimeCapabilitiesVersions; public static readonly DerObjectIdentifier DesCbc = OiwObjectIdentifiers.DesCbc; public static readonly DerObjectIdentifier DesEde3Cbc = PkcsObjectIdentifiers.DesEde3Cbc; public static readonly DerObjectIdentifier RC2Cbc = PkcsObjectIdentifiers.RC2Cbc; private readonly DerObjectIdentifier m_capabilityID; private readonly Asn1Encodable m_parameters; public DerObjectIdentifier CapabilityID => m_capabilityID; public Asn1Object Parameters => m_parameters?.ToAsn1Object(); public static SmimeCapability GetInstance(object obj) { if (obj == null) return null; SmimeCapability smimeCapability = obj as SmimeCapability; if (smimeCapability != null) return smimeCapability; return new SmimeCapability(Asn1Sequence.GetInstance(obj)); } public static SmimeCapability GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SmimeCapability(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SmimeCapability GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SmimeCapability(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public SmimeCapability(Asn1Sequence seq) { int count = seq.Count; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_capabilityID = DerObjectIdentifier.GetInstance(seq[0]); if (seq.Count > 1) m_parameters = seq[1]; } public SmimeCapability(DerObjectIdentifier capabilityID, Asn1Encodable parameters) { if (capabilityID == null) throw new ArgumentNullException("capabilityID"); m_capabilityID = capabilityID; m_parameters = parameters; } public override Asn1Object ToAsn1Object() { if (m_parameters != null) return new DerSequence(m_capabilityID, m_parameters); return new DerSequence(m_capabilityID); } } }