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

X509CertificateStructure

using System; namespace Org.BouncyCastle.Asn1.X509 { public class X509CertificateStructure : Asn1Encodable { private readonly TbsCertificateStructure m_tbsCert; private readonly AlgorithmIdentifier m_sigAlgID; private readonly DerBitString m_sig; public TbsCertificateStructure TbsCertificate => m_tbsCert; public int Version => m_tbsCert.Version; public DerInteger SerialNumber => m_tbsCert.SerialNumber; public X509Name Issuer => m_tbsCert.Issuer; public Validity Validity => m_tbsCert.Validity; public Time StartDate => m_tbsCert.StartDate; public Time EndDate => m_tbsCert.EndDate; public X509Name Subject => m_tbsCert.Subject; public SubjectPublicKeyInfo SubjectPublicKeyInfo => m_tbsCert.SubjectPublicKeyInfo; public DerBitString IssuerUniqueID => m_tbsCert.IssuerUniqueID; public DerBitString SubjectUniqueID => m_tbsCert.SubjectUniqueID; public X509Extensions Extensions => m_tbsCert.Extensions; public AlgorithmIdentifier SignatureAlgorithm => m_sigAlgID; public DerBitString Signature => m_sig; public static X509CertificateStructure GetInstance(object obj) { if (obj == null) return null; X509CertificateStructure x509CertificateStructure = obj as X509CertificateStructure; if (x509CertificateStructure != null) return x509CertificateStructure; return new X509CertificateStructure(Asn1Sequence.GetInstance(obj)); } public static X509CertificateStructure GetInstance(Asn1TaggedObject obj, bool explicitly) { return new X509CertificateStructure(Asn1Sequence.GetInstance(obj, explicitly)); } public static X509CertificateStructure GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); X509CertificateStructure x509CertificateStructure = element as X509CertificateStructure; if (x509CertificateStructure != null) return x509CertificateStructure; Asn1Sequence optional = Asn1Sequence.GetOptional(element); if (optional != null) return new X509CertificateStructure(optional); return null; } public static X509CertificateStructure GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new X509CertificateStructure(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public X509CertificateStructure(TbsCertificateStructure tbsCert, AlgorithmIdentifier sigAlgID, DerBitString sig) { if (tbsCert == null) throw new ArgumentNullException("tbsCert"); m_tbsCert = tbsCert; if (sigAlgID == null) throw new ArgumentNullException("sigAlgID"); m_sigAlgID = sigAlgID; if (sig == null) throw new ArgumentNullException("sig"); m_sig = sig; } private X509CertificateStructure(Asn1Sequence seq) { int count = seq.Count; if (count != 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_tbsCert = TbsCertificateStructure.GetInstance(seq[0]); m_sigAlgID = AlgorithmIdentifier.GetInstance(seq[1]); m_sig = DerBitString.GetInstance(seq[2]); } public byte[] GetSignatureOctets() { return m_sig.GetOctets(); } public override Asn1Object ToAsn1Object() { return new DerSequence(m_tbsCert, m_sigAlgID, m_sig); } } }