Ruby 2.4
OpenSSL

OpenSSL::X509::CRL

class OpenSSL::X509::CRL

父类:Object

公共类方法

new(p1 = v1) 显示源

static VALUE ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self) { BIO *in; X509_CRL *crl, *x = DATA_PTR(self VALUE arg; if (rb_scan_args(argc, argv, "01", &arg) == 0) { return self; } arg = ossl_to_der_if_possible(arg in = ossl_obj2bio(arg crl = PEM_read_bio_X509_CRL(in, &x, NULL, NULL DATA_PTR(self) = x; if (!crl) { OSSL_BIO_reset(in crl = d2i_X509_CRL_bio(in, &x DATA_PTR(self) = x; } BIO_free(in if (!crl) ossl_raise(eX509CRLError, NULL return self; }

公共实例方法

add_extension(p1) 显示源

static VALUE ossl_x509crl_add_extension(VALUE self, VALUE extension) { X509_CRL *crl; X509_EXTENSION *ext; GetX509CRL(self, crl ext = GetX509ExtPtr(extension if (!X509_CRL_add_ext(crl, ext, -1)) { ossl_raise(eX509CRLError, NULL } return extension; }

add_revoked(p1) 显示源

static VALUE ossl_x509crl_add_revoked(VALUE self, VALUE revoked) { X509_CRL *crl; X509_REVOKED *rev; GetX509CRL(self, crl rev = DupX509RevokedPtr(revoked if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */ X509_REVOKED_free(rev ossl_raise(eX509CRLError, "X509_CRL_add0_revoked" } X509_CRL_sort(crl return revoked; }

extensions() 显示源

获取X509v3扩展作为X509Ext对象的数组

static VALUE ossl_x509crl_get_extensions(VALUE self) { X509_CRL *crl; int count, i; X509_EXTENSION *ext; VALUE ary; GetX509CRL(self, crl count = X509_CRL_get_ext_count(crl if (count < 0) { OSSL_Debug("count < 0???" return rb_ary_new( } ary = rb_ary_new2(count for (i=0; i<count; i++) { ext = X509_CRL_get_ext(crl, i /* NO DUP - don't free! */ rb_ary_push(ary, ossl_x509ext_new(ext) } return ary; }

extensions=(p1) 显示源

设置X509_EXTENSIONs

static VALUE ossl_x509crl_set_extensions(VALUE self, VALUE ary) { X509_CRL *crl; X509_EXTENSION *ext; long i; Check_Type(ary, T_ARRAY /* All ary members should be X509 Extensions */ for (i=0; i<RARRAY_LEN(ary i++) { OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Ext } GetX509CRL(self, crl while ((ext = X509_CRL_delete_ext(crl, 0))) X509_EXTENSION_free(ext for (i=0; i<RARRAY_LEN(ary i++) { ext = GetX509ExtPtr(RARRAY_AREF(ary, i) /* NO NEED TO DUP */ if (!X509_CRL_add_ext(crl, ext, -1)) { ossl_raise(eX509CRLError, NULL } } return ary; }

issuer() 显示源

static VALUE ossl_x509crl_get_issuer(VALUE self) { X509_CRL *crl; GetX509CRL(self, crl return ossl_x509name_new(X509_CRL_get_issuer(crl) /* NO DUP - don't free */ }

issuer=(p1) 显示源

static VALUE ossl_x509crl_set_issuer(VALUE self, VALUE issuer) { X509_CRL *crl; GetX509CRL(self, crl if (!X509_CRL_set_issuer_name(crl, GetX509NamePtr(issuer))) { /* DUPs name */ ossl_raise(eX509CRLError, NULL } return issuer; }

last_update() 显示源

static VALUE ossl_x509crl_get_last_update(VALUE self) { X509_CRL *crl; GetX509CRL(self, crl return asn1time_to_time(X509_CRL_get0_lastUpdate(crl) }

last_update=(p1) 显示源

static VALUE ossl_x509crl_set_last_update(VALUE self, VALUE time) { X509_CRL *crl; ASN1_TIME *asn1time; GetX509CRL(self, crl asn1time = ossl_x509_time_adjust(NULL, time if (!X509_CRL_set_lastUpdate(crl, asn1time)) { ASN1_TIME_free(asn1time ossl_raise(eX509CRLError, "X509_CRL_set_lastUpdate" } ASN1_TIME_free(asn1time return time; }

next_update() 显示源

static VALUE ossl_x509crl_get_next_update(VALUE self) { X509_CRL *crl; GetX509CRL(self, crl return asn1time_to_time(X509_CRL_get0_nextUpdate(crl) }

next_update=(p1) 显示源

static VALUE ossl_x509crl_set_next_update(VALUE self, VALUE time) { X509_CRL *crl; ASN1_TIME *asn1time; GetX509CRL(self, crl asn1time = ossl_x509_time_adjust(NULL, time if (!X509_CRL_set_nextUpdate(crl, asn1time)) { ASN1_TIME_free(asn1time ossl_raise(eX509CRLError, "X509_CRL_set_nextUpdate" } ASN1_TIME_free(asn1time return time; }

revoked()显示源

static VALUE ossl_x509crl_get_revoked(VALUE self) { X509_CRL *crl; int i, num; X509_REVOKED *rev; VALUE ary, revoked; GetX509CRL(self, crl num = sk_X509_REVOKED_num(X509_CRL_get_REVOKED(crl) if (num < 0) { OSSL_Debug("num < 0???" return rb_ary_new( } ary = rb_ary_new2(num for(i=0; i<num; i++) { /* NO DUP - don't free! */ rev = sk_X509_REVOKED_value(X509_CRL_get_REVOKED(crl), i revoked = ossl_x509revoked_new(rev rb_ary_push(ary, revoked } return ary; }

revoked=(p1) 显示源

static VALUE ossl_x509crl_set_revoked(VALUE self, VALUE ary) { X509_CRL *crl; X509_REVOKED *rev; STACK_OF(X509_REVOKED) *sk; long i; Check_Type(ary, T_ARRAY /* All ary members should be X509 Revoked */ for (i=0; i<RARRAY_LEN(ary i++) { OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Rev } GetX509CRL(self, crl if ((sk = X509_CRL_get_REVOKED(crl))) { while ((rev = sk_X509_REVOKED_pop(sk))) X509_REVOKED_free(rev } for (i=0; i<RARRAY_LEN(ary i++) { rev = DupX509RevokedPtr(RARRAY_AREF(ary, i) if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */ X509_REVOKED_free(rev ossl_raise(eX509CRLError, "X509_CRL_add0_revoked" } } X509_CRL_sort(crl return ary; }

sign(p1, p2) 显示源

static VALUE ossl_x509crl_sign(VALUE self, VALUE key, VALUE digest) { X509_CRL *crl; EVP_PKEY *pkey; const EVP_MD *md; GetX509CRL(self, crl pkey = GetPrivPKeyPtr(key /* NO NEED TO DUP */ md = GetDigestPtr(digest if (!X509_CRL_sign(crl, pkey, md)) { ossl_raise(eX509CRLError, NULL } return self; }

signature_algorithm() 显示源

static VALUE ossl_x509crl_get_signature_algorithm(VALUE self) { X509_CRL *crl; const X509_ALGOR *alg; BIO *out; GetX509CRL(self, crl if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eX509CRLError, NULL } X509_CRL_get0_signature(crl, NULL, &alg if (!i2a_ASN1_OBJECT(out, alg->algorithm)) { BIO_free(out ossl_raise(eX509CRLError, NULL } return ossl_membio2str(out }

to_der() 显示源

static VALUE ossl_x509crl_to_der(VALUE self) { X509_CRL *crl; BIO *out; GetX509CRL(self, crl if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eX509CRLError, NULL } if (!i2d_X509_CRL_bio(out, crl)) { BIO_free(out ossl_raise(eX509CRLError, NULL } return ossl_membio2str(out }

to_pem() 显示源

static VALUE ossl_x509crl_to_pem(VALUE self) { X509_CRL *crl; BIO *out; GetX509CRL(self, crl if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eX509CRLError, NULL } if (!PEM_write_bio_X509_CRL(out, crl)) { BIO_free(out ossl_raise(eX509CRLError, NULL } return ossl_membio2str(out }

另外别名为:to_s

to_s()

别名为:to_pem

to_text() 显示源

static VALUE ossl_x509crl_to_text(VALUE self) { X509_CRL *crl; BIO *out; GetX509CRL(self, crl if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eX509CRLError, NULL } if (!X509_CRL_print(out, crl)) { BIO_free(out ossl_raise(eX509CRLError, NULL } return ossl_membio2str(out }

verify(p1) 显示源

static VALUE ossl_x509crl_verify(VALUE self, VALUE key) { X509_CRL *crl; GetX509CRL(self, crl switch (X509_CRL_verify(crl, GetPKeyPtr(key))) { case 1: return Qtrue; case 0: ossl_clear_error( return Qfalse; default: ossl_raise(eX509CRLError, NULL } }

version() 显示源

static VALUE ossl_x509crl_get_version(VALUE self) { X509_CRL *crl; long ver; GetX509CRL(self, crl ver = X509_CRL_get_version(crl return LONG2NUM(ver }

version=(p1) 显示源

static VALUE ossl_x509crl_set_version(VALUE self, VALUE version) { X509_CRL *crl; long ver; if ((ver = NUM2LONG(version)) < 0) { ossl_raise(eX509CRLError, "version must be >= 0!" } GetX509CRL(self, crl if (!X509_CRL_set_version(crl, ver)) { ossl_raise(eX509CRLError, NULL } return version; }