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

OcspStatusRequest

public sealed class OcspStatusRequest
RFC 3546 3.6
using Org.BouncyCastle.Asn1.Ocsp; using Org.BouncyCastle.Asn1.X509; using System; using System.Collections.Generic; using System.IO; namespace Org.BouncyCastle.Tls { public sealed class OcspStatusRequest { private readonly IList<ResponderID> m_responderIDList; private readonly X509Extensions m_requestExtensions; public IList<ResponderID> ResponderIDList => m_responderIDList; public X509Extensions RequestExtensions => m_requestExtensions; public OcspStatusRequest(IList<ResponderID> responderIDList, X509Extensions requestExtensions) { m_responderIDList = responderIDList; m_requestExtensions = requestExtensions; } public void Encode(Stream output) { if (m_responderIDList == null || m_responderIDList.Count < 1) TlsUtilities.WriteUint16(0, output); else { MemoryStream memoryStream = new MemoryStream(); foreach (ResponderID responderID in m_responderIDList) { TlsUtilities.WriteOpaque16(responderID.GetEncoded("DER"), memoryStream); } TlsUtilities.CheckUint16(memoryStream.Length); TlsUtilities.WriteUint16(Convert.ToInt32(memoryStream.Length), output); memoryStream.WriteTo(output); } if (m_requestExtensions == null) TlsUtilities.WriteUint16(0, output); else { byte[] encoded = m_requestExtensions.GetEncoded("DER"); TlsUtilities.CheckUint16(encoded.Length); TlsUtilities.WriteUint16(encoded.Length, output); output.Write(encoded, 0, encoded.Length); } } public static OcspStatusRequest Parse(Stream input) { List<ResponderID> list = new List<ResponderID>(); byte[] array = TlsUtilities.ReadOpaque16(input); if (array.Length != 0) { MemoryStream memoryStream = new MemoryStream(array, false); do { byte[] encoding = TlsUtilities.ReadOpaque16(memoryStream, 1); ResponderID instance = ResponderID.GetInstance(TlsUtilities.ReadAsn1Object(encoding)); TlsUtilities.RequireDerEncoding(instance, encoding); list.Add(instance); } while (memoryStream.Position < memoryStream.Length); } X509Extensions requestExtensions = null; byte[] array2 = TlsUtilities.ReadOpaque16(input); if (array2.Length != 0) { X509Extensions instance2 = X509Extensions.GetInstance(TlsUtilities.ReadAsn1Object(array2)); TlsUtilities.RequireDerEncoding(instance2, array2); requestExtensions = instance2; } return new OcspStatusRequest(list, requestExtensions); } } }