CertID
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Ocsp
{
public class CertID : Asn1Encodable
{
private readonly AlgorithmIdentifier m_hashAlgorithm;
private readonly Asn1OctetString m_issuerNameHash;
private readonly Asn1OctetString m_issuerKeyHash;
private readonly DerInteger m_serialNumber;
public AlgorithmIdentifier HashAlgorithm => m_hashAlgorithm;
public Asn1OctetString IssuerNameHash => m_issuerNameHash;
public Asn1OctetString IssuerKeyHash => m_issuerKeyHash;
public DerInteger SerialNumber => m_serialNumber;
public static CertID GetInstance(object obj)
{
if (obj == null)
return null;
CertID certID = obj as CertID;
if (certID != null)
return certID;
return new CertID(Asn1Sequence.GetInstance(obj));
}
public static CertID GetInstance(Asn1TaggedObject obj, bool explicitly)
{
return new CertID(Asn1Sequence.GetInstance(obj, explicitly));
}
public static CertID GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new CertID(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
public CertID(AlgorithmIdentifier hashAlgorithm, Asn1OctetString issuerNameHash, Asn1OctetString issuerKeyHash, DerInteger serialNumber)
{
if (hashAlgorithm == null)
throw new ArgumentNullException("hashAlgorithm");
m_hashAlgorithm = hashAlgorithm;
if (issuerNameHash == null)
throw new ArgumentNullException("issuerNameHash");
m_issuerNameHash = issuerNameHash;
if (issuerKeyHash == null)
throw new ArgumentNullException("issuerKeyHash");
m_issuerKeyHash = issuerKeyHash;
if (serialNumber == null)
throw new ArgumentNullException("serialNumber");
m_serialNumber = serialNumber;
}
private CertID(Asn1Sequence seq)
{
int count = seq.Count;
if (count != 4)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]);
m_issuerNameHash = Asn1OctetString.GetInstance(seq[1]);
m_issuerKeyHash = Asn1OctetString.GetInstance(seq[2]);
m_serialNumber = DerInteger.GetInstance(seq[3]);
}
public override Asn1Object ToAsn1Object()
{
return new DerSequence(m_hashAlgorithm, m_issuerNameHash, m_issuerKeyHash, m_serialNumber);
}
}
}