init commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using Org.BouncyCastle.Asn1.Ocsp;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
using Org.BouncyCastle.Utilities.IO;
|
||||
|
||||
namespace Org.BouncyCastle.Crypto.Tls;
|
||||
|
||||
public class OcspStatusRequest
|
||||
{
|
||||
protected readonly IList mResponderIDList;
|
||||
|
||||
protected readonly X509Extensions mRequestExtensions;
|
||||
|
||||
public virtual IList ResponderIDList => mResponderIDList;
|
||||
|
||||
public virtual X509Extensions RequestExtensions => mRequestExtensions;
|
||||
|
||||
public OcspStatusRequest(IList responderIDList, X509Extensions requestExtensions)
|
||||
{
|
||||
mResponderIDList = responderIDList;
|
||||
mRequestExtensions = requestExtensions;
|
||||
}
|
||||
|
||||
public virtual void Encode(Stream output)
|
||||
{
|
||||
if (mResponderIDList == null || mResponderIDList.Count < 1)
|
||||
{
|
||||
TlsUtilities.WriteUint16(0, output);
|
||||
}
|
||||
else
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
for (int i = 0; i < mResponderIDList.Count; i++)
|
||||
{
|
||||
ResponderID responderID = (ResponderID)mResponderIDList[i];
|
||||
byte[] encoded = responderID.GetEncoded("DER");
|
||||
TlsUtilities.WriteOpaque16(encoded, memoryStream);
|
||||
}
|
||||
TlsUtilities.CheckUint16(memoryStream.Length);
|
||||
TlsUtilities.WriteUint16((int)memoryStream.Length, output);
|
||||
Streams.WriteBufTo(memoryStream, output);
|
||||
}
|
||||
if (mRequestExtensions == null)
|
||||
{
|
||||
TlsUtilities.WriteUint16(0, output);
|
||||
return;
|
||||
}
|
||||
byte[] encoded2 = mRequestExtensions.GetEncoded("DER");
|
||||
TlsUtilities.CheckUint16(encoded2.Length);
|
||||
TlsUtilities.WriteUint16(encoded2.Length, output);
|
||||
output.Write(encoded2, 0, encoded2.Length);
|
||||
}
|
||||
|
||||
public static OcspStatusRequest Parse(Stream input)
|
||||
{
|
||||
IList list = Platform.CreateArrayList();
|
||||
int num = TlsUtilities.ReadUint16(input);
|
||||
if (num > 0)
|
||||
{
|
||||
byte[] buffer = TlsUtilities.ReadFully(num, input);
|
||||
MemoryStream memoryStream = new MemoryStream(buffer, writable: false);
|
||||
do
|
||||
{
|
||||
byte[] encoding = TlsUtilities.ReadOpaque16(memoryStream);
|
||||
ResponderID instance = ResponderID.GetInstance(TlsUtilities.ReadDerObject(encoding));
|
||||
list.Add(instance);
|
||||
}
|
||||
while (memoryStream.Position < memoryStream.Length);
|
||||
}
|
||||
X509Extensions requestExtensions = null;
|
||||
int num2 = TlsUtilities.ReadUint16(input);
|
||||
if (num2 > 0)
|
||||
{
|
||||
byte[] encoding2 = TlsUtilities.ReadFully(num2, input);
|
||||
requestExtensions = X509Extensions.GetInstance(TlsUtilities.ReadDerObject(encoding2));
|
||||
}
|
||||
return new OcspStatusRequest(list, requestExtensions);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user