<PackageReference Include="BouncyCastle.Cryptography" Version="2.3.0" />

BasicConstraints

using Org.BouncyCastle.Math; using System; namespace Org.BouncyCastle.Asn1.X509 { public class BasicConstraints : Asn1Encodable { private readonly DerBoolean cA; private readonly DerInteger pathLenConstraint; public BigInteger PathLenConstraint => pathLenConstraint?.Value; public DerInteger PathLenConstraintInteger => pathLenConstraint; public static BasicConstraints GetInstance(Asn1TaggedObject obj, bool explicitly) { return GetInstance(Asn1Sequence.GetInstance(obj, explicitly)); } public static BasicConstraints GetInstance(object obj) { if (obj is BasicConstraints) return (BasicConstraints)obj; if (obj is X509Extension) return GetInstance(X509Extension.ConvertValueToObject((X509Extension)obj)); if (obj == null) return null; return new BasicConstraints(Asn1Sequence.GetInstance(obj)); } public static BasicConstraints FromExtensions(X509Extensions extensions) { return GetInstance(X509Extensions.GetExtensionParsedValue(extensions, X509Extensions.BasicConstraints)); } private BasicConstraints(Asn1Sequence seq) { if (seq.Count > 0) { DerBoolean derBoolean = seq[0] as DerBoolean; if (derBoolean != null) cA = derBoolean; else pathLenConstraint = DerInteger.GetInstance(seq[0]); if (seq.Count > 1) { if (cA == null) throw new ArgumentException("wrong sequence in constructor", "seq"); pathLenConstraint = DerInteger.GetInstance(seq[1]); } } } public BasicConstraints(bool cA) { if (cA) this.cA = DerBoolean.True; } public BasicConstraints(int pathLenConstraint) { cA = DerBoolean.True; this.pathLenConstraint = new DerInteger(pathLenConstraint); } public bool IsCA() { if (cA != null) return cA.IsTrue; return false; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); asn1EncodableVector.AddOptional(cA, pathLenConstraint); return new DerSequence(asn1EncodableVector); } public override string ToString() { bool flag; if (pathLenConstraint == null) { flag = IsCA(); return "BasicConstraints: isCa(" + flag.ToString() + ")"; } flag = IsCA(); return "BasicConstraints: isCa(" + flag.ToString() + "), pathLenConstraint = " + pathLenConstraint.Value?.ToString(); } } }