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

AttributeCertificateInfo

using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Asn1.X509 { public class AttributeCertificateInfo : Asn1Encodable { internal readonly DerInteger version; internal readonly Holder holder; internal readonly AttCertIssuer issuer; internal readonly AlgorithmIdentifier signature; internal readonly DerInteger serialNumber; internal readonly AttCertValidityPeriod attrCertValidityPeriod; internal readonly Asn1Sequence attributes; internal readonly DerBitString issuerUniqueID; internal readonly X509Extensions extensions; public DerInteger Version => version; public Holder Holder => holder; public AttCertIssuer Issuer => issuer; public AlgorithmIdentifier Signature => signature; public DerInteger SerialNumber => serialNumber; public AttCertValidityPeriod AttrCertValidityPeriod => attrCertValidityPeriod; public Asn1Sequence Attributes => attributes; public DerBitString IssuerUniqueID => issuerUniqueID; public X509Extensions Extensions => extensions; public static AttributeCertificateInfo GetInstance(Asn1TaggedObject obj, bool isExplicit) { return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit)); } public static AttributeCertificateInfo GetInstance(object obj) { if (obj is AttributeCertificateInfo) return (AttributeCertificateInfo)obj; if (obj is Asn1Sequence) return new AttributeCertificateInfo((Asn1Sequence)obj); throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj"); } private AttributeCertificateInfo(Asn1Sequence seq) { if (seq.Count < 6 || seq.Count > 9) throw new ArgumentException("Bad sequence size: " + seq.Count.ToString()); int num; if (seq[0] is DerInteger) { version = DerInteger.GetInstance(seq[0]); num = 1; } else { version = new DerInteger(0); num = 0; } holder = Holder.GetInstance(seq[num]); issuer = AttCertIssuer.GetInstance(seq[num + 1]); signature = AlgorithmIdentifier.GetInstance(seq[num + 2]); serialNumber = DerInteger.GetInstance(seq[num + 3]); attrCertValidityPeriod = AttCertValidityPeriod.GetInstance(seq[num + 4]); attributes = Asn1Sequence.GetInstance(seq[num + 5]); for (int i = num + 6; i < seq.Count; i++) { Asn1Encodable asn1Encodable = seq[i]; DerBitString derBitString = asn1Encodable as DerBitString; if (derBitString != null) issuerUniqueID = derBitString; else if (asn1Encodable is Asn1Sequence || asn1Encodable is X509Extensions) { extensions = X509Extensions.GetInstance(seq[i]); } } } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(9); if (!version.HasValue(0)) asn1EncodableVector.Add(version); asn1EncodableVector.Add(holder, issuer, signature, serialNumber, attrCertValidityPeriod, attributes); asn1EncodableVector.AddOptional(issuerUniqueID, extensions); return new DerSequence(asn1EncodableVector); } } }