public byte[] GetEncoded()
{
OcspReq request = GenerateOCSPRequest(rootCert, checkCert.SerialNumber);
byte[] array = request.GetEncoded();
HttpWebRequest con = (HttpWebRequest)WebRequest.Create(url);
con.ContentLength = array.Length;
con.ContentType = "application/ocsp-request";
con.Accept = "application/ocsp-response";
con.Method = "POST";
Stream outp = con.GetRequestStream();
outp.Write(array, 0, array.Length);
outp.Close();
HttpWebResponse response = (HttpWebResponse)con.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
throw new IOException(MessageLocalization.GetComposedMessage("invalid.http.response.1", (int)response.StatusCode));
Stream inp = response.GetResponseStream();
OcspResp ocspResponse = new OcspResp(inp);
inp.Close();
response.Close();
if (ocspResponse.Status != 0)
throw new IOException(MessageLocalization.GetComposedMessage("invalid.status.1", ocspResponse.Status));
BasicOcspResp basicResponse = (BasicOcspResp) ocspResponse.GetResponseObject();
if (basicResponse != null) {
SingleResp[] responses = basicResponse.Responses;
if (responses.Length == 1) {
SingleResp resp = responses[0];
Object status = resp.GetCertStatus();
if (status == CertificateStatus.Good) {
return basicResponse.GetEncoded();
}
else if (status is Org.BouncyCastle.Ocsp.RevokedStatus) {
throw new IOException(MessageLocalization.GetComposedMessage("ocsp.status.is.revoked"));
}
else {
throw new IOException(MessageLocalization.GetComposedMessage("ocsp.status.is.unknown"));
}
}
}
return null;
}