class OpenSSL::OCSP::Response

Public Class Methods

create(p1, p2) click to toggle source

OCSP::Response

static VALUE
ossl_ocspres_s_create(VALUE klass, VALUE status, VALUE basic_resp)
{
 OCSP_BASICRESP *bs;
 OCSP_RESPONSE *res;
 VALUE obj;
 int st = NUM2INT(status);
 if(NIL_P(basic_resp)) bs = NULL;
 else GetOCSPBasicRes(basic_resp, bs); /* NO NEED TO DUP */
 if(!(res = OCSP_response_create(st, bs)))
 ossl_raise(eOCSPError, NULL);
 WrapOCSPRes(klass, obj, res);
 return obj;
}
new(p1 = v1) click to toggle source
static VALUE
ossl_ocspres_initialize(int argc, VALUE *argv, VALUE self)
{
 VALUE arg;
 const unsigned char *p;
 rb_scan_args(argc, argv, "01", &arg);
 if(!NIL_P(arg)){
 OCSP_RESPONSE *res = DATA_PTR(self), *x;
 arg = ossl_to_der_if_possible(arg);
 StringValue(arg);
 p = (unsigned char *)RSTRING_PTR(arg);
 x = d2i_OCSP_RESPONSE(&res, &p, RSTRING_LEN(arg));
 DATA_PTR(self) = res;
 if(!x){
 ossl_raise(eOCSPError, "cannot load DER encoded response");
 }
 }
 return self;
}

Public Instance Methods

basic() click to toggle source
static VALUE
ossl_ocspres_get_basic(VALUE self)
{
 OCSP_RESPONSE *res;
 OCSP_BASICRESP *bs;
 VALUE ret;
 GetOCSPRes(self, res);
 if(!(bs = OCSP_response_get1_basic(res)))
 return Qnil;
 WrapOCSPBasicRes(cOCSPBasicRes, ret, bs);
 return ret;
}
status() click to toggle source
static VALUE
ossl_ocspres_status(VALUE self)
{
 OCSP_RESPONSE *res;
 int st;
 GetOCSPRes(self, res);
 st = OCSP_response_status(res);
 return INT2NUM(st);
}
status_string() click to toggle source
static VALUE
ossl_ocspres_status_string(VALUE self)
{
 OCSP_RESPONSE *res;
 int st;
 GetOCSPRes(self, res);
 st = OCSP_response_status(res);
 return rb_str_new2(OCSP_response_status_str(st));
}
to_der() click to toggle source
static VALUE
ossl_ocspres_to_der(VALUE self)
{
 OCSP_RESPONSE *res;
 VALUE str;
 long len;
 unsigned char *p;
 GetOCSPRes(self, res);
 if((len = i2d_OCSP_RESPONSE(res, NULL)) <= 0)
 ossl_raise(eOCSPError, NULL);
 str = rb_str_new(0, len);
 p = (unsigned char *)RSTRING_PTR(str);
 if(i2d_OCSP_RESPONSE(res, &p) <= 0)
 ossl_raise(eOCSPError, NULL);
 ossl_str_adjust(str, p);
 return str;
}