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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -6
  3. data/ext/rubysl/openssl/.gitignore +3 -0
  4. data/ext/rubysl/openssl/deprecation.rb +21 -0
  5. data/ext/rubysl/openssl/extconf.rb +45 -32
  6. data/ext/rubysl/openssl/openssl_missing.c +20 -7
  7. data/ext/rubysl/openssl/openssl_missing.h +22 -15
  8. data/ext/rubysl/openssl/ossl.c +610 -61
  9. data/ext/rubysl/openssl/ossl.h +31 -17
  10. data/ext/rubysl/openssl/ossl_asn1.c +974 -183
  11. data/ext/rubysl/openssl/ossl_asn1.h +3 -3
  12. data/ext/rubysl/openssl/ossl_bio.c +4 -3
  13. data/ext/rubysl/openssl/ossl_bio.h +1 -1
  14. data/ext/rubysl/openssl/ossl_bn.c +32 -28
  15. data/ext/rubysl/openssl/ossl_bn.h +1 -1
  16. data/ext/rubysl/openssl/ossl_cipher.c +494 -93
  17. data/ext/rubysl/openssl/ossl_cipher.h +1 -1
  18. data/ext/rubysl/openssl/ossl_config.c +4 -5
  19. data/ext/rubysl/openssl/ossl_config.h +1 -1
  20. data/ext/rubysl/openssl/ossl_digest.c +206 -24
  21. data/ext/rubysl/openssl/ossl_digest.h +1 -1
  22. data/ext/rubysl/openssl/ossl_engine.c +48 -26
  23. data/ext/rubysl/openssl/ossl_engine.h +1 -1
  24. data/ext/rubysl/openssl/ossl_hmac.c +40 -38
  25. data/ext/rubysl/openssl/ossl_hmac.h +1 -1
  26. data/ext/rubysl/openssl/ossl_ns_spki.c +157 -25
  27. data/ext/rubysl/openssl/ossl_ns_spki.h +1 -1
  28. data/ext/rubysl/openssl/ossl_ocsp.c +57 -40
  29. data/ext/rubysl/openssl/ossl_ocsp.h +1 -1
  30. data/ext/rubysl/openssl/ossl_pkcs12.c +15 -13
  31. data/ext/rubysl/openssl/ossl_pkcs12.h +1 -1
  32. data/ext/rubysl/openssl/ossl_pkcs5.c +108 -18
  33. data/ext/rubysl/openssl/ossl_pkcs7.c +44 -37
  34. data/ext/rubysl/openssl/ossl_pkcs7.h +1 -1
  35. data/ext/rubysl/openssl/ossl_pkey.c +211 -15
  36. data/ext/rubysl/openssl/ossl_pkey.h +19 -9
  37. data/ext/rubysl/openssl/ossl_pkey_dh.c +180 -47
  38. data/ext/rubysl/openssl/ossl_pkey_dsa.c +184 -47
  39. data/ext/rubysl/openssl/ossl_pkey_ec.c +177 -93
  40. data/ext/rubysl/openssl/ossl_pkey_rsa.c +209 -102
  41. data/ext/rubysl/openssl/ossl_rand.c +15 -15
  42. data/ext/rubysl/openssl/ossl_rand.h +1 -1
  43. data/ext/rubysl/openssl/ossl_ssl.c +939 -192
  44. data/ext/rubysl/openssl/ossl_ssl.h +6 -6
  45. data/ext/rubysl/openssl/ossl_ssl_session.c +78 -62
  46. data/ext/rubysl/openssl/ossl_version.h +2 -2
  47. data/ext/rubysl/openssl/ossl_x509.c +1 -1
  48. data/ext/rubysl/openssl/ossl_x509.h +1 -1
  49. data/ext/rubysl/openssl/ossl_x509attr.c +20 -19
  50. data/ext/rubysl/openssl/ossl_x509cert.c +169 -67
  51. data/ext/rubysl/openssl/ossl_x509crl.c +41 -39
  52. data/ext/rubysl/openssl/ossl_x509ext.c +51 -38
  53. data/ext/rubysl/openssl/ossl_x509name.c +139 -29
  54. data/ext/rubysl/openssl/ossl_x509req.c +42 -40
  55. data/ext/rubysl/openssl/ossl_x509revoked.c +20 -20
  56. data/ext/rubysl/openssl/ossl_x509store.c +99 -47
  57. data/ext/rubysl/openssl/ruby_missing.h +3 -16
  58. data/lib/openssl/bn.rb +19 -19
  59. data/lib/openssl/buffering.rb +222 -14
  60. data/lib/openssl/cipher.rb +20 -20
  61. data/lib/openssl/config.rb +1 -4
  62. data/lib/openssl/digest.rb +47 -19
  63. data/lib/openssl/ssl.rb +197 -1
  64. data/lib/openssl/x509.rb +162 -1
  65. data/lib/rubysl/openssl.rb +4 -8
  66. data/lib/rubysl/openssl/version.rb +1 -1
  67. data/rubysl-openssl.gemspec +1 -2
  68. metadata +16 -34
  69. data/ext/rubysl/openssl/extconf.h +0 -50
  70. data/lib/openssl/net/ftptls.rb +0 -53
  71. data/lib/openssl/net/telnets.rb +0 -251
  72. data/lib/openssl/pkcs7.rb +0 -25
  73. data/lib/openssl/ssl-internal.rb +0 -187
  74. data/lib/openssl/x509-internal.rb +0 -153
@@ -1,5 +1,5 @@
1
1
  /*
2
- * $Id: ossl_x509name.c 28367 2010-06-21 09:18:59Z shyouhei $
2
+ * $Id$
3
3
  * 'OpenSSL for Ruby' project
4
4
  * Copyright (C) 2001 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 WrapX509Name(klass, obj, name) do { \
14
- if (!name) { \
14
+ if (!(name)) { \
15
15
  ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \
16
16
  } \
17
- obj = Data_Wrap_Struct(klass, 0, X509_NAME_free, name); \
17
+ (obj) = Data_Wrap_Struct((klass), 0, X509_NAME_free, (name)); \
18
18
  } while (0)
19
19
  #define GetX509Name(obj, name) do { \
20
- Data_Get_Struct(obj, X509_NAME, name); \
21
- if (!name) { \
20
+ Data_Get_Struct((obj), X509_NAME, (name)); \
21
+ if (!(name)) { \
22
22
  ossl_raise(rb_eRuntimeError, "Name wasn't initialized."); \
23
23
  } \
24
24
  } while (0)
25
25
  #define SafeGetX509Name(obj, name) do { \
26
- OSSL_Check_Kind(obj, cX509Name); \
27
- GetX509Name(obj, name); \
26
+ OSSL_Check_Kind((obj), cX509Name); \
27
+ GetX509Name((obj), (name)); \
28
28
  } while (0)
29
29
 
30
30
  #define OBJECT_TYPE_TEMPLATE \
@@ -41,7 +41,7 @@ VALUE eX509NameError;
41
41
  /*
42
42
  * Public
43
43
  */
44
- VALUE
44
+ VALUE
45
45
  ossl_x509name_new(X509_NAME *name)
46
46
  {
47
47
  X509_NAME *new;
@@ -56,7 +56,7 @@ ossl_x509name_new(X509_NAME *name)
56
56
  ossl_raise(eX509NameError, NULL);
57
57
  }
58
58
  WrapX509Name(cX509Name, obj, new);
59
-
59
+
60
60
  return obj;
61
61
  }
62
62
 
@@ -78,7 +78,7 @@ ossl_x509name_alloc(VALUE klass)
78
78
  {
79
79
  X509_NAME *name;
80
80
  VALUE obj;
81
-
81
+
82
82
  if (!(name = X509_NAME_new())) {
83
83
  ossl_raise(eX509NameError, NULL);
84
84
  }
@@ -87,9 +87,9 @@ ossl_x509name_alloc(VALUE klass)
87
87
  return obj;
88
88
  }
89
89
 
90
- static int id_aref;
90
+ static ID id_aref;
91
91
  static VALUE ossl_x509name_add_entry(int, VALUE*, VALUE);
92
- #define rb_aref(obj, key) rb_funcall(obj, id_aref, 1, key)
92
+ #define rb_aref(obj, key) rb_funcall((obj), id_aref, 1, (key))
93
93
 
94
94
  static VALUE
95
95
  ossl_x509name_init_i(VALUE i, VALUE args)
@@ -111,10 +111,23 @@ ossl_x509name_init_i(VALUE i, VALUE args)
111
111
 
112
112
  /*
113
113
  * call-seq:
114
- * X509::Name.new => name
115
- * X509::Name.new(string) => name
116
- * X509::Name.new(dn) => name
117
- * X509::Name.new(dn, template) => name
114
+ * X509::Name.new => name
115
+ * X509::Name.new(der) => name
116
+ * X509::Name.new(distinguished_name) => name
117
+ * X509::Name.new(distinguished_name, template) => name
118
+ *
119
+ * Creates a new Name.
120
+ *
121
+ * A name may be created from a DER encoded string +der+, an Array
122
+ * representing a +distinguished_name+ or a +distinguished_name+ along with a
123
+ * +template+.
124
+ *
125
+ * name = OpenSSL::X509::Name.new [['CN', 'nobody'], ['DC', 'example']]
126
+ *
127
+ * name = OpenSSL::X509::Name.new name.to_der
128
+ *
129
+ * See add_entry for a description of the +distinguished_name+ Array's
130
+ * contents
118
131
  */
119
132
  static VALUE
120
133
  ossl_x509name_initialize(int argc, VALUE *argv, VALUE self)
@@ -154,6 +167,16 @@ ossl_x509name_initialize(int argc, VALUE *argv, VALUE self)
154
167
  /*
155
168
  * call-seq:
156
169
  * name.add_entry(oid, value [, type]) => self
170
+ *
171
+ * Adds a new entry with the given +oid+ and +value+ to this name. The +oid+
172
+ * is an object identifier defined in ASN.1. Some common OIDs are:
173
+ *
174
+ * C:: Country Name
175
+ * CN:: Common Name
176
+ * DC:: Domain Component
177
+ * O:: Organization Name
178
+ * OU:: Organizational Unit Name
179
+ * ST:: State or Province Name
157
180
  */
158
181
  static
159
182
  VALUE ossl_x509name_add_entry(int argc, VALUE *argv, VALUE self)
@@ -167,7 +190,7 @@ VALUE ossl_x509name_add_entry(int argc, VALUE *argv, VALUE self)
167
190
  if(NIL_P(type)) type = rb_aref(OBJECT_TYPE_TEMPLATE, oid);
168
191
  GetX509Name(self, name);
169
192
  if (!X509_NAME_add_entry_by_txt(name, RSTRING_PTR(oid), NUM2INT(type),
170
- RSTRING_PTR(value), RSTRING_LEN(value), -1, 0)) {
193
+ (const unsigned char *)RSTRING_PTR(value), RSTRING_LENINT(value), -1, 0)) {
171
194
  ossl_raise(eX509NameError, NULL);
172
195
  }
173
196
 
@@ -192,7 +215,14 @@ ossl_x509name_to_s_old(VALUE self)
192
215
  /*
193
216
  * call-seq:
194
217
  * name.to_s => string
195
- * name.to_s(integer) => string
218
+ * name.to_s(flags) => string
219
+ *
220
+ * Returns this name as a Distinguished Name string. +flags+ may be one of:
221
+ *
222
+ * * OpenSSL::X509::Name::COMPAT
223
+ * * OpenSSL::X509::Name::RFC2253
224
+ * * OpenSSL::X509::Name::ONELINE
225
+ * * OpenSSL::X509::Name::MULTILINE
196
226
  */
197
227
  static VALUE
198
228
  ossl_x509name_to_s(int argc, VALUE *argv, VALUE self)
@@ -221,17 +251,20 @@ ossl_x509name_to_s(int argc, VALUE *argv, VALUE self)
221
251
  /*
222
252
  * call-seq:
223
253
  * name.to_a => [[name, data, type], ...]
254
+ *
255
+ * Returns an Array representation of the distinguished name suitable for
256
+ * passing to ::new
224
257
  */
225
- static VALUE
258
+ static VALUE
226
259
  ossl_x509name_to_a(VALUE self)
227
260
  {
228
261
  X509_NAME *name;
229
262
  X509_NAME_ENTRY *entry;
230
- int i,entries;
263
+ int i,entries,nid;
231
264
  char long_name[512];
232
265
  const char *short_name;
233
- VALUE ary, ret;
234
-
266
+ VALUE ary, vname, ret;
267
+
235
268
  GetX509Name(self, name);
236
269
  entries = X509_NAME_entry_count(name);
237
270
  if (entries < 0) {
@@ -246,9 +279,16 @@ ossl_x509name_to_a(VALUE self)
246
279
  if (!i2t_ASN1_OBJECT(long_name, sizeof(long_name), entry->object)) {
247
280
  ossl_raise(eX509NameError, NULL);
248
281
  }
249
- short_name = OBJ_nid2sn(OBJ_ln2nid(long_name));
250
- ary = rb_ary_new3(3, rb_str_new2(short_name),
251
- rb_str_new(entry->value->data, entry->value->length),
282
+ nid = OBJ_ln2nid(long_name);
283
+ if (nid == NID_undef) {
284
+ vname = rb_str_new2((const char *) &long_name);
285
+ } else {
286
+ short_name = OBJ_nid2sn(nid);
287
+ vname = rb_str_new2(short_name); /*do not free*/
288
+ }
289
+ ary = rb_ary_new3(3,
290
+ vname,
291
+ rb_str_new((const char *)entry->value->data, entry->value->length),
252
292
  INT2FIX(entry->value->type));
253
293
  rb_ary_push(ret, ary);
254
294
  }
@@ -266,6 +306,14 @@ ossl_x509name_cmp0(VALUE self, VALUE other)
266
306
  return X509_NAME_cmp(name1, name2);
267
307
  }
268
308
 
309
+ /*
310
+ * call-seq:
311
+ * name.cmp other => integer
312
+ * name.<=> other => integer
313
+ *
314
+ * Compares this Name with +other+ and returns 0 if they are the same and -1 or
315
+ * +1 if they are greater or less than each other respectively.
316
+ */
269
317
  static VALUE
270
318
  ossl_x509name_cmp(VALUE self, VALUE other)
271
319
  {
@@ -278,6 +326,12 @@ ossl_x509name_cmp(VALUE self, VALUE other)
278
326
  return INT2FIX(0);
279
327
  }
280
328
 
329
+ /*
330
+ * call-seq:
331
+ * name.eql? other => boolean
332
+ *
333
+ * Returns true if +name+ and +other+ refer to the same hash key.
334
+ */
281
335
  static VALUE
282
336
  ossl_x509name_eql(VALUE self, VALUE other)
283
337
  {
@@ -292,6 +346,9 @@ ossl_x509name_eql(VALUE self, VALUE other)
292
346
  /*
293
347
  * call-seq:
294
348
  * name.hash => integer
349
+ *
350
+ * The hash value returned is suitable for use as a certificate's filename in
351
+ * a CA path.
295
352
  */
296
353
  static VALUE
297
354
  ossl_x509name_hash(VALUE self)
@@ -311,7 +368,7 @@ ossl_x509name_hash(VALUE self)
311
368
  * call-seq:
312
369
  * name.hash_old => integer
313
370
  *
314
- * hash_old returns MD5 based hash used in OpenSSL 0.9.X.
371
+ * Returns an MD5 based hash used in OpenSSL 0.9.X.
315
372
  */
316
373
  static VALUE
317
374
  ossl_x509name_hash_old(VALUE self)
@@ -330,6 +387,8 @@ ossl_x509name_hash_old(VALUE self)
330
387
  /*
331
388
  * call-seq:
332
389
  * name.to_der => string
390
+ *
391
+ * Converts the name to DER encoding
333
392
  */
334
393
  static VALUE
335
394
  ossl_x509name_to_der(VALUE self)
@@ -343,7 +402,7 @@ ossl_x509name_to_der(VALUE self)
343
402
  if((len = i2d_X509_NAME(name, NULL)) <= 0)
344
403
  ossl_raise(eX509NameError, NULL);
345
404
  str = rb_str_new(0, len);
346
- p = RSTRING_PTR(str);
405
+ p = (unsigned char *)RSTRING_PTR(str);
347
406
  if(i2d_X509_NAME(name, &p) <= 0)
348
407
  ossl_raise(eX509NameError, NULL);
349
408
  ossl_str_adjust(str, p);
@@ -352,9 +411,20 @@ ossl_x509name_to_der(VALUE self)
352
411
  }
353
412
 
354
413
  /*
355
- * INIT
414
+ * Document-class: OpenSSL::X509::Name
415
+ *
416
+ * An X.509 name represents a hostname, email address or other entity
417
+ * associated with a public key.
418
+ *
419
+ * You can create a Name by parsing a distinguished name String or by
420
+ * supplying the distinguished name as an Array.
421
+ *
422
+ * name = OpenSSL::X509::Name.parse 'CN=nobody/DC=example'
423
+ *
424
+ * name = OpenSSL::X509::Name.new [['CN', 'nobody'], ['DC', 'example']]
356
425
  */
357
- void
426
+
427
+ void
358
428
  Init_ossl_x509name()
359
429
  {
360
430
  VALUE utf8str, ptrstr, ia5str, hash;
@@ -363,6 +433,8 @@ Init_ossl_x509name()
363
433
  eX509NameError = rb_define_class_under(mX509, "NameError", eOSSLError);
364
434
  cX509Name = rb_define_class_under(mX509, "Name", rb_cObject);
365
435
 
436
+ rb_include_module(cX509Name, rb_mComparable);
437
+
366
438
  rb_define_alloc_func(cX509Name, ossl_x509name_alloc);
367
439
  rb_define_method(cX509Name, "initialize", ossl_x509name_initialize, -1);
368
440
  rb_define_method(cX509Name, "add_entry", ossl_x509name_add_entry, -1);
@@ -380,6 +452,11 @@ Init_ossl_x509name()
380
452
  utf8str = INT2NUM(V_ASN1_UTF8STRING);
381
453
  ptrstr = INT2NUM(V_ASN1_PRINTABLESTRING);
382
454
  ia5str = INT2NUM(V_ASN1_IA5STRING);
455
+
456
+ /* Document-const: DEFAULT_OBJECT_TYPE
457
+ *
458
+ * The default object type for name entries.
459
+ */
383
460
  rb_define_const(cX509Name, "DEFAULT_OBJECT_TYPE", utf8str);
384
461
  hash = rb_hash_new();
385
462
  rb_funcall(hash, rb_intern("default="), 1, utf8str);
@@ -390,10 +467,43 @@ Init_ossl_x509name()
390
467
  rb_hash_aset(hash, rb_str_new2("DC"), ia5str);
391
468
  rb_hash_aset(hash, rb_str_new2("domainComponent"), ia5str);
392
469
  rb_hash_aset(hash, rb_str_new2("emailAddress"), ia5str);
470
+
471
+ /* Document-const: OBJECT_TYPE_TEMPLATE
472
+ *
473
+ * The default object type template for name entries.
474
+ */
393
475
  rb_define_const(cX509Name, "OBJECT_TYPE_TEMPLATE", hash);
394
476
 
477
+ /* Document-const: COMPAT
478
+ *
479
+ * A flag for #to_s.
480
+ *
481
+ * Breaks the name returned into multiple lines if longer than 80
482
+ * characters.
483
+ */
395
484
  rb_define_const(cX509Name, "COMPAT", ULONG2NUM(XN_FLAG_COMPAT));
485
+
486
+ /* Document-const: RFC2253
487
+ *
488
+ * A flag for #to_s.
489
+ *
490
+ * Returns an RFC2253 format name.
491
+ */
396
492
  rb_define_const(cX509Name, "RFC2253", ULONG2NUM(XN_FLAG_RFC2253));
493
+
494
+ /* Document-const: ONELINE
495
+ *
496
+ * A flag for #to_s.
497
+ *
498
+ * Returns a more readable format than RFC2253.
499
+ */
397
500
  rb_define_const(cX509Name, "ONELINE", ULONG2NUM(XN_FLAG_ONELINE));
501
+
502
+ /* Document-const: MULTILINE
503
+ *
504
+ * A flag for #to_s.
505
+ *
506
+ * Returns a multiline format.
507
+ */
398
508
  rb_define_const(cX509Name, "MULTILINE", ULONG2NUM(XN_FLAG_MULTILINE));
399
509
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * $Id: ossl_x509req.c 12496 2007-06-08 15:02:04Z technorama $
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 WrapX509Req(klass, obj, req) do { \
14
- if (!req) { \
14
+ if (!(req)) { \
15
15
  ossl_raise(rb_eRuntimeError, "Req wasn't initialized!"); \
16
16
  } \
17
- obj = Data_Wrap_Struct(klass, 0, X509_REQ_free, req); \
17
+ (obj) = Data_Wrap_Struct((klass), 0, X509_REQ_free, (req)); \
18
18
  } while (0)
19
19
  #define GetX509Req(obj, req) do { \
20
- Data_Get_Struct(obj, X509_REQ, req); \
21
- if (!req) { \
20
+ Data_Get_Struct((obj), X509_REQ, (req)); \
21
+ if (!(req)) { \
22
22
  ossl_raise(rb_eRuntimeError, "Req wasn't initialized!"); \
23
23
  } \
24
24
  } while (0)
25
25
  #define SafeGetX509Req(obj, req) do { \
26
- OSSL_Check_Kind(obj, cX509Req); \
27
- GetX509Req(obj, req); \
26
+ OSSL_Check_Kind((obj), cX509Req); \
27
+ GetX509Req((obj), (req)); \
28
28
  } while (0)
29
29
 
30
30
  /*
@@ -81,7 +81,7 @@ DupX509ReqPtr(VALUE obj)
81
81
  /*
82
82
  * Private functions
83
83
  */
84
- static VALUE
84
+ static VALUE
85
85
  ossl_x509req_alloc(VALUE klass)
86
86
  {
87
87
  X509_REQ *req;
@@ -95,11 +95,11 @@ ossl_x509req_alloc(VALUE klass)
95
95
  return obj;
96
96
  }
97
97
 
98
- static VALUE
98
+ static VALUE
99
99
  ossl_x509req_initialize(int argc, VALUE *argv, VALUE self)
100
100
  {
101
101
  BIO *in;
102
- X509_REQ *req;
102
+ X509_REQ *req, *x = DATA_PTR(self);
103
103
  VALUE arg;
104
104
 
105
105
  if (rb_scan_args(argc, argv, "01", &arg) == 0) {
@@ -107,10 +107,12 @@ ossl_x509req_initialize(int argc, VALUE *argv, VALUE self)
107
107
  }
108
108
  arg = ossl_to_der_if_possible(arg);
109
109
  in = ossl_obj2bio(arg);
110
- req = PEM_read_bio_X509_REQ(in, (X509_REQ **)&DATA_PTR(self), NULL, NULL);
110
+ req = PEM_read_bio_X509_REQ(in, &x, NULL, NULL);
111
+ DATA_PTR(self) = x;
111
112
  if (!req) {
112
- BIO_reset(in);
113
- req = d2i_X509_REQ_bio(in, (X509_REQ **)&DATA_PTR(self));
113
+ OSSL_BIO_reset(in);
114
+ req = d2i_X509_REQ_bio(in, &x);
115
+ DATA_PTR(self) = x;
114
116
  }
115
117
  BIO_free(in);
116
118
  if (!req) ossl_raise(eX509ReqError, NULL);
@@ -122,7 +124,7 @@ static VALUE
122
124
  ossl_x509req_copy(VALUE self, VALUE other)
123
125
  {
124
126
  X509_REQ *a, *b, *req;
125
-
127
+
126
128
  rb_check_frozen(self);
127
129
  if (self == other) return self;
128
130
  GetX509Req(self, a);
@@ -136,14 +138,14 @@ ossl_x509req_copy(VALUE self, VALUE other)
136
138
  return self;
137
139
  }
138
140
 
139
- static VALUE
141
+ static VALUE
140
142
  ossl_x509req_to_pem(VALUE self)
141
143
  {
142
144
  X509_REQ *req;
143
145
  BIO *out;
144
146
  BUF_MEM *buf;
145
147
  VALUE str;
146
-
148
+
147
149
  GetX509Req(self, req);
148
150
  if (!(out = BIO_new(BIO_s_mem()))) {
149
151
  ossl_raise(eX509ReqError, NULL);
@@ -169,9 +171,9 @@ ossl_x509req_to_der(VALUE self)
169
171
 
170
172
  GetX509Req(self, req);
171
173
  if ((len = i2d_X509_REQ(req, NULL)) <= 0)
172
- ossl_raise(eX509CertError, NULL);
174
+ ossl_raise(eX509ReqError, NULL);
173
175
  str = rb_str_new(0, len);
174
- p = RSTRING_PTR(str);
176
+ p = (unsigned char *)RSTRING_PTR(str);
175
177
  if (i2d_X509_REQ(req, &p) <= 0)
176
178
  ossl_raise(eX509ReqError, NULL);
177
179
  ossl_str_adjust(str, p);
@@ -179,7 +181,7 @@ ossl_x509req_to_der(VALUE self)
179
181
  return str;
180
182
  }
181
183
 
182
- static VALUE
184
+ static VALUE
183
185
  ossl_x509req_to_text(VALUE self)
184
186
  {
185
187
  X509_REQ *req;
@@ -206,12 +208,12 @@ ossl_x509req_to_text(VALUE self)
206
208
  /*
207
209
  * Makes X509 from X509_REQuest
208
210
  */
209
- static VALUE
211
+ static VALUE
210
212
  ossl_x509req_to_x509(VALUE self, VALUE days, VALUE key)
211
213
  {
212
214
  X509_REQ *req;
213
215
  X509 *x509;
214
-
216
+
215
217
  GetX509Req(self, req);
216
218
  ...
217
219
  if (!(x509 = X509_REQ_to_X509(req, d, pkey))) {
@@ -222,7 +224,7 @@ ossl_x509req_to_x509(VALUE self, VALUE days, VALUE key)
222
224
  }
223
225
  #endif
224
226
 
225
- static VALUE
227
+ static VALUE
226
228
  ossl_x509req_get_version(VALUE self)
227
229
  {
228
230
  X509_REQ *req;
@@ -234,7 +236,7 @@ ossl_x509req_get_version(VALUE self)
234
236
  return LONG2FIX(version);
235
237
  }
236
238
 
237
- static VALUE
239
+ static VALUE
238
240
  ossl_x509req_set_version(VALUE self, VALUE version)
239
241
  {
240
242
  X509_REQ *req;
@@ -251,7 +253,7 @@ ossl_x509req_set_version(VALUE self, VALUE version)
251
253
  return version;
252
254
  }
253
255
 
254
- static VALUE
256
+ static VALUE
255
257
  ossl_x509req_get_subject(VALUE self)
256
258
  {
257
259
  X509_REQ *req;
@@ -265,11 +267,11 @@ ossl_x509req_get_subject(VALUE self)
265
267
  return ossl_x509name_new(name);
266
268
  }
267
269
 
268
- static VALUE
270
+ static VALUE
269
271
  ossl_x509req_set_subject(VALUE self, VALUE subject)
270
272
  {
271
273
  X509_REQ *req;
272
-
274
+
273
275
  GetX509Req(self, req);
274
276
  /* DUPs name */
275
277
  if (!X509_REQ_set_subject_name(req, GetX509NamePtr(subject))) {
@@ -279,7 +281,7 @@ ossl_x509req_set_subject(VALUE self, VALUE subject)
279
281
  return subject;
280
282
  }
281
283
 
282
- static VALUE
284
+ static VALUE
283
285
  ossl_x509req_get_signature_algorithm(VALUE self)
284
286
  {
285
287
  X509_REQ *req;
@@ -288,7 +290,7 @@ ossl_x509req_get_signature_algorithm(VALUE self)
288
290
  VALUE str;
289
291
 
290
292
  GetX509Req(self, req);
291
-
293
+
292
294
  if (!(out = BIO_new(BIO_s_mem()))) {
293
295
  ossl_raise(eX509ReqError, NULL);
294
296
  }
@@ -302,7 +304,7 @@ ossl_x509req_get_signature_algorithm(VALUE self)
302
304
  return str;
303
305
  }
304
306
 
305
- static VALUE
307
+ static VALUE
306
308
  ossl_x509req_get_public_key(VALUE self)
307
309
  {
308
310
  X509_REQ *req;
@@ -316,7 +318,7 @@ ossl_x509req_get_public_key(VALUE self)
316
318
  return ossl_pkey_new(pkey); /* NO DUP - OK */
317
319
  }
318
320
 
319
- static VALUE
321
+ static VALUE
320
322
  ossl_x509req_set_public_key(VALUE self, VALUE key)
321
323
  {
322
324
  X509_REQ *req;
@@ -331,7 +333,7 @@ ossl_x509req_set_public_key(VALUE self, VALUE key)
331
333
  return key;
332
334
  }
333
335
 
334
- static VALUE
336
+ static VALUE
335
337
  ossl_x509req_sign(VALUE self, VALUE key, VALUE digest)
336
338
  {
337
339
  X509_REQ *req;
@@ -351,7 +353,7 @@ ossl_x509req_sign(VALUE self, VALUE key, VALUE digest)
351
353
  /*
352
354
  * Checks that cert signature is made with PRIVversion of this PUBLIC 'key'
353
355
  */
354
- static VALUE
356
+ static VALUE
355
357
  ossl_x509req_verify(VALUE self, VALUE key)
356
358
  {
357
359
  X509_REQ *req;
@@ -370,14 +372,14 @@ ossl_x509req_verify(VALUE self, VALUE key)
370
372
  return Qfalse;
371
373
  }
372
374
 
373
- static VALUE
375
+ static VALUE
374
376
  ossl_x509req_get_attributes(VALUE self)
375
377
  {
376
378
  X509_REQ *req;
377
379
  int count, i;
378
380
  X509_ATTRIBUTE *attr;
379
381
  VALUE ary;
380
-
382
+
381
383
  GetX509Req(self, req);
382
384
 
383
385
  count = X509_REQ_get_attr_count(req);
@@ -394,7 +396,7 @@ ossl_x509req_get_attributes(VALUE self)
394
396
  return ary;
395
397
  }
396
398
 
397
- static VALUE
399
+ static VALUE
398
400
  ossl_x509req_set_attributes(VALUE self, VALUE ary)
399
401
  {
400
402
  X509_REQ *req;
@@ -419,7 +421,7 @@ ossl_x509req_set_attributes(VALUE self, VALUE ary)
419
421
  return ary;
420
422
  }
421
423
 
422
- static VALUE
424
+ static VALUE
423
425
  ossl_x509req_add_attribute(VALUE self, VALUE attr)
424
426
  {
425
427
  X509_REQ *req;
@@ -435,17 +437,17 @@ ossl_x509req_add_attribute(VALUE self, VALUE attr)
435
437
  /*
436
438
  * X509_REQUEST init
437
439
  */
438
- void
440
+ void
439
441
  Init_ossl_x509req()
440
442
  {
441
443
  eX509ReqError = rb_define_class_under(mX509, "RequestError", eOSSLError);
442
-
444
+
443
445
  cX509Req = rb_define_class_under(mX509, "Request", rb_cObject);
444
-
446
+
445
447
  rb_define_alloc_func(cX509Req, ossl_x509req_alloc);
446
448
  rb_define_method(cX509Req, "initialize", ossl_x509req_initialize, -1);
447
449
  rb_define_copy_func(cX509Req, ossl_x509req_copy);
448
-
450
+
449
451
  rb_define_method(cX509Req, "to_pem", ossl_x509req_to_pem, 0);
450
452
  rb_define_method(cX509Req, "to_der", ossl_x509req_to_der, 0);
451
453
  rb_define_alias(cX509Req, "to_s", "to_pem");