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

OriginatorIdentifierOrKey

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Cms { public class OriginatorIdentifierOrKey : Asn1Encodable, IAsn1Choice { private readonly Asn1Encodable m_id; public Asn1Encodable ID => m_id; public IssuerAndSerialNumber IssuerAndSerialNumber => m_id as IssuerAndSerialNumber; public SubjectKeyIdentifier SubjectKeyIdentifier { get { Asn1TaggedObject asn1TaggedObject = m_id as Asn1TaggedObject; if (asn1TaggedObject != null && asn1TaggedObject.HasContextTag(0)) return SubjectKeyIdentifier.GetInstance(asn1TaggedObject, false); return null; } } public OriginatorPublicKey OriginatorPublicKey { get { Asn1TaggedObject asn1TaggedObject = m_id as Asn1TaggedObject; if (asn1TaggedObject != null && asn1TaggedObject.HasContextTag(1)) return OriginatorPublicKey.GetInstance(asn1TaggedObject, false); return null; } } public static OriginatorIdentifierOrKey GetInstance(object o) { return Asn1Utilities.GetInstanceChoice(o, GetOptional); } public static OriginatorIdentifierOrKey GetInstance(Asn1TaggedObject o, bool explicitly) { return Asn1Utilities.GetInstanceChoice(o, explicitly, GetInstance); } public static OriginatorIdentifierOrKey GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); OriginatorIdentifierOrKey originatorIdentifierOrKey = element as OriginatorIdentifierOrKey; if (originatorIdentifierOrKey != null) return originatorIdentifierOrKey; IssuerAndSerialNumber optional = IssuerAndSerialNumber.GetOptional(element); if (optional != null) return new OriginatorIdentifierOrKey(optional); Asn1TaggedObject optional2 = Asn1TaggedObject.GetOptional(element); if (optional2 != null) { if (optional2.HasContextTag(0)) return new OriginatorIdentifierOrKey(SubjectKeyIdentifier.GetTagged(optional2, false)); if (optional2.HasContextTag(1)) return new OriginatorIdentifierOrKey(OriginatorPublicKey.GetTagged(optional2, false)); } return null; } public static OriginatorIdentifierOrKey GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } public OriginatorIdentifierOrKey(IssuerAndSerialNumber id) { if (id == null) throw new ArgumentNullException("id"); m_id = id; } public OriginatorIdentifierOrKey(SubjectKeyIdentifier id) { m_id = new DerTaggedObject(false, 0, id); } public OriginatorIdentifierOrKey(OriginatorPublicKey id) { m_id = new DerTaggedObject(false, 1, id); } public override Asn1Object ToAsn1Object() { return m_id.ToAsn1Object(); } } }