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);
}
}
}