123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Crmf
- {
- public class CertTemplateBuilder
- {
- private DerInteger version;
- private DerInteger serialNumber;
- private AlgorithmIdentifier signingAlg;
- private X509Name issuer;
- private OptionalValidity validity;
- private X509Name subject;
- private SubjectPublicKeyInfo publicKey;
- private DerBitString issuerUID;
- private DerBitString subjectUID;
- private X509Extensions extensions;
- /** Sets the X.509 version. Note: for X509v3, use 2 here. */
- public virtual CertTemplateBuilder SetVersion(int ver)
- {
- version = new DerInteger(ver);
- return this;
- }
- public virtual CertTemplateBuilder SetSerialNumber(DerInteger ser)
- {
- serialNumber = ser;
- return this;
- }
- public virtual CertTemplateBuilder SetSigningAlg(AlgorithmIdentifier aid)
- {
- signingAlg = aid;
- return this;
- }
- public virtual CertTemplateBuilder SetIssuer(X509Name name)
- {
- issuer = name;
- return this;
- }
- public virtual CertTemplateBuilder SetValidity(OptionalValidity v)
- {
- validity = v;
- return this;
- }
- public virtual CertTemplateBuilder SetSubject(X509Name name)
- {
- subject = name;
- return this;
- }
- public virtual CertTemplateBuilder SetPublicKey(SubjectPublicKeyInfo spki)
- {
- publicKey = spki;
- return this;
- }
- /** Sets the issuer unique ID (deprecated in X.509v3) */
- public virtual CertTemplateBuilder SetIssuerUID(DerBitString uid)
- {
- issuerUID = uid;
- return this;
- }
- /** Sets the subject unique ID (deprecated in X.509v3) */
- public virtual CertTemplateBuilder SetSubjectUID(DerBitString uid)
- {
- subjectUID = uid;
- return this;
- }
- public virtual CertTemplateBuilder SetExtensions(X509Extensions extens)
- {
- extensions = extens;
- return this;
- }
- /**
- * <pre>
- * CertTemplate ::= SEQUENCE {
- * version [0] Version OPTIONAL,
- * serialNumber [1] INTEGER OPTIONAL,
- * signingAlg [2] AlgorithmIdentifier OPTIONAL,
- * issuer [3] Name OPTIONAL,
- * validity [4] OptionalValidity OPTIONAL,
- * subject [5] Name OPTIONAL,
- * publicKey [6] SubjectPublicKeyInfo OPTIONAL,
- * issuerUID [7] UniqueIdentifier OPTIONAL,
- * subjectUID [8] UniqueIdentifier OPTIONAL,
- * extensions [9] Extensions OPTIONAL }
- * </pre>
- * @return a basic ASN.1 object representation.
- */
- public virtual CertTemplate Build()
- {
- Asn1EncodableVector v = new Asn1EncodableVector();
- AddOptional(v, 0, false, version);
- AddOptional(v, 1, false, serialNumber);
- AddOptional(v, 2, false, signingAlg);
- AddOptional(v, 3, true, issuer); // CHOICE
- AddOptional(v, 4, false, validity);
- AddOptional(v, 5, true, subject); // CHOICE
- AddOptional(v, 6, false, publicKey);
- AddOptional(v, 7, false, issuerUID);
- AddOptional(v, 8, false, subjectUID);
- AddOptional(v, 9, false, extensions);
- return CertTemplate.GetInstance(new DerSequence(v));
- }
- private void AddOptional(Asn1EncodableVector v, int tagNo, bool isExplicit, Asn1Encodable obj)
- {
- if (obj != null)
- {
- v.Add(new DerTaggedObject(isExplicit, tagNo, obj));
- }
- }
- }
- }
- #pragma warning restore
- #endif
|