SingleResponse
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Ocsp
{
public class SingleResponse : Asn1Encodable
{
private readonly CertID m_certID;
private readonly CertStatus m_certStatus;
private readonly Asn1GeneralizedTime m_thisUpdate;
private readonly Asn1GeneralizedTime m_nextUpdate;
private readonly X509Extensions m_singleExtensions;
public CertID CertId => m_certID;
public CertStatus CertStatus => m_certStatus;
public Asn1GeneralizedTime ThisUpdate => m_thisUpdate;
public Asn1GeneralizedTime NextUpdate => m_nextUpdate;
public X509Extensions SingleExtensions => m_singleExtensions;
public static SingleResponse GetInstance(object obj)
{
if (obj == null)
return null;
SingleResponse singleResponse = obj as SingleResponse;
if (singleResponse != null)
return singleResponse;
return new SingleResponse(Asn1Sequence.GetInstance(obj));
}
public static SingleResponse GetInstance(Asn1TaggedObject obj, bool explicitly)
{
return new SingleResponse(Asn1Sequence.GetInstance(obj, explicitly));
}
public static SingleResponse GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SingleResponse(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
public SingleResponse(CertID certID, CertStatus certStatus, Asn1GeneralizedTime thisUpdate, Asn1GeneralizedTime nextUpdate, X509Extensions singleExtensions)
{
if (certID == null)
throw new ArgumentNullException("certID");
m_certID = certID;
if (certStatus == null)
throw new ArgumentNullException("certStatus");
m_certStatus = certStatus;
if (thisUpdate == null)
throw new ArgumentNullException("thisUpdate");
m_thisUpdate = thisUpdate;
m_nextUpdate = nextUpdate;
m_singleExtensions = singleExtensions;
}
[Obsolete("Use 'GetInstance' instead")]
public SingleResponse(Asn1Sequence seq)
{
int count = seq.Count;
if (count < 3 || count > 5)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
int sequencePosition = 0;
m_certID = CertID.GetInstance(seq[sequencePosition++]);
m_certStatus = CertStatus.GetInstance(seq[sequencePosition++]);
m_thisUpdate = Asn1GeneralizedTime.GetInstance(seq[sequencePosition++]);
m_nextUpdate = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, Asn1GeneralizedTime.GetTagged);
m_singleExtensions = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, true, X509Extensions.GetTagged);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(5);
asn1EncodableVector.Add(m_certID, m_certStatus, m_thisUpdate);
asn1EncodableVector.AddOptionalTagged(true, 0, m_nextUpdate);
asn1EncodableVector.AddOptionalTagged(true, 1, m_singleExtensions);
return new DerSequence(asn1EncodableVector);
}
}
}