<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

RecipientIdentifier

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Cms { public class RecipientIdentifier : Asn1Encodable, IAsn1Choice { private readonly Asn1Encodable m_id; public bool IsTagged => m_id is Asn1TaggedObject; public Asn1Encodable ID { get { if (Asn1Utilities.TryGetOptionalContextTagged(m_id, 0, false, out Asn1OctetString result, Asn1OctetString.GetTagged)) return result; return IssuerAndSerialNumber.GetInstance(m_id); } } public static RecipientIdentifier GetInstance(object o) { return Asn1Utilities.GetInstanceChoice(o, GetOptional); } public static RecipientIdentifier GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance); } public static RecipientIdentifier GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); RecipientIdentifier recipientIdentifier = element as RecipientIdentifier; if (recipientIdentifier != null) return recipientIdentifier; IssuerAndSerialNumber optional = IssuerAndSerialNumber.GetOptional(element); if (optional != null) return new RecipientIdentifier(optional); Asn1TaggedObject optional2 = Asn1TaggedObject.GetOptional(element); if (optional2 != null && optional2.HasContextTag(0)) return new RecipientIdentifier(SubjectKeyIdentifier.GetTagged(optional2, false)); Asn1OctetString asn1OctetString = element as Asn1OctetString; if (asn1OctetString != null) return new RecipientIdentifier(asn1OctetString); Asn1Object asn1Object = element as Asn1Object; if (asn1Object != null) return new RecipientIdentifier(asn1Object); return null; } public static RecipientIdentifier GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } public RecipientIdentifier(IssuerAndSerialNumber id) { if (id == null) throw new ArgumentNullException("id"); m_id = id; } public RecipientIdentifier(SubjectKeyIdentifier id) { m_id = new DerTaggedObject(false, 0, id); } [Obsolete("Use constructor taking a 'SubjectKeyIdentifier' instead")] public RecipientIdentifier(Asn1OctetString id) { m_id = new DerTaggedObject(false, 0, id); } [Obsolete("Will be removed")] public RecipientIdentifier(Asn1Object id) { if (id == null) throw new ArgumentNullException("id"); m_id = id; } public override Asn1Object ToAsn1Object() { return m_id.ToAsn1Object(); } } }