rubysl-openssl 1.0.2 → 2.0.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -6
- data/ext/rubysl/openssl/.gitignore +3 -0
- data/ext/rubysl/openssl/deprecation.rb +21 -0
- data/ext/rubysl/openssl/extconf.rb +45 -32
- data/ext/rubysl/openssl/openssl_missing.c +20 -7
- data/ext/rubysl/openssl/openssl_missing.h +22 -15
- data/ext/rubysl/openssl/ossl.c +610 -61
- data/ext/rubysl/openssl/ossl.h +31 -17
- data/ext/rubysl/openssl/ossl_asn1.c +974 -183
- data/ext/rubysl/openssl/ossl_asn1.h +3 -3
- data/ext/rubysl/openssl/ossl_bio.c +4 -3
- data/ext/rubysl/openssl/ossl_bio.h +1 -1
- data/ext/rubysl/openssl/ossl_bn.c +32 -28
- data/ext/rubysl/openssl/ossl_bn.h +1 -1
- data/ext/rubysl/openssl/ossl_cipher.c +494 -93
- data/ext/rubysl/openssl/ossl_cipher.h +1 -1
- data/ext/rubysl/openssl/ossl_config.c +4 -5
- data/ext/rubysl/openssl/ossl_config.h +1 -1
- data/ext/rubysl/openssl/ossl_digest.c +206 -24
- data/ext/rubysl/openssl/ossl_digest.h +1 -1
- data/ext/rubysl/openssl/ossl_engine.c +48 -26
- data/ext/rubysl/openssl/ossl_engine.h +1 -1
- data/ext/rubysl/openssl/ossl_hmac.c +40 -38
- data/ext/rubysl/openssl/ossl_hmac.h +1 -1
- data/ext/rubysl/openssl/ossl_ns_spki.c +157 -25
- data/ext/rubysl/openssl/ossl_ns_spki.h +1 -1
- data/ext/rubysl/openssl/ossl_ocsp.c +57 -40
- data/ext/rubysl/openssl/ossl_ocsp.h +1 -1
- data/ext/rubysl/openssl/ossl_pkcs12.c +15 -13
- data/ext/rubysl/openssl/ossl_pkcs12.h +1 -1
- data/ext/rubysl/openssl/ossl_pkcs5.c +108 -18
- data/ext/rubysl/openssl/ossl_pkcs7.c +44 -37
- data/ext/rubysl/openssl/ossl_pkcs7.h +1 -1
- data/ext/rubysl/openssl/ossl_pkey.c +211 -15
- data/ext/rubysl/openssl/ossl_pkey.h +19 -9
- data/ext/rubysl/openssl/ossl_pkey_dh.c +180 -47
- data/ext/rubysl/openssl/ossl_pkey_dsa.c +184 -47
- data/ext/rubysl/openssl/ossl_pkey_ec.c +177 -93
- data/ext/rubysl/openssl/ossl_pkey_rsa.c +209 -102
- data/ext/rubysl/openssl/ossl_rand.c +15 -15
- data/ext/rubysl/openssl/ossl_rand.h +1 -1
- data/ext/rubysl/openssl/ossl_ssl.c +939 -192
- data/ext/rubysl/openssl/ossl_ssl.h +6 -6
- data/ext/rubysl/openssl/ossl_ssl_session.c +78 -62
- data/ext/rubysl/openssl/ossl_version.h +2 -2
- data/ext/rubysl/openssl/ossl_x509.c +1 -1
- data/ext/rubysl/openssl/ossl_x509.h +1 -1
- data/ext/rubysl/openssl/ossl_x509attr.c +20 -19
- data/ext/rubysl/openssl/ossl_x509cert.c +169 -67
- data/ext/rubysl/openssl/ossl_x509crl.c +41 -39
- data/ext/rubysl/openssl/ossl_x509ext.c +51 -38
- data/ext/rubysl/openssl/ossl_x509name.c +139 -29
- data/ext/rubysl/openssl/ossl_x509req.c +42 -40
- data/ext/rubysl/openssl/ossl_x509revoked.c +20 -20
- data/ext/rubysl/openssl/ossl_x509store.c +99 -47
- data/ext/rubysl/openssl/ruby_missing.h +3 -16
- data/lib/openssl/bn.rb +19 -19
- data/lib/openssl/buffering.rb +222 -14
- data/lib/openssl/cipher.rb +20 -20
- data/lib/openssl/config.rb +1 -4
- data/lib/openssl/digest.rb +47 -19
- data/lib/openssl/ssl.rb +197 -1
- data/lib/openssl/x509.rb +162 -1
- data/lib/rubysl/openssl.rb +4 -8
- data/lib/rubysl/openssl/version.rb +1 -1
- data/rubysl-openssl.gemspec +1 -2
- metadata +16 -34
- data/ext/rubysl/openssl/extconf.h +0 -50
- data/lib/openssl/net/ftptls.rb +0 -53
- data/lib/openssl/net/telnets.rb +0 -251
- data/lib/openssl/pkcs7.rb +0 -25
- data/lib/openssl/ssl-internal.rb +0 -187
- data/lib/openssl/x509-internal.rb +0 -153
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* $Id
|
2
|
+
* $Id$
|
3
3
|
* 'OpenSSL for Ruby' project
|
4
4
|
* Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
5
5
|
* All rights reserved.
|
@@ -11,20 +11,20 @@
|
|
11
11
|
#include "ossl.h"
|
12
12
|
|
13
13
|
#define WrapX509CRL(klass, obj, crl) do { \
|
14
|
-
if (!crl) { \
|
14
|
+
if (!(crl)) { \
|
15
15
|
ossl_raise(rb_eRuntimeError, "CRL wasn't initialized!"); \
|
16
16
|
} \
|
17
|
-
obj = Data_Wrap_Struct(klass, 0, X509_CRL_free, crl); \
|
17
|
+
(obj) = Data_Wrap_Struct((klass), 0, X509_CRL_free, (crl)); \
|
18
18
|
} while (0)
|
19
19
|
#define GetX509CRL(obj, crl) do { \
|
20
|
-
Data_Get_Struct(obj, X509_CRL, crl); \
|
21
|
-
if (!crl) { \
|
20
|
+
Data_Get_Struct((obj), X509_CRL, (crl)); \
|
21
|
+
if (!(crl)) { \
|
22
22
|
ossl_raise(rb_eRuntimeError, "CRL wasn't initialized!"); \
|
23
23
|
} \
|
24
24
|
} while (0)
|
25
25
|
#define SafeGetX509CRL(obj, crl) do { \
|
26
|
-
OSSL_Check_Kind(obj, cX509CRL); \
|
27
|
-
GetX509CRL(obj, crl); \
|
26
|
+
OSSL_Check_Kind((obj), cX509CRL); \
|
27
|
+
GetX509CRL((obj), (crl)); \
|
28
28
|
} while (0)
|
29
29
|
|
30
30
|
/*
|
@@ -66,14 +66,14 @@ ossl_x509crl_new(X509_CRL *crl)
|
|
66
66
|
tmp = crl ? X509_CRL_dup(crl) : X509_CRL_new();
|
67
67
|
if(!tmp) ossl_raise(eX509CRLError, NULL);
|
68
68
|
WrapX509CRL(cX509CRL, obj, tmp);
|
69
|
-
|
69
|
+
|
70
70
|
return obj;
|
71
71
|
}
|
72
72
|
|
73
73
|
/*
|
74
74
|
* PRIVATE
|
75
75
|
*/
|
76
|
-
static VALUE
|
76
|
+
static VALUE
|
77
77
|
ossl_x509crl_alloc(VALUE klass)
|
78
78
|
{
|
79
79
|
X509_CRL *crl;
|
@@ -87,11 +87,11 @@ ossl_x509crl_alloc(VALUE klass)
|
|
87
87
|
return obj;
|
88
88
|
}
|
89
89
|
|
90
|
-
static VALUE
|
90
|
+
static VALUE
|
91
91
|
ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self)
|
92
92
|
{
|
93
93
|
BIO *in;
|
94
|
-
X509_CRL *crl;
|
94
|
+
X509_CRL *crl, *x = DATA_PTR(self);
|
95
95
|
VALUE arg;
|
96
96
|
|
97
97
|
if (rb_scan_args(argc, argv, "01", &arg) == 0) {
|
@@ -99,10 +99,12 @@ ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self)
|
|
99
99
|
}
|
100
100
|
arg = ossl_to_der_if_possible(arg);
|
101
101
|
in = ossl_obj2bio(arg);
|
102
|
-
crl = PEM_read_bio_X509_CRL(in,
|
102
|
+
crl = PEM_read_bio_X509_CRL(in, &x, NULL, NULL);
|
103
|
+
DATA_PTR(self) = x;
|
103
104
|
if (!crl) {
|
104
|
-
|
105
|
-
crl = d2i_X509_CRL_bio(in,
|
105
|
+
OSSL_BIO_reset(in);
|
106
|
+
crl = d2i_X509_CRL_bio(in, &x);
|
107
|
+
DATA_PTR(self) = x;
|
106
108
|
}
|
107
109
|
BIO_free(in);
|
108
110
|
if (!crl) ossl_raise(eX509CRLError, NULL);
|
@@ -114,7 +116,7 @@ static VALUE
|
|
114
116
|
ossl_x509crl_copy(VALUE self, VALUE other)
|
115
117
|
{
|
116
118
|
X509_CRL *a, *b, *crl;
|
117
|
-
|
119
|
+
|
118
120
|
rb_check_frozen(self);
|
119
121
|
if (self == other) return self;
|
120
122
|
GetX509CRL(self, a);
|
@@ -128,7 +130,7 @@ ossl_x509crl_copy(VALUE self, VALUE other)
|
|
128
130
|
return self;
|
129
131
|
}
|
130
132
|
|
131
|
-
static VALUE
|
133
|
+
static VALUE
|
132
134
|
ossl_x509crl_get_version(VALUE self)
|
133
135
|
{
|
134
136
|
X509_CRL *crl;
|
@@ -140,7 +142,7 @@ ossl_x509crl_get_version(VALUE self)
|
|
140
142
|
return LONG2NUM(ver);
|
141
143
|
}
|
142
144
|
|
143
|
-
static VALUE
|
145
|
+
static VALUE
|
144
146
|
ossl_x509crl_set_version(VALUE self, VALUE version)
|
145
147
|
{
|
146
148
|
X509_CRL *crl;
|
@@ -157,7 +159,7 @@ ossl_x509crl_set_version(VALUE self, VALUE version)
|
|
157
159
|
return version;
|
158
160
|
}
|
159
161
|
|
160
|
-
static VALUE
|
162
|
+
static VALUE
|
161
163
|
ossl_x509crl_get_signature_algorithm(VALUE self)
|
162
164
|
{
|
163
165
|
X509_CRL *crl;
|
@@ -179,7 +181,7 @@ ossl_x509crl_get_signature_algorithm(VALUE self)
|
|
179
181
|
return str;
|
180
182
|
}
|
181
183
|
|
182
|
-
static VALUE
|
184
|
+
static VALUE
|
183
185
|
ossl_x509crl_get_issuer(VALUE self)
|
184
186
|
{
|
185
187
|
X509_CRL *crl;
|
@@ -189,7 +191,7 @@ ossl_x509crl_get_issuer(VALUE self)
|
|
189
191
|
return ossl_x509name_new(X509_CRL_get_issuer(crl)); /* NO DUP - don't free */
|
190
192
|
}
|
191
193
|
|
192
|
-
static VALUE
|
194
|
+
static VALUE
|
193
195
|
ossl_x509crl_set_issuer(VALUE self, VALUE issuer)
|
194
196
|
{
|
195
197
|
X509_CRL *crl;
|
@@ -202,7 +204,7 @@ ossl_x509crl_set_issuer(VALUE self, VALUE issuer)
|
|
202
204
|
return issuer;
|
203
205
|
}
|
204
206
|
|
205
|
-
static VALUE
|
207
|
+
static VALUE
|
206
208
|
ossl_x509crl_get_last_update(VALUE self)
|
207
209
|
{
|
208
210
|
X509_CRL *crl;
|
@@ -212,7 +214,7 @@ ossl_x509crl_get_last_update(VALUE self)
|
|
212
214
|
return asn1time_to_time(X509_CRL_get_lastUpdate(crl));
|
213
215
|
}
|
214
216
|
|
215
|
-
static VALUE
|
217
|
+
static VALUE
|
216
218
|
ossl_x509crl_set_last_update(VALUE self, VALUE time)
|
217
219
|
{
|
218
220
|
X509_CRL *crl;
|
@@ -227,7 +229,7 @@ ossl_x509crl_set_last_update(VALUE self, VALUE time)
|
|
227
229
|
return time;
|
228
230
|
}
|
229
231
|
|
230
|
-
static VALUE
|
232
|
+
static VALUE
|
231
233
|
ossl_x509crl_get_next_update(VALUE self)
|
232
234
|
{
|
233
235
|
X509_CRL *crl;
|
@@ -237,7 +239,7 @@ ossl_x509crl_get_next_update(VALUE self)
|
|
237
239
|
return asn1time_to_time(X509_CRL_get_nextUpdate(crl));
|
238
240
|
}
|
239
241
|
|
240
|
-
static VALUE
|
242
|
+
static VALUE
|
241
243
|
ossl_x509crl_set_next_update(VALUE self, VALUE time)
|
242
244
|
{
|
243
245
|
X509_CRL *crl;
|
@@ -278,7 +280,7 @@ ossl_x509crl_get_revoked(VALUE self)
|
|
278
280
|
return ary;
|
279
281
|
}
|
280
282
|
|
281
|
-
static VALUE
|
283
|
+
static VALUE
|
282
284
|
ossl_x509crl_set_revoked(VALUE self, VALUE ary)
|
283
285
|
{
|
284
286
|
X509_CRL *crl;
|
@@ -304,7 +306,7 @@ ossl_x509crl_set_revoked(VALUE self, VALUE ary)
|
|
304
306
|
return ary;
|
305
307
|
}
|
306
308
|
|
307
|
-
static VALUE
|
309
|
+
static VALUE
|
308
310
|
ossl_x509crl_add_revoked(VALUE self, VALUE revoked)
|
309
311
|
{
|
310
312
|
X509_CRL *crl;
|
@@ -320,7 +322,7 @@ ossl_x509crl_add_revoked(VALUE self, VALUE revoked)
|
|
320
322
|
return revoked;
|
321
323
|
}
|
322
324
|
|
323
|
-
static VALUE
|
325
|
+
static VALUE
|
324
326
|
ossl_x509crl_sign(VALUE self, VALUE key, VALUE digest)
|
325
327
|
{
|
326
328
|
X509_CRL *crl;
|
@@ -337,7 +339,7 @@ ossl_x509crl_sign(VALUE self, VALUE key, VALUE digest)
|
|
337
339
|
return self;
|
338
340
|
}
|
339
341
|
|
340
|
-
static VALUE
|
342
|
+
static VALUE
|
341
343
|
ossl_x509crl_verify(VALUE self, VALUE key)
|
342
344
|
{
|
343
345
|
X509_CRL *crl;
|
@@ -354,7 +356,7 @@ ossl_x509crl_verify(VALUE self, VALUE key)
|
|
354
356
|
return Qfalse;
|
355
357
|
}
|
356
358
|
|
357
|
-
static VALUE
|
359
|
+
static VALUE
|
358
360
|
ossl_x509crl_to_der(VALUE self)
|
359
361
|
{
|
360
362
|
X509_CRL *crl;
|
@@ -377,7 +379,7 @@ ossl_x509crl_to_der(VALUE self)
|
|
377
379
|
return str;
|
378
380
|
}
|
379
381
|
|
380
|
-
static VALUE
|
382
|
+
static VALUE
|
381
383
|
ossl_x509crl_to_pem(VALUE self)
|
382
384
|
{
|
383
385
|
X509_CRL *crl;
|
@@ -400,7 +402,7 @@ ossl_x509crl_to_pem(VALUE self)
|
|
400
402
|
return str;
|
401
403
|
}
|
402
404
|
|
403
|
-
static VALUE
|
405
|
+
static VALUE
|
404
406
|
ossl_x509crl_to_text(VALUE self)
|
405
407
|
{
|
406
408
|
X509_CRL *crl;
|
@@ -419,14 +421,14 @@ ossl_x509crl_to_text(VALUE self)
|
|
419
421
|
BIO_get_mem_ptr(out, &buf);
|
420
422
|
str = rb_str_new(buf->data, buf->length);
|
421
423
|
BIO_free(out);
|
422
|
-
|
424
|
+
|
423
425
|
return str;
|
424
426
|
}
|
425
427
|
|
426
428
|
/*
|
427
429
|
* Gets X509v3 extensions as array of X509Ext objects
|
428
430
|
*/
|
429
|
-
static VALUE
|
431
|
+
static VALUE
|
430
432
|
ossl_x509crl_get_extensions(VALUE self)
|
431
433
|
{
|
432
434
|
X509_CRL *crl;
|
@@ -452,13 +454,13 @@ ossl_x509crl_get_extensions(VALUE self)
|
|
452
454
|
/*
|
453
455
|
* Sets X509_EXTENSIONs
|
454
456
|
*/
|
455
|
-
static VALUE
|
457
|
+
static VALUE
|
456
458
|
ossl_x509crl_set_extensions(VALUE self, VALUE ary)
|
457
459
|
{
|
458
460
|
X509_CRL *crl;
|
459
461
|
X509_EXTENSION *ext;
|
460
462
|
int i;
|
461
|
-
|
463
|
+
|
462
464
|
Check_Type(ary, T_ARRAY);
|
463
465
|
/* All ary members should be X509 Extensions */
|
464
466
|
for (i=0; i<RARRAY_LEN(ary); i++) {
|
@@ -479,7 +481,7 @@ ossl_x509crl_set_extensions(VALUE self, VALUE ary)
|
|
479
481
|
return ary;
|
480
482
|
}
|
481
483
|
|
482
|
-
static VALUE
|
484
|
+
static VALUE
|
483
485
|
ossl_x509crl_add_extension(VALUE self, VALUE extension)
|
484
486
|
{
|
485
487
|
X509_CRL *crl;
|
@@ -499,17 +501,17 @@ ossl_x509crl_add_extension(VALUE self, VALUE extension)
|
|
499
501
|
/*
|
500
502
|
* INIT
|
501
503
|
*/
|
502
|
-
void
|
504
|
+
void
|
503
505
|
Init_ossl_x509crl()
|
504
506
|
{
|
505
507
|
eX509CRLError = rb_define_class_under(mX509, "CRLError", eOSSLError);
|
506
508
|
|
507
509
|
cX509CRL = rb_define_class_under(mX509, "CRL", rb_cObject);
|
508
|
-
|
510
|
+
|
509
511
|
rb_define_alloc_func(cX509CRL, ossl_x509crl_alloc);
|
510
512
|
rb_define_method(cX509CRL, "initialize", ossl_x509crl_initialize, -1);
|
511
513
|
rb_define_copy_func(cX509CRL, ossl_x509crl_copy);
|
512
|
-
|
514
|
+
|
513
515
|
rb_define_method(cX509CRL, "version", ossl_x509crl_get_version, 0);
|
514
516
|
rb_define_method(cX509CRL, "version=", ossl_x509crl_set_version, 1);
|
515
517
|
rb_define_method(cX509CRL, "signature_algorithm", ossl_x509crl_get_signature_algorithm, 0);
|
@@ -11,30 +11,30 @@
|
|
11
11
|
#include "ossl.h"
|
12
12
|
|
13
13
|
#define WrapX509Ext(klass, obj, ext) do { \
|
14
|
-
if (!ext) { \
|
14
|
+
if (!(ext)) { \
|
15
15
|
ossl_raise(rb_eRuntimeError, "EXT wasn't initialized!"); \
|
16
16
|
} \
|
17
|
-
obj = Data_Wrap_Struct(klass, 0, X509_EXTENSION_free, ext); \
|
17
|
+
(obj) = Data_Wrap_Struct((klass), 0, X509_EXTENSION_free, (ext)); \
|
18
18
|
} while (0)
|
19
19
|
#define GetX509Ext(obj, ext) do { \
|
20
|
-
Data_Get_Struct(obj, X509_EXTENSION, ext); \
|
21
|
-
if (!ext) { \
|
20
|
+
Data_Get_Struct((obj), X509_EXTENSION, (ext)); \
|
21
|
+
if (!(ext)) { \
|
22
22
|
ossl_raise(rb_eRuntimeError, "EXT wasn't initialized!"); \
|
23
23
|
} \
|
24
24
|
} while (0)
|
25
25
|
#define SafeGetX509Ext(obj, ext) do { \
|
26
|
-
OSSL_Check_Kind(obj, cX509Ext); \
|
27
|
-
GetX509Ext(obj, ext); \
|
26
|
+
OSSL_Check_Kind((obj), cX509Ext); \
|
27
|
+
GetX509Ext((obj), (ext)); \
|
28
28
|
} while (0)
|
29
29
|
#define MakeX509ExtFactory(klass, obj, ctx) do { \
|
30
|
-
if (!(ctx = OPENSSL_malloc(sizeof(X509V3_CTX)))) \
|
30
|
+
if (!((ctx) = OPENSSL_malloc(sizeof(X509V3_CTX)))) \
|
31
31
|
ossl_raise(rb_eRuntimeError, "CTX wasn't allocated!"); \
|
32
|
-
X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, 0); \
|
33
|
-
obj = Data_Wrap_Struct(klass, 0, ossl_x509extfactory_free, ctx); \
|
32
|
+
X509V3_set_ctx((ctx), NULL, NULL, NULL, NULL, 0); \
|
33
|
+
(obj) = Data_Wrap_Struct((klass), 0, ossl_x509extfactory_free, (ctx)); \
|
34
34
|
} while (0)
|
35
35
|
#define GetX509ExtFactory(obj, ctx) do { \
|
36
|
-
Data_Get_Struct(obj, X509V3_CTX, ctx); \
|
37
|
-
if (!ctx) { \
|
36
|
+
Data_Get_Struct((obj), X509V3_CTX, (ctx)); \
|
37
|
+
if (!(ctx)) { \
|
38
38
|
ossl_raise(rb_eRuntimeError, "CTX wasn't initialized!"); \
|
39
39
|
} \
|
40
40
|
} while (0)
|
@@ -49,7 +49,7 @@ VALUE eX509ExtError;
|
|
49
49
|
/*
|
50
50
|
* Public
|
51
51
|
*/
|
52
|
-
VALUE
|
52
|
+
VALUE
|
53
53
|
ossl_x509ext_new(X509_EXTENSION *ext)
|
54
54
|
{
|
55
55
|
X509_EXTENSION *new;
|
@@ -64,7 +64,7 @@ ossl_x509ext_new(X509_EXTENSION *ext)
|
|
64
64
|
ossl_raise(eX509ExtError, NULL);
|
65
65
|
}
|
66
66
|
WrapX509Ext(cX509Ext, obj, new);
|
67
|
-
|
67
|
+
|
68
68
|
return obj;
|
69
69
|
}
|
70
70
|
|
@@ -103,18 +103,19 @@ ossl_x509extfactory_free(X509V3_CTX *ctx)
|
|
103
103
|
OPENSSL_free(ctx);
|
104
104
|
}
|
105
105
|
|
106
|
-
static VALUE
|
106
|
+
static VALUE
|
107
107
|
ossl_x509extfactory_alloc(VALUE klass)
|
108
108
|
{
|
109
109
|
X509V3_CTX *ctx;
|
110
110
|
VALUE obj;
|
111
111
|
|
112
112
|
MakeX509ExtFactory(klass, obj, ctx);
|
113
|
+
rb_iv_set(obj, "@config", Qnil);
|
113
114
|
|
114
115
|
return obj;
|
115
116
|
}
|
116
117
|
|
117
|
-
static VALUE
|
118
|
+
static VALUE
|
118
119
|
ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert)
|
119
120
|
{
|
120
121
|
X509V3_CTX *ctx;
|
@@ -126,7 +127,7 @@ ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert)
|
|
126
127
|
return cert;
|
127
128
|
}
|
128
129
|
|
129
|
-
static VALUE
|
130
|
+
static VALUE
|
130
131
|
ossl_x509extfactory_set_subject_cert(VALUE self, VALUE cert)
|
131
132
|
{
|
132
133
|
X509V3_CTX *ctx;
|
@@ -138,7 +139,7 @@ ossl_x509extfactory_set_subject_cert(VALUE self, VALUE cert)
|
|
138
139
|
return cert;
|
139
140
|
}
|
140
141
|
|
141
|
-
static VALUE
|
142
|
+
static VALUE
|
142
143
|
ossl_x509extfactory_set_subject_req(VALUE self, VALUE req)
|
143
144
|
{
|
144
145
|
X509V3_CTX *ctx;
|
@@ -150,7 +151,7 @@ ossl_x509extfactory_set_subject_req(VALUE self, VALUE req)
|
|
150
151
|
return req;
|
151
152
|
}
|
152
153
|
|
153
|
-
static VALUE
|
154
|
+
static VALUE
|
154
155
|
ossl_x509extfactory_set_crl(VALUE self, VALUE crl)
|
155
156
|
{
|
156
157
|
X509V3_CTX *ctx;
|
@@ -162,10 +163,10 @@ ossl_x509extfactory_set_crl(VALUE self, VALUE crl)
|
|
162
163
|
return crl;
|
163
164
|
}
|
164
165
|
|
166
|
+
#ifdef HAVE_X509V3_SET_NCONF
|
165
167
|
static VALUE
|
166
168
|
ossl_x509extfactory_set_config(VALUE self, VALUE config)
|
167
169
|
{
|
168
|
-
#ifdef HAVE_X509V3_SET_NCONF
|
169
170
|
X509V3_CTX *ctx;
|
170
171
|
CONF *conf;
|
171
172
|
|
@@ -175,17 +176,17 @@ ossl_x509extfactory_set_config(VALUE self, VALUE config)
|
|
175
176
|
X509V3_set_nconf(ctx, conf);
|
176
177
|
|
177
178
|
return config;
|
179
|
+
}
|
178
180
|
#else
|
179
|
-
|
181
|
+
#define ossl_x509extfactory_set_config rb_f_notimplement
|
180
182
|
#endif
|
181
|
-
}
|
182
183
|
|
183
|
-
static VALUE
|
184
|
+
static VALUE
|
184
185
|
ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self)
|
185
186
|
{
|
186
187
|
/*X509V3_CTX *ctx;*/
|
187
188
|
VALUE issuer_cert, subject_cert, subject_req, crl;
|
188
|
-
|
189
|
+
|
189
190
|
/*GetX509ExtFactory(self, ctx);*/
|
190
191
|
|
191
192
|
rb_scan_args(argc, argv, "04",
|
@@ -198,7 +199,6 @@ ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self)
|
|
198
199
|
ossl_x509extfactory_set_subject_req(self, subject_req);
|
199
200
|
if (!NIL_P(crl))
|
200
201
|
ossl_x509extfactory_set_crl(self, crl);
|
201
|
-
rb_iv_set(self, "@config", Qnil);
|
202
202
|
|
203
203
|
return self;
|
204
204
|
}
|
@@ -211,7 +211,7 @@ ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self)
|
|
211
211
|
* ["ln", "critical,value"] or the same for sn
|
212
212
|
* ["ln", "value"] => not critical
|
213
213
|
*/
|
214
|
-
static VALUE
|
214
|
+
static VALUE
|
215
215
|
ossl_x509extfactory_create_ext(int argc, VALUE *argv, VALUE self)
|
216
216
|
{
|
217
217
|
X509V3_CTX *ctx;
|
@@ -270,20 +270,33 @@ ossl_x509ext_alloc(VALUE klass)
|
|
270
270
|
return obj;
|
271
271
|
}
|
272
272
|
|
273
|
+
/*
|
274
|
+
* call-seq:
|
275
|
+
* OpenSSL::X509::Extension.new asn1
|
276
|
+
* OpenSSL::X509::Extension.new name, value
|
277
|
+
* OpenSSL::X509::Extension.new name, value, critical
|
278
|
+
*
|
279
|
+
* Creates an X509 extension.
|
280
|
+
*
|
281
|
+
* The extension may be created from +asn1+ data or from an extension +name+
|
282
|
+
* and +value+. The +name+ may be either an OID or an extension name. If
|
283
|
+
* +critical+ is true the extension is marked critical.
|
284
|
+
*/
|
273
285
|
static VALUE
|
274
286
|
ossl_x509ext_initialize(int argc, VALUE *argv, VALUE self)
|
275
287
|
{
|
276
288
|
VALUE oid, value, critical;
|
277
289
|
const unsigned char *p;
|
278
|
-
X509_EXTENSION *ext;
|
290
|
+
X509_EXTENSION *ext, *x;
|
279
291
|
|
280
292
|
GetX509Ext(self, ext);
|
281
293
|
if(rb_scan_args(argc, argv, "12", &oid, &value, &critical) == 1){
|
282
294
|
oid = ossl_to_der_if_possible(oid);
|
283
295
|
StringValue(oid);
|
284
|
-
p
|
285
|
-
|
286
|
-
|
296
|
+
p = (unsigned char *)RSTRING_PTR(oid);
|
297
|
+
x = d2i_X509_EXTENSION(&ext, &p, RSTRING_LEN(oid));
|
298
|
+
DATA_PTR(self) = ext;
|
299
|
+
if(!x)
|
287
300
|
ossl_raise(eX509ExtError, NULL);
|
288
301
|
return self;
|
289
302
|
}
|
@@ -324,11 +337,11 @@ ossl_x509ext_set_value(VALUE self, VALUE data)
|
|
324
337
|
ossl_raise(eX509ExtError, "malloc error");
|
325
338
|
memcpy(s, RSTRING_PTR(data), RSTRING_LEN(data));
|
326
339
|
if(!(asn1s = ASN1_OCTET_STRING_new())){
|
327
|
-
|
340
|
+
OPENSSL_free(s);
|
328
341
|
ossl_raise(eX509ExtError, NULL);
|
329
342
|
}
|
330
|
-
if(!M_ASN1_OCTET_STRING_set(asn1s, s,
|
331
|
-
|
343
|
+
if(!M_ASN1_OCTET_STRING_set(asn1s, s, RSTRING_LENINT(data))){
|
344
|
+
OPENSSL_free(s);
|
332
345
|
ASN1_OCTET_STRING_free(asn1s);
|
333
346
|
ossl_raise(eX509ExtError, NULL);
|
334
347
|
}
|
@@ -350,7 +363,7 @@ ossl_x509ext_set_critical(VALUE self, VALUE flag)
|
|
350
363
|
return flag;
|
351
364
|
}
|
352
365
|
|
353
|
-
static VALUE
|
366
|
+
static VALUE
|
354
367
|
ossl_x509ext_get_oid(VALUE obj)
|
355
368
|
{
|
356
369
|
X509_EXTENSION *ext;
|
@@ -411,7 +424,7 @@ ossl_x509ext_to_der(VALUE obj)
|
|
411
424
|
if((len = i2d_X509_EXTENSION(ext, NULL)) <= 0)
|
412
425
|
ossl_raise(eX509ExtError, NULL);
|
413
426
|
str = rb_str_new(0, len);
|
414
|
-
p = RSTRING_PTR(str);
|
427
|
+
p = (unsigned char *)RSTRING_PTR(str);
|
415
428
|
if(i2d_X509_EXTENSION(ext, &p) < 0)
|
416
429
|
ossl_raise(eX509ExtError, NULL);
|
417
430
|
ossl_str_adjust(str, p);
|
@@ -426,12 +439,12 @@ void
|
|
426
439
|
Init_ossl_x509ext()
|
427
440
|
{
|
428
441
|
eX509ExtError = rb_define_class_under(mX509, "ExtensionError", eOSSLError);
|
429
|
-
|
442
|
+
|
430
443
|
cX509ExtFactory = rb_define_class_under(mX509, "ExtensionFactory", rb_cObject);
|
431
|
-
|
444
|
+
|
432
445
|
rb_define_alloc_func(cX509ExtFactory, ossl_x509extfactory_alloc);
|
433
446
|
rb_define_method(cX509ExtFactory, "initialize", ossl_x509extfactory_initialize, -1);
|
434
|
-
|
447
|
+
|
435
448
|
rb_attr(cX509ExtFactory, rb_intern("issuer_certificate"), 1, 0, Qfalse);
|
436
449
|
rb_attr(cX509ExtFactory, rb_intern("subject_certificate"), 1, 0, Qfalse);
|
437
450
|
rb_attr(cX509ExtFactory, rb_intern("subject_request"), 1, 0, Qfalse);
|
@@ -444,7 +457,7 @@ Init_ossl_x509ext()
|
|
444
457
|
rb_define_method(cX509ExtFactory, "crl=", ossl_x509extfactory_set_crl, 1);
|
445
458
|
rb_define_method(cX509ExtFactory, "config=", ossl_x509extfactory_set_config, 1);
|
446
459
|
rb_define_method(cX509ExtFactory, "create_ext", ossl_x509extfactory_create_ext, -1);
|
447
|
-
|
460
|
+
|
448
461
|
cX509Ext = rb_define_class_under(mX509, "Extension", rb_cObject);
|
449
462
|
rb_define_alloc_func(cX509Ext, ossl_x509ext_alloc);
|
450
463
|
rb_define_method(cX509Ext, "initialize", ossl_x509ext_initialize, -1);
|