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

PkiArchiveOptions

using System; namespace Org.BouncyCastle.Asn1.Crmf { public class PkiArchiveOptions : Asn1Encodable, IAsn1Choice { public const int encryptedPrivKey = 0; public const int keyGenParameters = 1; public const int archiveRemGenPrivKey = 2; private readonly int m_tagNo; private readonly Asn1Encodable m_obj; public virtual int Type => m_tagNo; public virtual Asn1Encodable Value => m_obj; public static PkiArchiveOptions GetInstance(object obj) { return Asn1Utilities.GetInstanceChoice(obj, GetOptional); } public static PkiArchiveOptions GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance); } public static PkiArchiveOptions GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); PkiArchiveOptions pkiArchiveOptions = element as PkiArchiveOptions; if (pkiArchiveOptions != null) return pkiArchiveOptions; Asn1TaggedObject optional = Asn1TaggedObject.GetOptional(element); if (optional != null) { Asn1Encodable optionalBaseObject = GetOptionalBaseObject(optional); if (optionalBaseObject != null) return new PkiArchiveOptions(optional.TagNo, optionalBaseObject); } return null; } public static PkiArchiveOptions GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } private static Asn1Encodable GetOptionalBaseObject(Asn1TaggedObject taggedObject) { if (taggedObject.HasContextTag()) { switch (taggedObject.TagNo) { case 0: return EncryptedKey.GetTagged(taggedObject, true); case 1: return Asn1OctetString.GetTagged(taggedObject, false); case 2: return DerBoolean.GetTagged(taggedObject, false); } } return null; } private PkiArchiveOptions(int tagNo, Asn1Encodable obj) { m_tagNo = tagNo; if (obj == null) throw new ArgumentNullException("obj"); m_obj = obj; } public PkiArchiveOptions(EncryptedKey encKey) : this(0, encKey) { } public PkiArchiveOptions(Asn1OctetString keyGenParameters) : this(1, keyGenParameters) { } public PkiArchiveOptions(bool archiveRemGenPrivKey) : this(2, DerBoolean.GetInstance(archiveRemGenPrivKey)) { } public override Asn1Object ToAsn1Object() { return new DerTaggedObject(false, m_tagNo, m_obj); } } }