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

CertHash

public class CertHash : Asn1Encodable
using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Asn1.IsisMtt.Ocsp { public class CertHash : Asn1Encodable { private readonly AlgorithmIdentifier m_hashAlgorithm; private readonly Asn1OctetString m_certificateHash; public AlgorithmIdentifier HashAlgorithm => m_hashAlgorithm; public byte[] CertificateHash => Arrays.Clone(m_certificateHash.GetOctets()); public static CertHash GetInstance(object obj) { if (obj == null) return null; CertHash certHash = obj as CertHash; if (certHash != null) return certHash; return new CertHash(Asn1Sequence.GetInstance(obj)); } public static CertHash GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new CertHash(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static CertHash GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new CertHash(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private CertHash(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]); m_certificateHash = Asn1OctetString.GetInstance(seq[1]); } public CertHash(AlgorithmIdentifier hashAlgorithm, byte[] certificateHash) { if (hashAlgorithm == null) throw new ArgumentNullException("hashAlgorithm"); m_hashAlgorithm = hashAlgorithm; m_certificateHash = DerOctetString.FromContents(certificateHash); } public override Asn1Object ToAsn1Object() { return new DerSequence(m_hashAlgorithm, m_certificateHash); } } }