| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Tsp
- {
- public class Accuracy
- : Asn1Encodable
- {
- private readonly DerInteger seconds;
- private readonly DerInteger millis;
- private readonly DerInteger micros;
- // constants
- protected const int MinMillis = 1;
- protected const int MaxMillis = 999;
- protected const int MinMicros = 1;
- protected const int MaxMicros = 999;
- public Accuracy(
- DerInteger seconds,
- DerInteger millis,
- DerInteger micros)
- {
- //Verifications
- if (millis != null
- && (millis.Value.IntValue < MinMillis
- || millis.Value.IntValue > MaxMillis))
- {
- throw new ArgumentException(
- "Invalid millis field : not in (1..999)");
- }
- if (micros != null
- && (micros.Value.IntValue < MinMicros
- || micros.Value.IntValue > MaxMicros))
- {
- throw new ArgumentException(
- "Invalid micros field : not in (1..999)");
- }
- this.seconds = seconds;
- this.millis = millis;
- this.micros = micros;
- }
- private Accuracy(
- Asn1Sequence seq)
- {
- for (int i = 0; i < seq.Count; ++i)
- {
- // seconds
- if (seq[i] is DerInteger)
- {
- seconds = (DerInteger) seq[i];
- }
- else if (seq[i] is DerTaggedObject)
- {
- DerTaggedObject extra = (DerTaggedObject) seq[i];
- switch (extra.TagNo)
- {
- case 0:
- millis = DerInteger.GetInstance(extra, false);
- if (millis.Value.IntValue < MinMillis
- || millis.Value.IntValue > MaxMillis)
- {
- throw new ArgumentException(
- "Invalid millis field : not in (1..999).");
- }
- break;
- case 1:
- micros = DerInteger.GetInstance(extra, false);
- if (micros.Value.IntValue < MinMicros
- || micros.Value.IntValue > MaxMicros)
- {
- throw new ArgumentException(
- "Invalid micros field : not in (1..999).");
- }
- break;
- default:
- throw new ArgumentException("Invalig tag number");
- }
- }
- }
- }
- public static Accuracy GetInstance(
- object o)
- {
- if (o == null || o is Accuracy)
- {
- return (Accuracy) o;
- }
- if (o is Asn1Sequence)
- {
- return new Accuracy((Asn1Sequence) o);
- }
- throw new ArgumentException(
- "Unknown object in 'Accuracy' factory: " + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(o));
- }
- public DerInteger Seconds
- {
- get { return seconds; }
- }
- public DerInteger Millis
- {
- get { return millis; }
- }
- public DerInteger Micros
- {
- get { return micros; }
- }
- /**
- * <pre>
- * Accuracy ::= SEQUENCE {
- * seconds INTEGER OPTIONAL,
- * millis [0] INTEGER (1..999) OPTIONAL,
- * micros [1] INTEGER (1..999) OPTIONAL
- * }
- * </pre>
- */
- public override Asn1Object ToAsn1Object()
- {
- Asn1EncodableVector v = new Asn1EncodableVector();
- if (seconds != null)
- {
- v.Add(seconds);
- }
- if (millis != null)
- {
- v.Add(new DerTaggedObject(false, 0, millis));
- }
- if (micros != null)
- {
- v.Add(new DerTaggedObject(false, 1, micros));
- }
- return new DerSequence(v);
- }
- }
- }
- #pragma warning restore
- #endif
|