Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Asn1/Cmp/PkiBody.cs
2025-10-09 09:57:24 +09:00

137 lines
3.3 KiB
C#

using System;
using Org.BouncyCastle.Asn1.Crmf;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Utilities;
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 int tagNo;
private Asn1Encodable body;
public virtual int Type => tagNo;
public virtual Asn1Encodable Content => body;
public static PkiBody GetInstance(object obj)
{
if (obj is PkiBody)
{
return (PkiBody)obj;
}
if (obj is Asn1TaggedObject)
{
return new PkiBody((Asn1TaggedObject)obj);
}
throw new ArgumentException("Invalid object: " + Platform.GetTypeName(obj), "obj");
}
private PkiBody(Asn1TaggedObject tagged)
{
tagNo = tagged.TagNo;
body = GetBodyForType(tagNo, tagged.GetObject());
}
public PkiBody(int type, Asn1Encodable content)
{
tagNo = type;
body = GetBodyForType(type, content);
}
private static Asn1Encodable GetBodyForType(int type, Asn1Encodable o)
{
return type switch
{
0 => CertReqMessages.GetInstance(o),
1 => CertRepMessage.GetInstance(o),
2 => CertReqMessages.GetInstance(o),
3 => CertRepMessage.GetInstance(o),
4 => CertificationRequest.GetInstance(o),
5 => PopoDecKeyChallContent.GetInstance(o),
6 => PopoDecKeyRespContent.GetInstance(o),
7 => CertReqMessages.GetInstance(o),
8 => CertRepMessage.GetInstance(o),
9 => CertReqMessages.GetInstance(o),
10 => KeyRecRepContent.GetInstance(o),
11 => RevReqContent.GetInstance(o),
12 => RevRepContent.GetInstance(o),
13 => CertReqMessages.GetInstance(o),
14 => CertRepMessage.GetInstance(o),
15 => CAKeyUpdAnnContent.GetInstance(o),
16 => CmpCertificate.GetInstance(o),
17 => RevAnnContent.GetInstance(o),
18 => CrlAnnContent.GetInstance(o),
19 => PkiConfirmContent.GetInstance(o),
20 => PkiMessages.GetInstance(o),
21 => GenMsgContent.GetInstance(o),
22 => GenRepContent.GetInstance(o),
23 => ErrorMsgContent.GetInstance(o),
24 => CertConfirmContent.GetInstance(o),
25 => PollReqContent.GetInstance(o),
26 => PollRepContent.GetInstance(o),
_ => throw new ArgumentException("unknown tag number: " + type, "type"),
};
}
public override Asn1Object ToAsn1Object()
{
return new DerTaggedObject(explicitly: true, tagNo, body);
}
}