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

EncryptedKey

using Org.BouncyCastle.Asn1.Cms; namespace Org.BouncyCastle.Asn1.Crmf { public class EncryptedKey : Asn1Encodable, IAsn1Choice { private readonly EnvelopedData m_envelopedData; private readonly EncryptedValue m_encryptedValue; public virtual bool IsEncryptedValue => m_encryptedValue != null; public virtual Asn1Encodable Value { get { if (m_encryptedValue != null) return m_encryptedValue; return m_envelopedData; } } public static EncryptedKey GetInstance(object obj) { EncryptedKey encryptedKey = obj as EncryptedKey; if (encryptedKey != null) return encryptedKey; Asn1TaggedObject asn1TaggedObject = obj as Asn1TaggedObject; if (asn1TaggedObject != null) return new EncryptedKey(EnvelopedData.GetInstance(asn1TaggedObject, false)); return new EncryptedKey(EncryptedValue.GetInstance(obj)); } public EncryptedKey(EnvelopedData envelopedData) { m_envelopedData = envelopedData; } public EncryptedKey(EncryptedValue encryptedValue) { m_encryptedValue = encryptedValue; } public override Asn1Object ToAsn1Object() { if (m_encryptedValue != null) return m_encryptedValue.ToAsn1Object(); return new DerTaggedObject(false, 0, m_envelopedData); } } }