123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.Collections;
- using System.IO;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Tsp
- {
- public class TstInfo
- : Asn1Encodable
- {
- private readonly DerInteger version;
- private readonly DerObjectIdentifier tsaPolicyId;
- private readonly MessageImprint messageImprint;
- private readonly DerInteger serialNumber;
- private readonly DerGeneralizedTime genTime;
- private readonly Accuracy accuracy;
- private readonly DerBoolean ordering;
- private readonly DerInteger nonce;
- private readonly GeneralName tsa;
- private readonly X509Extensions extensions;
- public static TstInfo GetInstance(object obj)
- {
- if (obj is TstInfo)
- return (TstInfo)obj;
- if (obj == null)
- return null;
- return new TstInfo(Asn1Sequence.GetInstance(obj));
- }
- private TstInfo(
- Asn1Sequence seq)
- {
- IEnumerator e = seq.GetEnumerator();
- // version
- e.MoveNext();
- version = DerInteger.GetInstance(e.Current);
- // tsaPolicy
- e.MoveNext();
- tsaPolicyId = DerObjectIdentifier.GetInstance(e.Current);
- // messageImprint
- e.MoveNext();
- messageImprint = MessageImprint.GetInstance(e.Current);
- // serialNumber
- e.MoveNext();
- serialNumber = DerInteger.GetInstance(e.Current);
- // genTime
- e.MoveNext();
- genTime = DerGeneralizedTime.GetInstance(e.Current);
- // default for ordering
- ordering = DerBoolean.False;
- while (e.MoveNext())
- {
- Asn1Object o = (Asn1Object) e.Current;
- if (o is Asn1TaggedObject)
- {
- DerTaggedObject tagged = (DerTaggedObject) o;
- switch (tagged.TagNo)
- {
- case 0:
- tsa = GeneralName.GetInstance(tagged, true);
- break;
- case 1:
- extensions = X509Extensions.GetInstance(tagged, false);
- break;
- default:
- throw new ArgumentException("Unknown tag value " + tagged.TagNo);
- }
- }
- if (o is DerSequence)
- {
- accuracy = Accuracy.GetInstance(o);
- }
- if (o is DerBoolean)
- {
- ordering = DerBoolean.GetInstance(o);
- }
- if (o is DerInteger)
- {
- nonce = DerInteger.GetInstance(o);
- }
- }
- }
- public TstInfo(
- DerObjectIdentifier tsaPolicyId,
- MessageImprint messageImprint,
- DerInteger serialNumber,
- DerGeneralizedTime genTime,
- Accuracy accuracy,
- DerBoolean ordering,
- DerInteger nonce,
- GeneralName tsa,
- X509Extensions extensions)
- {
- this.version = new DerInteger(1);
- this.tsaPolicyId = tsaPolicyId;
- this.messageImprint = messageImprint;
- this.serialNumber = serialNumber;
- this.genTime = genTime;
- this.accuracy = accuracy;
- this.ordering = ordering;
- this.nonce = nonce;
- this.tsa = tsa;
- this.extensions = extensions;
- }
- public DerInteger Version
- {
- get { return version; }
- }
- public MessageImprint MessageImprint
- {
- get { return messageImprint; }
- }
- public DerObjectIdentifier Policy
- {
- get { return tsaPolicyId; }
- }
- public DerInteger SerialNumber
- {
- get { return serialNumber; }
- }
- public Accuracy Accuracy
- {
- get { return accuracy; }
- }
- public DerGeneralizedTime GenTime
- {
- get { return genTime; }
- }
- public DerBoolean Ordering
- {
- get { return ordering; }
- }
- public DerInteger Nonce
- {
- get { return nonce; }
- }
- public GeneralName Tsa
- {
- get { return tsa; }
- }
- public X509Extensions Extensions
- {
- get { return extensions; }
- }
- /**
- * <pre>
- *
- * TstInfo ::= SEQUENCE {
- * version INTEGER { v1(1) },
- * policy TSAPolicyId,
- * messageImprint MessageImprint,
- * -- MUST have the same value as the similar field in
- * -- TimeStampReq
- * serialNumber INTEGER,
- * -- Time-Stamping users MUST be ready to accommodate integers
- * -- up to 160 bits.
- * genTime GeneralizedTime,
- * accuracy Accuracy OPTIONAL,
- * ordering BOOLEAN DEFAULT FALSE,
- * nonce INTEGER OPTIONAL,
- * -- MUST be present if the similar field was present
- * -- in TimeStampReq. In that case it MUST have the same value.
- * tsa [0] GeneralName OPTIONAL,
- * extensions [1] IMPLICIT Extensions OPTIONAL }
- *
- * </pre>
- */
- public override Asn1Object ToAsn1Object()
- {
- Asn1EncodableVector v = new Asn1EncodableVector(version, tsaPolicyId, messageImprint, serialNumber, genTime);
- v.AddOptional(accuracy);
- if (ordering != null && ordering.IsTrue)
- {
- v.Add(ordering);
- }
- v.AddOptional(nonce);
- v.AddOptionalTagged(true, 0, tsa);
- v.AddOptionalTagged(false, 1, extensions);
- return new DerSequence(v);
- }
- }
- }
- #pragma warning restore
- #endif
|