/// <summary>
/// Generate OCSP Request
/// </summary>
/// <param name="id"></param>
/// <param name="cert"></param>
/// <returns></returns>
byte[] GenerateOCSPRequest(Org.BouncyCastle.Ocsp.CertificateID id,
Org.BouncyCastle.X509.X509Certificate cert)
{
byte[] nonce = new byte[16];
Random rand = new Random();
rand.NextBytes(nonce);
//OCSP OID
var asn1 = new DerOctetString(new DerOctetString(new byte[] { 1, 3, 6, 1, 5, 5, 7, 48, 1, 1 }));
//Create OCSP Request
var gen = new Org.BouncyCastle.Ocsp.OcspReqGenerator();
gen.AddRequest(id);
gen.SetRequestorName(new Org.BouncyCastle.Asn1.X509.GeneralName(
Org.BouncyCastle.Asn1.X509.GeneralName.DirectoryName, cert.SubjectDN));
IList oids = new ArrayList();
IList values = new ArrayList();
oids.Add(Org.BouncyCastle.Asn1.Ocsp.OcspObjectIdentifiers.PkixOcspNonce);
values.Add(new X509Extension(false,
new Org.BouncyCastle.Asn1.DerOctetString(
new Org.BouncyCastle.Asn1.DerOctetString(nonce))));
oids.Add(Org.BouncyCastle.Asn1.Ocsp.OcspObjectIdentifiers.PkixOcsp);
values.Add(new X509Extension(false, asn1));
gen.SetRequestExtensions(new X509Extensions(oids, values));
var req = gen.Generate();
return(req.GetEncoded());
}