zig_example 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/ext/mkmf.rb +2734 -0
  3. data/ext/openssl/openssl_missing.c +40 -0
  4. data/ext/openssl/openssl_missing.h +238 -0
  5. data/ext/openssl/ossl.c +1295 -0
  6. data/ext/openssl/ossl.h +201 -0
  7. data/ext/openssl/ossl_asn1.c +1891 -0
  8. data/ext/openssl/ossl_asn1.h +62 -0
  9. data/ext/openssl/ossl_bio.c +42 -0
  10. data/ext/openssl/ossl_bio.h +16 -0
  11. data/ext/openssl/ossl_bn.c +1344 -0
  12. data/ext/openssl/ossl_bn.h +26 -0
  13. data/ext/openssl/ossl_cipher.c +1074 -0
  14. data/ext/openssl/ossl_cipher.h +20 -0
  15. data/ext/openssl/ossl_config.c +460 -0
  16. data/ext/openssl/ossl_config.h +16 -0
  17. data/ext/openssl/ossl_digest.c +425 -0
  18. data/ext/openssl/ossl_digest.h +20 -0
  19. data/ext/openssl/ossl_engine.c +568 -0
  20. data/ext/openssl/ossl_engine.h +19 -0
  21. data/ext/openssl/ossl_hmac.c +310 -0
  22. data/ext/openssl/ossl_hmac.h +18 -0
  23. data/ext/openssl/ossl_kdf.c +311 -0
  24. data/ext/openssl/ossl_kdf.h +6 -0
  25. data/ext/openssl/ossl_ns_spki.c +405 -0
  26. data/ext/openssl/ossl_ns_spki.h +19 -0
  27. data/ext/openssl/ossl_ocsp.c +1965 -0
  28. data/ext/openssl/ossl_ocsp.h +23 -0
  29. data/ext/openssl/ossl_pkcs12.c +275 -0
  30. data/ext/openssl/ossl_pkcs12.h +13 -0
  31. data/ext/openssl/ossl_pkcs7.c +1081 -0
  32. data/ext/openssl/ossl_pkcs7.h +36 -0
  33. data/ext/openssl/ossl_pkey.c +1624 -0
  34. data/ext/openssl/ossl_pkey.h +204 -0
  35. data/ext/openssl/ossl_pkey_dh.c +440 -0
  36. data/ext/openssl/ossl_pkey_dsa.c +359 -0
  37. data/ext/openssl/ossl_pkey_ec.c +1655 -0
  38. data/ext/openssl/ossl_pkey_rsa.c +579 -0
  39. data/ext/openssl/ossl_rand.c +200 -0
  40. data/ext/openssl/ossl_rand.h +18 -0
  41. data/ext/openssl/ossl_ssl.c +3142 -0
  42. data/ext/openssl/ossl_ssl.h +36 -0
  43. data/ext/openssl/ossl_ssl_session.c +331 -0
  44. data/ext/openssl/ossl_ts.c +1539 -0
  45. data/ext/openssl/ossl_ts.h +16 -0
  46. data/ext/openssl/ossl_x509.c +256 -0
  47. data/ext/openssl/ossl_x509.h +115 -0
  48. data/ext/openssl/ossl_x509attr.c +324 -0
  49. data/ext/openssl/ossl_x509cert.c +1002 -0
  50. data/ext/openssl/ossl_x509crl.c +545 -0
  51. data/ext/openssl/ossl_x509ext.c +490 -0
  52. data/ext/openssl/ossl_x509name.c +597 -0
  53. data/ext/openssl/ossl_x509req.c +444 -0
  54. data/ext/openssl/ossl_x509revoked.c +300 -0
  55. data/ext/openssl/ossl_x509store.c +986 -0
  56. data/ext/zigrb_100doors/build.zig +0 -12
  57. data/ext/zigrb_100doors/extconf.rb +2 -19
  58. data/ext/zigrb_ackermann/build.zig +0 -12
  59. data/ext/zigrb_ackermann/extconf.rb +2 -19
  60. data/ext/zigrb_lucas_lehmer/build.zig +0 -12
  61. data/ext/zigrb_lucas_lehmer/extconf.rb +2 -19
  62. data/lib/zig_example/version.rb +1 -1
  63. metadata +56 -2
@@ -0,0 +1,545 @@
1
+ /*
2
+ * 'OpenSSL for Ruby' project
3
+ * Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
4
+ * All rights reserved.
5
+ */
6
+ /*
7
+ * This program is licensed under the same licence as Ruby.
8
+ * (See the file 'LICENCE'.)
9
+ */
10
+ #include "ossl.h"
11
+
12
+ #define NewX509CRL(klass) \
13
+ TypedData_Wrap_Struct((klass), &ossl_x509crl_type, 0)
14
+ #define SetX509CRL(obj, crl) do { \
15
+ if (!(crl)) { \
16
+ ossl_raise(rb_eRuntimeError, "CRL wasn't initialized!"); \
17
+ } \
18
+ RTYPEDDATA_DATA(obj) = (crl); \
19
+ } while (0)
20
+ #define GetX509CRL(obj, crl) do { \
21
+ TypedData_Get_Struct((obj), X509_CRL, &ossl_x509crl_type, (crl)); \
22
+ if (!(crl)) { \
23
+ ossl_raise(rb_eRuntimeError, "CRL wasn't initialized!"); \
24
+ } \
25
+ } while (0)
26
+
27
+ /*
28
+ * Classes
29
+ */
30
+ VALUE cX509CRL;
31
+ VALUE eX509CRLError;
32
+
33
+ static void
34
+ ossl_x509crl_free(void *ptr)
35
+ {
36
+ X509_CRL_free(ptr);
37
+ }
38
+
39
+ static const rb_data_type_t ossl_x509crl_type = {
40
+ "OpenSSL/X509/CRL",
41
+ {
42
+ 0, ossl_x509crl_free,
43
+ },
44
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY,
45
+ };
46
+
47
+ /*
48
+ * PUBLIC
49
+ */
50
+ X509_CRL *
51
+ GetX509CRLPtr(VALUE obj)
52
+ {
53
+ X509_CRL *crl;
54
+
55
+ GetX509CRL(obj, crl);
56
+
57
+ return crl;
58
+ }
59
+
60
+ VALUE
61
+ ossl_x509crl_new(X509_CRL *crl)
62
+ {
63
+ X509_CRL *tmp;
64
+ VALUE obj;
65
+
66
+ obj = NewX509CRL(cX509CRL);
67
+ tmp = crl ? X509_CRL_dup(crl) : X509_CRL_new();
68
+ if(!tmp) ossl_raise(eX509CRLError, NULL);
69
+ SetX509CRL(obj, tmp);
70
+
71
+ return obj;
72
+ }
73
+
74
+ /*
75
+ * PRIVATE
76
+ */
77
+ static VALUE
78
+ ossl_x509crl_alloc(VALUE klass)
79
+ {
80
+ X509_CRL *crl;
81
+ VALUE obj;
82
+
83
+ obj = NewX509CRL(klass);
84
+ if (!(crl = X509_CRL_new())) {
85
+ ossl_raise(eX509CRLError, NULL);
86
+ }
87
+ SetX509CRL(obj, crl);
88
+
89
+ return obj;
90
+ }
91
+
92
+ static VALUE
93
+ ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self)
94
+ {
95
+ BIO *in;
96
+ X509_CRL *crl, *crl_orig = RTYPEDDATA_DATA(self);
97
+ VALUE arg;
98
+
99
+ rb_check_frozen(self);
100
+ if (rb_scan_args(argc, argv, "01", &arg) == 0) {
101
+ return self;
102
+ }
103
+ arg = ossl_to_der_if_possible(arg);
104
+ in = ossl_obj2bio(&arg);
105
+ crl = d2i_X509_CRL_bio(in, NULL);
106
+ if (!crl) {
107
+ OSSL_BIO_reset(in);
108
+ crl = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL);
109
+ }
110
+ BIO_free(in);
111
+ if (!crl)
112
+ ossl_raise(eX509CRLError, "PEM_read_bio_X509_CRL");
113
+
114
+ RTYPEDDATA_DATA(self) = crl;
115
+ X509_CRL_free(crl_orig);
116
+
117
+ return self;
118
+ }
119
+
120
+ static VALUE
121
+ ossl_x509crl_copy(VALUE self, VALUE other)
122
+ {
123
+ X509_CRL *a, *b, *crl;
124
+
125
+ rb_check_frozen(self);
126
+ if (self == other) return self;
127
+ GetX509CRL(self, a);
128
+ GetX509CRL(other, b);
129
+ if (!(crl = X509_CRL_dup(b))) {
130
+ ossl_raise(eX509CRLError, NULL);
131
+ }
132
+ X509_CRL_free(a);
133
+ DATA_PTR(self) = crl;
134
+
135
+ return self;
136
+ }
137
+
138
+ static VALUE
139
+ ossl_x509crl_get_version(VALUE self)
140
+ {
141
+ X509_CRL *crl;
142
+ long ver;
143
+
144
+ GetX509CRL(self, crl);
145
+ ver = X509_CRL_get_version(crl);
146
+
147
+ return LONG2NUM(ver);
148
+ }
149
+
150
+ static VALUE
151
+ ossl_x509crl_set_version(VALUE self, VALUE version)
152
+ {
153
+ X509_CRL *crl;
154
+ long ver;
155
+
156
+ if ((ver = NUM2LONG(version)) < 0) {
157
+ ossl_raise(eX509CRLError, "version must be >= 0!");
158
+ }
159
+ GetX509CRL(self, crl);
160
+ if (!X509_CRL_set_version(crl, ver)) {
161
+ ossl_raise(eX509CRLError, NULL);
162
+ }
163
+
164
+ return version;
165
+ }
166
+
167
+ static VALUE
168
+ ossl_x509crl_get_signature_algorithm(VALUE self)
169
+ {
170
+ X509_CRL *crl;
171
+ const X509_ALGOR *alg;
172
+ BIO *out;
173
+
174
+ GetX509CRL(self, crl);
175
+ if (!(out = BIO_new(BIO_s_mem()))) {
176
+ ossl_raise(eX509CRLError, NULL);
177
+ }
178
+ X509_CRL_get0_signature(crl, NULL, &alg);
179
+ if (!i2a_ASN1_OBJECT(out, alg->algorithm)) {
180
+ BIO_free(out);
181
+ ossl_raise(eX509CRLError, NULL);
182
+ }
183
+
184
+ return ossl_membio2str(out);
185
+ }
186
+
187
+ static VALUE
188
+ ossl_x509crl_get_issuer(VALUE self)
189
+ {
190
+ X509_CRL *crl;
191
+
192
+ GetX509CRL(self, crl);
193
+
194
+ return ossl_x509name_new(X509_CRL_get_issuer(crl)); /* NO DUP - don't free */
195
+ }
196
+
197
+ static VALUE
198
+ ossl_x509crl_set_issuer(VALUE self, VALUE issuer)
199
+ {
200
+ X509_CRL *crl;
201
+
202
+ GetX509CRL(self, crl);
203
+
204
+ if (!X509_CRL_set_issuer_name(crl, GetX509NamePtr(issuer))) { /* DUPs name */
205
+ ossl_raise(eX509CRLError, NULL);
206
+ }
207
+ return issuer;
208
+ }
209
+
210
+ static VALUE
211
+ ossl_x509crl_get_last_update(VALUE self)
212
+ {
213
+ X509_CRL *crl;
214
+ const ASN1_TIME *time;
215
+
216
+ GetX509CRL(self, crl);
217
+ time = X509_CRL_get0_lastUpdate(crl);
218
+ if (!time)
219
+ return Qnil;
220
+
221
+ return asn1time_to_time(time);
222
+ }
223
+
224
+ static VALUE
225
+ ossl_x509crl_set_last_update(VALUE self, VALUE time)
226
+ {
227
+ X509_CRL *crl;
228
+ ASN1_TIME *asn1time;
229
+
230
+ GetX509CRL(self, crl);
231
+ asn1time = ossl_x509_time_adjust(NULL, time);
232
+ if (!X509_CRL_set1_lastUpdate(crl, asn1time)) {
233
+ ASN1_TIME_free(asn1time);
234
+ ossl_raise(eX509CRLError, "X509_CRL_set_lastUpdate");
235
+ }
236
+ ASN1_TIME_free(asn1time);
237
+
238
+ return time;
239
+ }
240
+
241
+ static VALUE
242
+ ossl_x509crl_get_next_update(VALUE self)
243
+ {
244
+ X509_CRL *crl;
245
+ const ASN1_TIME *time;
246
+
247
+ GetX509CRL(self, crl);
248
+ time = X509_CRL_get0_nextUpdate(crl);
249
+ if (!time)
250
+ return Qnil;
251
+
252
+ return asn1time_to_time(time);
253
+ }
254
+
255
+ static VALUE
256
+ ossl_x509crl_set_next_update(VALUE self, VALUE time)
257
+ {
258
+ X509_CRL *crl;
259
+ ASN1_TIME *asn1time;
260
+
261
+ GetX509CRL(self, crl);
262
+ asn1time = ossl_x509_time_adjust(NULL, time);
263
+ if (!X509_CRL_set1_nextUpdate(crl, asn1time)) {
264
+ ASN1_TIME_free(asn1time);
265
+ ossl_raise(eX509CRLError, "X509_CRL_set_nextUpdate");
266
+ }
267
+ ASN1_TIME_free(asn1time);
268
+
269
+ return time;
270
+ }
271
+
272
+ static VALUE
273
+ ossl_x509crl_get_revoked(VALUE self)
274
+ {
275
+ X509_CRL *crl;
276
+ int i, num;
277
+ X509_REVOKED *rev;
278
+ VALUE ary, revoked;
279
+
280
+ GetX509CRL(self, crl);
281
+ num = sk_X509_REVOKED_num(X509_CRL_get_REVOKED(crl));
282
+ if (num < 0) {
283
+ OSSL_Debug("num < 0???");
284
+ return rb_ary_new();
285
+ }
286
+ ary = rb_ary_new2(num);
287
+ for(i=0; i<num; i++) {
288
+ /* NO DUP - don't free! */
289
+ rev = sk_X509_REVOKED_value(X509_CRL_get_REVOKED(crl), i);
290
+ revoked = ossl_x509revoked_new(rev);
291
+ rb_ary_push(ary, revoked);
292
+ }
293
+
294
+ return ary;
295
+ }
296
+
297
+ static VALUE
298
+ ossl_x509crl_set_revoked(VALUE self, VALUE ary)
299
+ {
300
+ X509_CRL *crl;
301
+ X509_REVOKED *rev;
302
+ STACK_OF(X509_REVOKED) *sk;
303
+ long i;
304
+
305
+ Check_Type(ary, T_ARRAY);
306
+ /* All ary members should be X509 Revoked */
307
+ for (i=0; i<RARRAY_LEN(ary); i++) {
308
+ OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Rev);
309
+ }
310
+ GetX509CRL(self, crl);
311
+ if ((sk = X509_CRL_get_REVOKED(crl))) {
312
+ while ((rev = sk_X509_REVOKED_pop(sk)))
313
+ X509_REVOKED_free(rev);
314
+ }
315
+ for (i=0; i<RARRAY_LEN(ary); i++) {
316
+ rev = DupX509RevokedPtr(RARRAY_AREF(ary, i));
317
+ if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */
318
+ X509_REVOKED_free(rev);
319
+ ossl_raise(eX509CRLError, "X509_CRL_add0_revoked");
320
+ }
321
+ }
322
+ X509_CRL_sort(crl);
323
+
324
+ return ary;
325
+ }
326
+
327
+ static VALUE
328
+ ossl_x509crl_add_revoked(VALUE self, VALUE revoked)
329
+ {
330
+ X509_CRL *crl;
331
+ X509_REVOKED *rev;
332
+
333
+ GetX509CRL(self, crl);
334
+ rev = DupX509RevokedPtr(revoked);
335
+ if (!X509_CRL_add0_revoked(crl, rev)) { /* NO DUP - don't free! */
336
+ X509_REVOKED_free(rev);
337
+ ossl_raise(eX509CRLError, "X509_CRL_add0_revoked");
338
+ }
339
+ X509_CRL_sort(crl);
340
+
341
+ return revoked;
342
+ }
343
+
344
+ static VALUE
345
+ ossl_x509crl_sign(VALUE self, VALUE key, VALUE digest)
346
+ {
347
+ X509_CRL *crl;
348
+ EVP_PKEY *pkey;
349
+ const EVP_MD *md;
350
+
351
+ GetX509CRL(self, crl);
352
+ pkey = GetPrivPKeyPtr(key); /* NO NEED TO DUP */
353
+ md = ossl_evp_get_digestbyname(digest);
354
+ if (!X509_CRL_sign(crl, pkey, md)) {
355
+ ossl_raise(eX509CRLError, NULL);
356
+ }
357
+
358
+ return self;
359
+ }
360
+
361
+ static VALUE
362
+ ossl_x509crl_verify(VALUE self, VALUE key)
363
+ {
364
+ X509_CRL *crl;
365
+ EVP_PKEY *pkey;
366
+
367
+ GetX509CRL(self, crl);
368
+ pkey = GetPKeyPtr(key);
369
+ ossl_pkey_check_public_key(pkey);
370
+ switch (X509_CRL_verify(crl, pkey)) {
371
+ case 1:
372
+ return Qtrue;
373
+ case 0:
374
+ ossl_clear_error();
375
+ return Qfalse;
376
+ default:
377
+ ossl_raise(eX509CRLError, NULL);
378
+ }
379
+ }
380
+
381
+ static VALUE
382
+ ossl_x509crl_to_der(VALUE self)
383
+ {
384
+ X509_CRL *crl;
385
+ BIO *out;
386
+
387
+ GetX509CRL(self, crl);
388
+ if (!(out = BIO_new(BIO_s_mem()))) {
389
+ ossl_raise(eX509CRLError, NULL);
390
+ }
391
+ if (!i2d_X509_CRL_bio(out, crl)) {
392
+ BIO_free(out);
393
+ ossl_raise(eX509CRLError, NULL);
394
+ }
395
+
396
+ return ossl_membio2str(out);
397
+ }
398
+
399
+ static VALUE
400
+ ossl_x509crl_to_pem(VALUE self)
401
+ {
402
+ X509_CRL *crl;
403
+ BIO *out;
404
+
405
+ GetX509CRL(self, crl);
406
+ if (!(out = BIO_new(BIO_s_mem()))) {
407
+ ossl_raise(eX509CRLError, NULL);
408
+ }
409
+ if (!PEM_write_bio_X509_CRL(out, crl)) {
410
+ BIO_free(out);
411
+ ossl_raise(eX509CRLError, NULL);
412
+ }
413
+
414
+ return ossl_membio2str(out);
415
+ }
416
+
417
+ static VALUE
418
+ ossl_x509crl_to_text(VALUE self)
419
+ {
420
+ X509_CRL *crl;
421
+ BIO *out;
422
+
423
+ GetX509CRL(self, crl);
424
+ if (!(out = BIO_new(BIO_s_mem()))) {
425
+ ossl_raise(eX509CRLError, NULL);
426
+ }
427
+ if (!X509_CRL_print(out, crl)) {
428
+ BIO_free(out);
429
+ ossl_raise(eX509CRLError, NULL);
430
+ }
431
+
432
+ return ossl_membio2str(out);
433
+ }
434
+
435
+ /*
436
+ * Gets X509v3 extensions as array of X509Ext objects
437
+ */
438
+ static VALUE
439
+ ossl_x509crl_get_extensions(VALUE self)
440
+ {
441
+ X509_CRL *crl;
442
+ int count, i;
443
+ X509_EXTENSION *ext;
444
+ VALUE ary;
445
+
446
+ GetX509CRL(self, crl);
447
+ count = X509_CRL_get_ext_count(crl);
448
+ if (count < 0) {
449
+ OSSL_Debug("count < 0???");
450
+ return rb_ary_new();
451
+ }
452
+ ary = rb_ary_new2(count);
453
+ for (i=0; i<count; i++) {
454
+ ext = X509_CRL_get_ext(crl, i); /* NO DUP - don't free! */
455
+ rb_ary_push(ary, ossl_x509ext_new(ext));
456
+ }
457
+
458
+ return ary;
459
+ }
460
+
461
+ /*
462
+ * Sets X509_EXTENSIONs
463
+ */
464
+ static VALUE
465
+ ossl_x509crl_set_extensions(VALUE self, VALUE ary)
466
+ {
467
+ X509_CRL *crl;
468
+ X509_EXTENSION *ext;
469
+ long i;
470
+
471
+ Check_Type(ary, T_ARRAY);
472
+ /* All ary members should be X509 Extensions */
473
+ for (i=0; i<RARRAY_LEN(ary); i++) {
474
+ OSSL_Check_Kind(RARRAY_AREF(ary, i), cX509Ext);
475
+ }
476
+ GetX509CRL(self, crl);
477
+ for (i = X509_CRL_get_ext_count(crl); i > 0; i--)
478
+ X509_EXTENSION_free(X509_CRL_delete_ext(crl, 0));
479
+ for (i=0; i<RARRAY_LEN(ary); i++) {
480
+ ext = GetX509ExtPtr(RARRAY_AREF(ary, i)); /* NO NEED TO DUP */
481
+ if (!X509_CRL_add_ext(crl, ext, -1)) {
482
+ ossl_raise(eX509CRLError, "X509_CRL_add_ext");
483
+ }
484
+ }
485
+
486
+ return ary;
487
+ }
488
+
489
+ static VALUE
490
+ ossl_x509crl_add_extension(VALUE self, VALUE extension)
491
+ {
492
+ X509_CRL *crl;
493
+ X509_EXTENSION *ext;
494
+
495
+ GetX509CRL(self, crl);
496
+ ext = GetX509ExtPtr(extension);
497
+ if (!X509_CRL_add_ext(crl, ext, -1)) {
498
+ ossl_raise(eX509CRLError, NULL);
499
+ }
500
+
501
+ return extension;
502
+ }
503
+
504
+ /*
505
+ * INIT
506
+ */
507
+ void
508
+ Init_ossl_x509crl(void)
509
+ {
510
+ #if 0
511
+ mOSSL = rb_define_module("OpenSSL");
512
+ eOSSLError = rb_define_class_under(mOSSL, "OpenSSLError", rb_eStandardError);
513
+ mX509 = rb_define_module_under(mOSSL, "X509");
514
+ #endif
515
+
516
+ eX509CRLError = rb_define_class_under(mX509, "CRLError", eOSSLError);
517
+
518
+ cX509CRL = rb_define_class_under(mX509, "CRL", rb_cObject);
519
+
520
+ rb_define_alloc_func(cX509CRL, ossl_x509crl_alloc);
521
+ rb_define_method(cX509CRL, "initialize", ossl_x509crl_initialize, -1);
522
+ rb_define_method(cX509CRL, "initialize_copy", ossl_x509crl_copy, 1);
523
+
524
+ rb_define_method(cX509CRL, "version", ossl_x509crl_get_version, 0);
525
+ rb_define_method(cX509CRL, "version=", ossl_x509crl_set_version, 1);
526
+ rb_define_method(cX509CRL, "signature_algorithm", ossl_x509crl_get_signature_algorithm, 0);
527
+ rb_define_method(cX509CRL, "issuer", ossl_x509crl_get_issuer, 0);
528
+ rb_define_method(cX509CRL, "issuer=", ossl_x509crl_set_issuer, 1);
529
+ rb_define_method(cX509CRL, "last_update", ossl_x509crl_get_last_update, 0);
530
+ rb_define_method(cX509CRL, "last_update=", ossl_x509crl_set_last_update, 1);
531
+ rb_define_method(cX509CRL, "next_update", ossl_x509crl_get_next_update, 0);
532
+ rb_define_method(cX509CRL, "next_update=", ossl_x509crl_set_next_update, 1);
533
+ rb_define_method(cX509CRL, "revoked", ossl_x509crl_get_revoked, 0);
534
+ rb_define_method(cX509CRL, "revoked=", ossl_x509crl_set_revoked, 1);
535
+ rb_define_method(cX509CRL, "add_revoked", ossl_x509crl_add_revoked, 1);
536
+ rb_define_method(cX509CRL, "sign", ossl_x509crl_sign, 2);
537
+ rb_define_method(cX509CRL, "verify", ossl_x509crl_verify, 1);
538
+ rb_define_method(cX509CRL, "to_der", ossl_x509crl_to_der, 0);
539
+ rb_define_method(cX509CRL, "to_pem", ossl_x509crl_to_pem, 0);
540
+ rb_define_alias(cX509CRL, "to_s", "to_pem");
541
+ rb_define_method(cX509CRL, "to_text", ossl_x509crl_to_text, 0);
542
+ rb_define_method(cX509CRL, "extensions", ossl_x509crl_get_extensions, 0);
543
+ rb_define_method(cX509CRL, "extensions=", ossl_x509crl_set_extensions, 1);
544
+ rb_define_method(cX509CRL, "add_extension", ossl_x509crl_add_extension, 1);
545
+ }