PkiBody
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.Pkcs;
using System;
namespace Org.BouncyCastle.Asn1.Cmp
{
public class PkiBody : Asn1Encodable, IAsn1Choice
{
public const int TYPE_INIT_REQ = 0;
public const int TYPE_INIT_REP = 1;
public const int TYPE_CERT_REQ = 2;
public const int TYPE_CERT_REP = 3;
public const int TYPE_P10_CERT_REQ = 4;
public const int TYPE_POPO_CHALL = 5;
public const int TYPE_POPO_REP = 6;
public const int TYPE_KEY_UPDATE_REQ = 7;
public const int TYPE_KEY_UPDATE_REP = 8;
public const int TYPE_KEY_RECOVERY_REQ = 9;
public const int TYPE_KEY_RECOVERY_REP = 10;
public const int TYPE_REVOCATION_REQ = 11;
public const int TYPE_REVOCATION_REP = 12;
public const int TYPE_CROSS_CERT_REQ = 13;
public const int TYPE_CROSS_CERT_REP = 14;
public const int TYPE_CA_KEY_UPDATE_ANN = 15;
public const int TYPE_CERT_ANN = 16;
public const int TYPE_REVOCATION_ANN = 17;
public const int TYPE_CRL_ANN = 18;
public const int TYPE_CONFIRM = 19;
public const int TYPE_NESTED = 20;
public const int TYPE_GEN_MSG = 21;
public const int TYPE_GEN_REP = 22;
public const int TYPE_ERROR = 23;
public const int TYPE_CERT_CONFIRM = 24;
public const int TYPE_POLL_REQ = 25;
public const int TYPE_POLL_REP = 26;
private readonly int m_tagNo;
private readonly Asn1Encodable m_body;
public virtual Asn1Encodable Content => m_body;
public virtual int Type => m_tagNo;
public static PkiBody GetInstance(object obj)
{
if (obj == null)
return null;
PkiBody pkiBody = obj as PkiBody;
if (pkiBody != null)
return pkiBody;
return new PkiBody(Asn1TaggedObject.GetInstance(obj));
}
public static PkiBody GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetInstanceFromChoice(taggedObject, declaredExplicit, GetInstance);
}
private PkiBody(Asn1TaggedObject taggedObject)
{
m_tagNo = taggedObject.TagNo;
m_body = GetBodyForType(m_tagNo, taggedObject.GetExplicitBaseObject());
}
public PkiBody(int type, Asn1Encodable content)
{
m_tagNo = type;
m_body = GetBodyForType(type, content);
}
private static Asn1Encodable GetBodyForType(int type, Asn1Encodable o)
{
switch (type) {
case 0:
return CertReqMessages.GetInstance(o);
case 1:
return CertRepMessage.GetInstance(o);
case 2:
return CertReqMessages.GetInstance(o);
case 3:
return CertRepMessage.GetInstance(o);
case 4:
return CertificationRequest.GetInstance(o);
case 5:
return PopoDecKeyChallContent.GetInstance(o);
case 6:
return PopoDecKeyRespContent.GetInstance(o);
case 7:
return CertReqMessages.GetInstance(o);
case 8:
return CertRepMessage.GetInstance(o);
case 9:
return CertReqMessages.GetInstance(o);
case 10:
return KeyRecRepContent.GetInstance(o);
case 11:
return RevReqContent.GetInstance(o);
case 12:
return RevRepContent.GetInstance(o);
case 13:
return CertReqMessages.GetInstance(o);
case 14:
return CertRepMessage.GetInstance(o);
case 15:
return CAKeyUpdAnnContent.GetInstance(o);
case 16:
return CmpCertificate.GetInstance(o);
case 17:
return RevAnnContent.GetInstance(o);
case 18:
return CrlAnnContent.GetInstance(o);
case 19:
return PkiConfirmContent.GetInstance(o);
case 20:
return PkiMessages.GetInstance(o);
case 21:
return GenMsgContent.GetInstance(o);
case 22:
return GenRepContent.GetInstance(o);
case 23:
return ErrorMsgContent.GetInstance(o);
case 24:
return CertConfirmContent.GetInstance(o);
case 25:
return PollReqContent.GetInstance(o);
case 26:
return PollRepContent.GetInstance(o);
default:
throw new ArgumentException("unknown tag number: " + type.ToString(), "type");
}
}
public override Asn1Object ToAsn1Object()
{
return new DerTaggedObject(true, m_tagNo, m_body);
}
}
}