Class: OpenSSL::OCSP::Response
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | ext/openssl/ossl_ocsp.c | 
Overview
An Response contains the status of a certificate check which is created from an Request.
Class Method Summary
- 
    
      .create(status, basic_response = nil)  ⇒ Response 
    
    Creates an Responsefrom status and basic_response.
- 
    
      .new  ⇒ Response 
    
    constructor
    Creates a new Response.
Instance Method Summary
- 
    
      #basic  
    
    Returns a BasicResponsefor this response.
- #initialize_copy(other)
- 
    
      #status  ⇒ Integer 
    
    Returns the status of the response. 
- 
    
      #status_string  ⇒ String 
    
    Returns a status string for the response. 
- 
    
      #to_der  ⇒ String 
    
    Returns this response as a DER-encoded string. 
Constructor Details
    
      .new  ⇒ Response 
      .new(response_der)  ⇒ Response 
    
  
Response 
      .new(response_der)  ⇒ Response 
    Creates a new Response.  The response may be created empty or from a response_der string.
# File 'ext/openssl/ossl_ocsp.c', line 544
static VALUE
ossl_ocspres_initialize(int argc, VALUE *argv, VALUE self)
{
    VALUE arg;
    OCSP_RESPONSE *res, *res_new;
    const unsigned char *p;
    rb_scan_args(argc, argv, "01", &arg);
    if(!NIL_P(arg)){
	GetOCSPRes(self, res);
	arg = ossl_to_der_if_possible(arg);
	StringValue(arg);
	p = (unsigned char *)RSTRING_PTR(arg);
	res_new = d2i_OCSP_RESPONSE(NULL, &p, RSTRING_LEN(arg));
	if (!res_new)
	    ossl_raise(eOCSPError, "d2i_OCSP_RESPONSE");
	SetOCSPRes(self, res_new);
	OCSP_RESPONSE_free(res);
    }
    return self;
}
  Class Method Details
    .create(status, basic_response = nil)  ⇒ Response   
Creates an Response from status and basic_response.
# File 'ext/openssl/ossl_ocsp.c', line 484
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 */
    obj = NewOCSPRes(klass);
    if(!(res = OCSP_response_create(st, bs)))
	ossl_raise(eOCSPError, NULL);
    SetOCSPRes(obj, res);
    return obj;
}
  Instance Method Details
#basic
Returns a BasicResponse for this response
# File 'ext/openssl/ossl_ocsp.c', line 612
static VALUE
ossl_ocspres_get_basic(VALUE self)
{
    OCSP_RESPONSE *res;
    OCSP_BASICRESP *bs;
    VALUE ret;
    GetOCSPRes(self, res);
    ret = NewOCSPBasicRes(cOCSPBasicRes);
    if(!(bs = OCSP_response_get1_basic(res)))
	return Qnil;
    SetOCSPBasicRes(ret, bs);
    return ret;
}
  #initialize_copy(other)
[ GitHub ]# File 'ext/openssl/ossl_ocsp.c', line 516
static VALUE
ossl_ocspres_initialize_copy(VALUE self, VALUE other)
{
    OCSP_RESPONSE *res, *res_old, *res_new;
    rb_check_frozen(self);
    GetOCSPRes(self, res_old);
    GetOCSPRes(other, res);
    res_new = ASN1_item_dup(ASN1_ITEM_rptr(OCSP_RESPONSE), res);
    if (!res_new)
	ossl_raise(eOCSPError, "ASN1_item_dup");
    SetOCSPRes(self, res_new);
    OCSP_RESPONSE_free(res_old);
    return self;
}
  #status ⇒ Integer
Returns the status of the response.
# File 'ext/openssl/ossl_ocsp.c', line 574
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  ⇒ String   
Returns a status string for the response.
# File 'ext/openssl/ossl_ocsp.c', line 593
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  ⇒ String   
Returns this response as a DER-encoded string.
# File 'ext/openssl/ossl_ocsp.c', line 635
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;
}