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

SignerAttribute

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Esf { public class SignerAttribute : Asn1Encodable { private readonly Asn1Sequence m_claimedAttributes; private readonly AttributeCertificate m_certifiedAttributes; public virtual Asn1Sequence ClaimedAttributes => m_claimedAttributes; public virtual AttributeCertificate CertifiedAttributes => m_certifiedAttributes; public static SignerAttribute GetInstance(object obj) { if (obj == null) return null; SignerAttribute signerAttribute = obj as SignerAttribute; if (signerAttribute != null) return signerAttribute; return new SignerAttribute(Asn1Sequence.GetInstance(obj), true); } public static SignerAttribute GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SignerAttribute(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SignerAttribute GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SignerAttribute(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private SignerAttribute(Asn1Sequence seq, bool dummy) { Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(seq[0], 128); if (instance.TagNo == 0) m_claimedAttributes = Asn1Sequence.GetInstance(instance, true); else { if (instance.TagNo != 1) throw new ArgumentException("illegal tag.", "seq"); m_certifiedAttributes = AttributeCertificate.GetInstance(instance, true); } } public SignerAttribute(Asn1Sequence claimedAttributes) { if (claimedAttributes == null) throw new ArgumentNullException("claimedAttributes"); m_claimedAttributes = claimedAttributes; } public SignerAttribute(AttributeCertificate certifiedAttributes) { if (certifiedAttributes == null) throw new ArgumentNullException("certifiedAttributes"); m_certifiedAttributes = certifiedAttributes; } public override Asn1Object ToAsn1Object() { if (m_claimedAttributes == null) return new DerSequence(new DerTaggedObject(1, m_certifiedAttributes)); return new DerSequence(new DerTaggedObject(0, m_claimedAttributes)); } } }