Class: OpenSSL::OCSP::Response

Inherits:
Object
  • Object
show all
Defined in:
ossl_ocsp.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#OpenSSL::OCSP::Response.newObject #OpenSSL::OCSP::Response.new(response_der) ⇒ Object

Creates a new OpenSSL::OCSP::Response. The response may be created empty or from a response_der string.


458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
# File 'ossl_ocsp.c', line 458

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;
}

Class Method Details

.OpenSSL::OCSP::Response.create(status, basic_response = nil) ⇒ Object

Creates an OpenSSL::OCSP::Response from status and basic_response.


417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
# File 'ossl_ocsp.c', line 417

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

#basicObject

Returns a BasicResponse for this response


525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
# File 'ossl_ocsp.c', line 525

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;
}

#statusInteger

Returns the status of the response.

Returns:


487
488
489
490
491
492
493
494
495
496
497
# File 'ossl_ocsp.c', line 487

static VALUE
ossl_ocspres_status(VALUE self)
{
    OCSP_RESPONSE *res;
    int st;

    GetOCSPRes(self, res);
    st = OCSP_response_status(res);

    return INT2NUM(st);
}

#status_stringString

Returns a status string for the response.

Returns:

  • (String)

506
507
508
509
510
511
512
513
514
515
516
# File 'ossl_ocsp.c', line 506

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_derString

Returns this response as a DER-encoded string.

Returns:

  • (String)

548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
# File 'ossl_ocsp.c', line 548

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;
}