diff options
Diffstat (limited to 'crypto/src/asn1/tsp/Accuracy.cs')
-rw-r--r-- | crypto/src/asn1/tsp/Accuracy.cs | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/crypto/src/asn1/tsp/Accuracy.cs b/crypto/src/asn1/tsp/Accuracy.cs index f9cd88014..a4fd0443b 100644 --- a/crypto/src/asn1/tsp/Accuracy.cs +++ b/crypto/src/asn1/tsp/Accuracy.cs @@ -7,21 +7,31 @@ namespace Org.BouncyCastle.Asn1.Tsp public class Accuracy : Asn1Encodable { - private readonly DerInteger seconds; - private readonly DerInteger millis; - private readonly DerInteger micros; + protected const int MinMillis = 1; + protected const int MaxMillis = 999; + protected const int MinMicros = 1; + protected const int MaxMicros = 999; - // constants - protected const int MinMillis = 1; - protected const int MaxMillis = 999; - protected const int MinMicros = 1; - protected const int MaxMicros = 999; + public static Accuracy GetInstance(object obj) + { + if (obj == null) + return null; + if (obj is Accuracy accuracy) + return accuracy; + return new Accuracy(Asn1Sequence.GetInstance(obj)); + } - public Accuracy( - DerInteger seconds, - DerInteger millis, - DerInteger micros) - { + public static Accuracy GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) + { + return new Accuracy(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + } + + private readonly DerInteger m_seconds; + private readonly DerInteger m_millis; + private readonly DerInteger m_micros; + + public Accuracy(DerInteger seconds, DerInteger millis, DerInteger micros) + { if (null != millis) { int millisValue = millis.IntValueExact; @@ -35,22 +45,26 @@ namespace Org.BouncyCastle.Asn1.Tsp throw new ArgumentException("Invalid micros field : not in (1..999)"); } - this.seconds = seconds; - this.millis = millis; - this.micros = micros; - } + m_seconds = seconds; + m_millis = millis; + m_micros = micros; + } + + private Accuracy(Asn1Sequence seq) + { + DerInteger seconds = null; + DerInteger millis = null; + DerInteger micros = null; - private Accuracy(Asn1Sequence seq) - { - for (int i = 0; i < seq.Count; ++i) - { - // seconds - if (seq[i] is DerInteger derInteger) - { - seconds = derInteger; - } + for (int i = 0; i < seq.Count; ++i) + { + // seconds + if (seq[i] is DerInteger derInteger) + { + seconds = derInteger; + } else if (seq[i] is Asn1TaggedObject extra) - { + { switch (extra.TagNo) { case 0: @@ -68,35 +82,21 @@ namespace Org.BouncyCastle.Asn1.Tsp default: throw new ArgumentException("Invalid tag number"); } - } - } - } + } + } - public static Accuracy GetInstance(object obj) - { - if (obj is Accuracy) - return (Accuracy)obj; - if (obj == null) - return null; - return new Accuracy(Asn1Sequence.GetInstance(obj)); + m_seconds = seconds; + m_millis = millis; + m_micros = micros; } - public DerInteger Seconds - { - get { return seconds; } - } + public DerInteger Seconds => m_seconds; - public DerInteger Millis - { - get { return millis; } - } + public DerInteger Millis => m_millis; - public DerInteger Micros - { - get { return micros; } - } + public DerInteger Micros => m_micros; - /** + /** * <pre> * Accuracy ::= SEQUENCE { * seconds INTEGER OPTIONAL, @@ -108,10 +108,10 @@ namespace Org.BouncyCastle.Asn1.Tsp public override Asn1Object ToAsn1Object() { Asn1EncodableVector v = new Asn1EncodableVector(3); - v.AddOptional(seconds); - v.AddOptionalTagged(false, 0, millis); - v.AddOptionalTagged(false, 1, micros); + v.AddOptional(m_seconds); + v.AddOptionalTagged(false, 0, m_millis); + v.AddOptionalTagged(false, 1, m_micros); return new DerSequence(v); } - } + } } |