init commit
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user