<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

OptionalValidity

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class OptionalValidity : Asn1Encodable { private readonly Time m_notBefore; private readonly Time m_notAfter; public virtual Time NotBefore => m_notBefore; public virtual Time NotAfter => m_notAfter; public static OptionalValidity GetInstance(object obj) { if (obj == null) return null; OptionalValidity optionalValidity = obj as OptionalValidity; if (optionalValidity != null) return optionalValidity; return new OptionalValidity(Asn1Sequence.GetInstance(obj)); } public static OptionalValidity GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new OptionalValidity(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static OptionalValidity GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); OptionalValidity optionalValidity = element as OptionalValidity; if (optionalValidity != null) return optionalValidity; Asn1Sequence optional = Asn1Sequence.GetOptional(element); if (optional != null) return new OptionalValidity(optional); return null; } public static OptionalValidity GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new OptionalValidity(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private OptionalValidity(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 0 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_notBefore = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, Time.GetTagged); m_notAfter = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, true, Time.GetTagged); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public OptionalValidity(Time notBefore, Time notAfter) { if (notBefore == null && notAfter == null) throw new ArgumentException("at least one of notBefore/notAfter MUST be present."); m_notBefore = notBefore; m_notAfter = notAfter; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); asn1EncodableVector.AddOptionalTagged(true, 0, m_notBefore); asn1EncodableVector.AddOptionalTagged(true, 1, m_notAfter); return new DerSequence(asn1EncodableVector); } } }