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

EncKeyWithID

public class EncKeyWithID : Asn1Encodable
using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class EncKeyWithID : Asn1Encodable { private readonly PrivateKeyInfo m_privKeyInfo; private readonly Asn1Encodable m_identifier; public virtual PrivateKeyInfo PrivateKey => m_privKeyInfo; public virtual bool HasIdentifier => m_identifier != null; public virtual bool IsIdentifierUtf8String => m_identifier is DerUtf8String; public virtual Asn1Encodable Identifier => m_identifier; public static EncKeyWithID GetInstance(object obj) { if (obj == null) return null; EncKeyWithID encKeyWithID = obj as EncKeyWithID; if (encKeyWithID != null) return encKeyWithID; return new EncKeyWithID(Asn1Sequence.GetInstance(obj)); } public static EncKeyWithID GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new EncKeyWithID(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static EncKeyWithID GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new EncKeyWithID(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private static Asn1Encodable GetOptionalChoice(Asn1Encodable element) { DerUtf8String optional = DerUtf8String.GetOptional(element); if (optional != null) return optional; return GeneralName.GetInstance(element); } private EncKeyWithID(Asn1Sequence seq) { int count = seq.Count; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_privKeyInfo = PrivateKeyInfo.GetInstance(seq[0]); if (count > 1) m_identifier = GetOptionalChoice(seq[1]); } private EncKeyWithID(PrivateKeyInfo privKeyInfo, Asn1Encodable identifier) { if (privKeyInfo == null) throw new ArgumentNullException("privKeyInfo"); m_privKeyInfo = privKeyInfo; m_identifier = identifier; } public EncKeyWithID(PrivateKeyInfo privKeyInfo) : this(privKeyInfo, (Asn1Encodable)null) { } public EncKeyWithID(PrivateKeyInfo privKeyInfo, DerUtf8String str) : this(privKeyInfo, (Asn1Encodable)str) { } public EncKeyWithID(PrivateKeyInfo privKeyInfo, GeneralName generalName) : this(privKeyInfo, (Asn1Encodable)generalName) { } public override Asn1Object ToAsn1Object() { if (m_identifier != null) return new DerSequence(m_privKeyInfo, m_identifier); return new DerSequence(m_privKeyInfo); } } }