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

AttributeCertificate

using System; namespace Org.BouncyCastle.Asn1.X509 { public class AttributeCertificate : Asn1Encodable { private readonly AttributeCertificateInfo m_acinfo; private readonly AlgorithmIdentifier m_signatureAlgorithm; private readonly DerBitString m_signatureValue; public AttributeCertificateInfo ACInfo => m_acinfo; public AlgorithmIdentifier SignatureAlgorithm => m_signatureAlgorithm; public DerBitString SignatureValue => m_signatureValue; public static AttributeCertificate GetInstance(object obj) { if (obj == null) return null; AttributeCertificate attributeCertificate = obj as AttributeCertificate; if (attributeCertificate != null) return attributeCertificate; return new AttributeCertificate(Asn1Sequence.GetInstance(obj)); } public static AttributeCertificate GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new AttributeCertificate(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static AttributeCertificate GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new AttributeCertificate(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private AttributeCertificate(Asn1Sequence seq) { int count = seq.Count; if (count != 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_acinfo = AttributeCertificateInfo.GetInstance(seq[0]); m_signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[1]); m_signatureValue = DerBitString.GetInstance(seq[2]); } public AttributeCertificate(AttributeCertificateInfo acinfo, AlgorithmIdentifier signatureAlgorithm, DerBitString signatureValue) { if (acinfo == null) throw new ArgumentNullException("acinfo"); m_acinfo = acinfo; if (signatureAlgorithm == null) throw new ArgumentNullException("signatureAlgorithm"); m_signatureAlgorithm = signatureAlgorithm; if (signatureValue == null) throw new ArgumentNullException("signatureValue"); m_signatureValue = signatureValue; } public byte[] GetSignatureOctets() { return m_signatureValue.GetOctets(); } public override Asn1Object ToAsn1Object() { return new DerSequence(m_acinfo, m_signatureAlgorithm, m_signatureValue); } } }