rubysl-openssl 2.1.0 → 2.2.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.
@@ -32,7 +32,18 @@
32
32
  /*
33
33
  * Classes
34
34
  */
35
+ /* Document-class: OpenSSL::Engine
36
+ *
37
+ * This class is the access to openssl's ENGINE cryptographic module
38
+ * implementation.
39
+ *
40
+ * See also, https://www.openssl.org/docs/crypto/engine.html
41
+ */
35
42
  VALUE cEngine;
43
+ /* Document-class: OpenSSL::Engine::EngineError
44
+ *
45
+ * This is the generic exception for OpenSSL::Engine related errors
46
+ */
36
47
  VALUE eEngineError;
37
48
 
38
49
  /*
@@ -46,6 +57,17 @@ do{\
46
57
  }\
47
58
  }while(0)
48
59
 
60
+ /* Document-method: OpenSSL::Engine.load
61
+ *
62
+ * call-seq:
63
+ * load(enginename = nil)
64
+ *
65
+ * This method loads engines. If +name+ is nil, then all builtin engines are
66
+ * loaded. Otherwise, the given +name+, as a string, is loaded if available to
67
+ * your runtime, and returns true. If +name+ is not found, then nil is
68
+ * returned.
69
+ *
70
+ */
49
71
  static VALUE
50
72
  ossl_engine_s_load(int argc, VALUE *argv, VALUE klass)
51
73
  {
@@ -116,6 +138,15 @@ ossl_engine_s_load(int argc, VALUE *argv, VALUE klass)
116
138
  #endif /* HAVE_ENGINE_LOAD_BUILTIN_ENGINES */
117
139
  }
118
140
 
141
+ /* Document-method: OpenSSL::Engine.cleanup
142
+ * call-seq:
143
+ * OpenSSL::Engine.cleanup
144
+ *
145
+ * It is only necessary to run cleanup when engines are loaded via
146
+ * OpenSSL::Engine.load. However, running cleanup before exit is recommended.
147
+ *
148
+ * See also, https://www.openssl.org/docs/crypto/engine.html
149
+ */
119
150
  static VALUE
120
151
  ossl_engine_s_cleanup(VALUE self)
121
152
  {
@@ -125,6 +156,10 @@ ossl_engine_s_cleanup(VALUE self)
125
156
  return Qnil;
126
157
  }
127
158
 
159
+ /* Document-method: OpenSSL::Engine.engines
160
+ *
161
+ * Returns an array of currently loaded engines.
162
+ */
128
163
  static VALUE
129
164
  ossl_engine_s_engines(VALUE klass)
130
165
  {
@@ -144,6 +179,18 @@ ossl_engine_s_engines(VALUE klass)
144
179
  return ary;
145
180
  }
146
181
 
182
+ /* Document-method: OpenSSL::Engine.by_id
183
+ *
184
+ * call-seq:
185
+ * by_id(name) -> engine
186
+ *
187
+ * Fetch the engine as specified by the +id+ String
188
+ *
189
+ * OpenSSL::Engine.by_id("openssl")
190
+ * => #<OpenSSL::Engine id="openssl" name="Software engine support">
191
+ *
192
+ * See OpenSSL::Engine.engines for the currently loaded engines
193
+ */
147
194
  static VALUE
148
195
  ossl_engine_s_by_id(VALUE klass, VALUE id)
149
196
  {
@@ -179,6 +226,15 @@ ossl_engine_s_alloc(VALUE klass)
179
226
  return obj;
180
227
  }
181
228
 
229
+ /* Document-method: OpenSSL::Engine#id
230
+ *
231
+ * Get the id for this engine
232
+ *
233
+ * OpenSSL::Engine.load
234
+ * OpenSSL::Engine.engines #=> [#<OpenSSL::Engine#>, ...]
235
+ * OpenSSL::Engine.engines.first.id
236
+ * #=> "rsax"
237
+ */
182
238
  static VALUE
183
239
  ossl_engine_get_id(VALUE self)
184
240
  {
@@ -187,6 +243,16 @@ ossl_engine_get_id(VALUE self)
187
243
  return rb_str_new2(ENGINE_get_id(e));
188
244
  }
189
245
 
246
+ /* Document-method: OpenSSL::Engine#name
247
+ *
248
+ * Get the descriptive name for this engine
249
+ *
250
+ * OpenSSL::Engine.load
251
+ * OpenSSL::Engine.engines #=> [#<OpenSSL::Engine#>, ...]
252
+ * OpenSSL::Engine.engines.first.name
253
+ * #=> "RSAX engine support"
254
+ *
255
+ */
190
256
  static VALUE
191
257
  ossl_engine_get_name(VALUE self)
192
258
  {
@@ -195,6 +261,12 @@ ossl_engine_get_name(VALUE self)
195
261
  return rb_str_new2(ENGINE_get_name(e));
196
262
  }
197
263
 
264
+ /* Document-method: OpenSSL::Engine#finish
265
+ *
266
+ * Releases all internal structural references for this engine.
267
+ *
268
+ * May raise an EngineError if the engine is unavailable
269
+ */
198
270
  static VALUE
199
271
  ossl_engine_finish(VALUE self)
200
272
  {
@@ -207,6 +279,22 @@ ossl_engine_finish(VALUE self)
207
279
  }
208
280
 
209
281
  #if defined(HAVE_ENGINE_GET_CIPHER)
282
+ /* Document-method: OpenSSL::Engine#cipher
283
+ *
284
+ * call-seq:
285
+ * engine.cipher(name) -> OpenSSL::Cipher
286
+ *
287
+ * This returns an OpenSSL::Cipher by +name+, if it is available in this
288
+ * engine.
289
+ *
290
+ * A EngineError will be raised if the cipher is unavailable.
291
+ *
292
+ * e = OpenSSL::Engine.by_id("openssl")
293
+ * => #<OpenSSL::Engine id="openssl" name="Software engine support">
294
+ * e.cipher("RC4")
295
+ * => #<OpenSSL::Cipher:0x007fc5cacc3048>
296
+ *
297
+ */
210
298
  static VALUE
211
299
  ossl_engine_get_cipher(VALUE self, VALUE name)
212
300
  {
@@ -230,6 +318,22 @@ ossl_engine_get_cipher(VALUE self, VALUE name)
230
318
  #endif
231
319
 
232
320
  #if defined(HAVE_ENGINE_GET_DIGEST)
321
+ /* Document-method: OpenSSL::Engine#digest
322
+ *
323
+ * call-seq:
324
+ * engine.digest(name) -> OpenSSL::Digest
325
+ *
326
+ * This returns an OpenSSL::Digest by +name+.
327
+ *
328
+ * Will raise an EngineError if the digest is unavailable.
329
+ *
330
+ * e = OpenSSL::Engine.by_id("openssl")
331
+ * #=> #<OpenSSL::Engine id="openssl" name="Software engine support">
332
+ * e.digest("SHA1")
333
+ * #=> #<OpenSSL::Digest: da39a3ee5e6b4b0d3255bfef95601890afd80709>
334
+ * e.digest("zomg")
335
+ * #=> OpenSSL::Engine::EngineError: no such digest `zomg'
336
+ */
233
337
  static VALUE
234
338
  ossl_engine_get_digest(VALUE self, VALUE name)
235
339
  {
@@ -252,6 +356,16 @@ ossl_engine_get_digest(VALUE self, VALUE name)
252
356
  #define ossl_engine_get_digest rb_f_notimplement
253
357
  #endif
254
358
 
359
+ /* Document-method: OpenSSL::Engine#load_private_key
360
+ *
361
+ * call-seq:
362
+ * engine.load_private_key(id = nil, data = nil) -> OpenSSL::PKey
363
+ *
364
+ * Loads the given private key by +id+ and +data+.
365
+ *
366
+ * An EngineError is raised of the OpenSSL::PKey is unavailable.
367
+ *
368
+ */
255
369
  static VALUE
256
370
  ossl_engine_load_privkey(int argc, VALUE *argv, VALUE self)
257
371
  {
@@ -276,6 +390,16 @@ ossl_engine_load_privkey(int argc, VALUE *argv, VALUE self)
276
390
  return obj;
277
391
  }
278
392
 
393
+ /* Document-method: OpenSSL::Engine#load_public_key
394
+ *
395
+ * call-seq:
396
+ * engine.load_public_key(id = nil, data = nil) -> OpenSSL::PKey
397
+ *
398
+ * Loads the given private key by +id+ and +data+.
399
+ *
400
+ * An EngineError is raised of the OpenSSL::PKey is unavailable.
401
+ *
402
+ */
279
403
  static VALUE
280
404
  ossl_engine_load_pubkey(int argc, VALUE *argv, VALUE self)
281
405
  {
@@ -298,6 +422,23 @@ ossl_engine_load_pubkey(int argc, VALUE *argv, VALUE self)
298
422
  return ossl_pkey_new(pkey);
299
423
  }
300
424
 
425
+ /* Document-method: OpenSSL::Engine#set_default
426
+ *
427
+ * call-seq:
428
+ * engine.set_default(flag)
429
+ *
430
+ * Set the defaults for this engine with the given +flag+.
431
+ *
432
+ * These flags are used to control combinations of algorithm methods.
433
+ *
434
+ * +flag+ can be one of the following, other flags are available depending on
435
+ * your OS.
436
+ *
437
+ * [All flags] 0xFFFF
438
+ * [No flags] 0x0000
439
+ *
440
+ * See also <openssl/engine.h>
441
+ */
301
442
  static VALUE
302
443
  ossl_engine_set_default(VALUE self, VALUE flag)
303
444
  {
@@ -310,6 +451,15 @@ ossl_engine_set_default(VALUE self, VALUE flag)
310
451
  return Qtrue;
311
452
  }
312
453
 
454
+ /* Document-method: OpenSSL::Engine#ctrl_cmd
455
+ *
456
+ * call-seq:
457
+ * engine.ctrl_cmd(command, value = nil) -> engine
458
+ *
459
+ * Send the given +command+ to this engine.
460
+ *
461
+ * Raises an EngineError if the +command+ fails.
462
+ */
313
463
  static VALUE
314
464
  ossl_engine_ctrl_cmd(int argc, VALUE *argv, VALUE self)
315
465
  {
@@ -340,6 +490,10 @@ ossl_engine_cmd_flag_to_name(int flag)
340
490
  }
341
491
  }
342
492
 
493
+ /* Document-method: OpenSSL::Engine#cmds
494
+ *
495
+ * Returns an array of command definitions for the current engine
496
+ */
343
497
  static VALUE
344
498
  ossl_engine_get_cmds(VALUE self)
345
499
  {
@@ -362,6 +516,10 @@ ossl_engine_get_cmds(VALUE self)
362
516
  return ary;
363
517
  }
364
518
 
519
+ /* Document-method: OpenSSL::Engine#inspect
520
+ *
521
+ * Pretty print this engine
522
+ */
365
523
  static VALUE
366
524
  ossl_engine_inspect(VALUE self)
367
525
  {
@@ -62,6 +62,36 @@ ossl_hmac_alloc(VALUE klass)
62
62
  * call-seq:
63
63
  * HMAC.new(key, digest) -> hmac
64
64
  *
65
+ * Returns an instance of OpenSSL::HMAC set with the key and digest
66
+ * algorithm to be used. The instance represents the initial state of
67
+ * the message authentication code before any data has been processed.
68
+ * To process data with it, use the instance method #update with your
69
+ * data as an argument.
70
+ *
71
+ * === Example
72
+ *
73
+ * key = 'key'
74
+ * digest = OpenSSL::Digest.new('sha1')
75
+ * instance = OpenSSL::HMAC.new(key, digest)
76
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
77
+ * instance.class
78
+ * #=> OpenSSL::HMAC
79
+ *
80
+ * === A note about comparisons
81
+ *
82
+ * Two instances won't be equal when they're compared, even if they have the
83
+ * same value. Use #to_s or #hexdigest to return the authentication code that
84
+ * the instance represents. For example:
85
+ *
86
+ * other_instance = OpenSSL::HMAC.new('key', OpenSSL::Digest.new('sha1'))
87
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
88
+ * instance
89
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
90
+ * instance == other_instance
91
+ * #=> false
92
+ * instance.to_s == other_instance.to_s
93
+ * #=> true
94
+ *
65
95
  */
66
96
  static VALUE
67
97
  ossl_hmac_initialize(VALUE self, VALUE key, VALUE digest)
@@ -95,6 +125,19 @@ ossl_hmac_copy(VALUE self, VALUE other)
95
125
  * call-seq:
96
126
  * hmac.update(string) -> self
97
127
  *
128
+ * Returns +self+ updated with the message to be authenticated.
129
+ * Can be called repeatedly with chunks of the message.
130
+ *
131
+ * === Example
132
+ *
133
+ * first_chunk = 'The quick brown fox jumps '
134
+ * second_chunk = 'over the lazy dog'
135
+ *
136
+ * instance.update(first_chunk)
137
+ * #=> 5b9a8038a65d571076d97fe783989e52278a492a
138
+ * instance.update(second_chunk)
139
+ * #=> de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9
140
+ *
98
141
  */
99
142
  static VALUE
100
143
  ossl_hmac_update(VALUE self, VALUE data)
@@ -125,7 +168,16 @@ hmac_final(HMAC_CTX *ctx, unsigned char **buf, unsigned int *buf_len)
125
168
 
126
169
  /*
127
170
  * call-seq:
128
- * hmac.digest -> aString
171
+ * hmac.digest -> string
172
+ *
173
+ * Returns the authentication code an instance represents as a binary string.
174
+ *
175
+ * === Example
176
+ *
177
+ * instance = OpenSSL::HMAC.new('key', OpenSSL::Digest.new('sha1'))
178
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
179
+ * instance.digest
180
+ * #=> "\xF4+\xB0\xEE\xB0\x18\xEB\xBDE\x97\xAEr\x13q\x1E\xC6\a`\x84?"
129
181
  *
130
182
  */
131
183
  static VALUE
@@ -145,7 +197,10 @@ ossl_hmac_digest(VALUE self)
145
197
 
146
198
  /*
147
199
  * call-seq:
148
- * hmac.hexdigest -> aString
200
+ * hmac.hexdigest -> string
201
+ *
202
+ * Returns the authentication code an instance represents as a hex-encoded
203
+ * string.
149
204
  *
150
205
  */
151
206
  static VALUE
@@ -173,6 +228,20 @@ ossl_hmac_hexdigest(VALUE self)
173
228
  * call-seq:
174
229
  * hmac.reset -> self
175
230
  *
231
+ * Returns +self+ as it was when it was first initialized, with all processed
232
+ * data cleared from it.
233
+ *
234
+ * === Example
235
+ *
236
+ * data = "The quick brown fox jumps over the lazy dog"
237
+ * instance = OpenSSL::HMAC.new('key', OpenSSL::Digest.new('sha1'))
238
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
239
+ *
240
+ * instance.update(data)
241
+ * #=> de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9
242
+ * instance.reset
243
+ * #=> f42bb0eeb018ebbd4597ae7213711ec60760843f
244
+ *
176
245
  */
177
246
  static VALUE
178
247
  ossl_hmac_reset(VALUE self)
@@ -189,6 +258,18 @@ ossl_hmac_reset(VALUE self)
189
258
  * call-seq:
190
259
  * HMAC.digest(digest, key, data) -> aString
191
260
  *
261
+ * Returns the authentication code as a binary string. The +digest+ parameter
262
+ * must be an instance of OpenSSL::Digest.
263
+ *
264
+ * === Example
265
+ *
266
+ * key = 'key'
267
+ * data = 'The quick brown fox jumps over the lazy dog'
268
+ * digest = OpenSSL::Digest.new('sha1')
269
+ *
270
+ * hmac = OpenSSL::HMAC.digest(digest, key, data)
271
+ * #=> "\xDE|\x9B\x85\xB8\xB7\x8A\xA6\xBC\x8Az6\xF7\n\x90p\x1C\x9D\xB4\xD9"
272
+ *
192
273
  */
193
274
  static VALUE
194
275
  ossl_hmac_s_digest(VALUE klass, VALUE digest, VALUE key, VALUE data)
@@ -206,7 +287,19 @@ ossl_hmac_s_digest(VALUE klass, VALUE digest, VALUE key, VALUE data)
206
287
 
207
288
  /*
208
289
  * call-seq:
209
- * HMAC.digest(digest, key, data) -> aString
290
+ * HMAC.hexdigest(digest, key, data) -> aString
291
+ *
292
+ * Returns the authentication code as a hex-encoded string. The +digest+
293
+ * parameter must be an instance of OpenSSL::Digest.
294
+ *
295
+ * === Example
296
+ *
297
+ * key = 'key'
298
+ * data = 'The quick brown fox jumps over the lazy dog'
299
+ * digest = OpenSSL::Digest.new('sha1')
300
+ *
301
+ * hmac = OpenSSL::HMAC.hexdigest(digest, key, data)
302
+ * #=> "de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9"
210
303
  *
211
304
  */
212
305
  static VALUE
@@ -237,6 +330,7 @@ void
237
330
  Init_ossl_hmac()
238
331
  {
239
332
  #if 0
333
+ /* :nodoc: */
240
334
  mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
241
335
  #endif
242
336
 
@@ -149,7 +149,7 @@ ossl_ocspreq_add_nonce(int argc, VALUE *argv, VALUE self)
149
149
  * 2: nonces both absent.
150
150
  * 3: nonce present in response only.
151
151
  * 0: nonces both present and not equal.
152
- * -1: nonce in request only.
152
+ * -1: nonce in request only.
153
153
  *
154
154
  * For most responders clients can check return > 0.
155
155
  * If responder doesn't handle nonces return != 0 may be
@@ -466,7 +466,7 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
466
466
  /* All ary's members should be X509Extension */
467
467
  Check_Type(ext, T_ARRAY);
468
468
  for (i = 0; i < RARRAY_LEN(ext); i++)
469
- OSSL_Check_Kind(rb_ary_entry(ext, i), cX509Ext);
469
+ OSSL_Check_Kind(RARRAY_PTR(ext)[i], cX509Ext);
470
470
  }
471
471
 
472
472
  error = 0;
@@ -495,7 +495,7 @@ ossl_ocspbres_add_status(VALUE self, VALUE cid, VALUE status,
495
495
  sk_X509_EXTENSION_pop_free(single->singleExtensions, X509_EXTENSION_free);
496
496
  single->singleExtensions = NULL;
497
497
  for(i = 0; i < RARRAY_LEN(ext); i++){
498
- x509ext = DupX509ExtPtr(rb_ary_entry(ext, i));
498
+ x509ext = DupX509ExtPtr(RARRAY_PTR(ext)[i]);
499
499
  if(!OCSP_SINGLERESP_add_ext(single, x509ext, -1)){
500
500
  X509_EXTENSION_free(x509ext);
501
501
  error = 1;
@@ -624,7 +624,7 @@ pkcs7_get_crls(VALUE self)
624
624
  }
625
625
 
626
626
  static VALUE
627
- ossl_pkcs7_set_certs_i(VALUE i, VALUE arg)
627
+ ossl_pkcs7_set_certs_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, arg))
628
628
  {
629
629
  return ossl_pkcs7_add_certificate(arg, i);
630
630
  }
@@ -664,7 +664,7 @@ ossl_pkcs7_add_crl(VALUE self, VALUE crl)
664
664
  }
665
665
 
666
666
  static VALUE
667
- ossl_pkcs7_set_crls_i(VALUE i, VALUE arg)
667
+ ossl_pkcs7_set_crls_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, arg))
668
668
  {
669
669
  return ossl_pkcs7_add_crl(arg, i);
670
670
  }
@@ -112,7 +112,7 @@ ossl_pkey_new_from_file(VALUE filename)
112
112
  if (!(fp = fopen(RSTRING_PTR(filename), "r"))) {
113
113
  ossl_raise(ePKeyError, "%s", strerror(errno));
114
114
  }
115
- rb_update_max_fd(fileno(fp));
115
+ rb_fd_fix_cloexec(fileno(fp));
116
116
 
117
117
  pkey = PEM_read_PrivateKey(fp, NULL, ossl_pem_passwd_cb, NULL);
118
118
  fclose(fp);
@@ -318,13 +318,16 @@ ossl_pkey_verify(VALUE self, VALUE digest, VALUE sig, VALUE data)
318
318
  {
319
319
  EVP_PKEY *pkey;
320
320
  EVP_MD_CTX ctx;
321
+ int result;
321
322
 
322
323
  GetPKey(self, pkey);
323
- EVP_VerifyInit(&ctx, GetDigestPtr(digest));
324
324
  StringValue(sig);
325
325
  StringValue(data);
326
+ EVP_VerifyInit(&ctx, GetDigestPtr(digest));
326
327
  EVP_VerifyUpdate(&ctx, RSTRING_PTR(data), RSTRING_LEN(data));
327
- switch (EVP_VerifyFinal(&ctx, (unsigned char *)RSTRING_PTR(sig), RSTRING_LENINT(sig), pkey)) {
328
+ result = EVP_VerifyFinal(&ctx, (unsigned char *)RSTRING_PTR(sig), RSTRING_LENINT(sig), pkey);
329
+ EVP_MD_CTX_cleanup(&ctx);
330
+ switch (result) {
328
331
  case 0:
329
332
  return Qfalse;
330
333
  case 1:
@@ -278,7 +278,9 @@ ossl_dh_is_private(VALUE self)
278
278
 
279
279
  /*
280
280
  * call-seq:
281
+ * dh.export -> aString
281
282
  * dh.to_pem -> aString
283
+ * dh.to_s -> aString
282
284
  *
283
285
  * Encodes this DH to its PEM encoding. Note that any existing per-session
284
286
  * public/private keys will *not* get encoded, just the Diffie-Hellman
@@ -428,7 +430,7 @@ ossl_dh_to_public_key(VALUE self)
428
430
 
429
431
  /*
430
432
  * call-seq:
431
- * dh.check_params -> true | false
433
+ * dh.params_ok? -> true | false
432
434
  *
433
435
  * Validates the Diffie-Hellman parameters associated with this instance.
434
436
  * It checks whether a safe prime and a suitable generator are used. If this
@@ -619,7 +621,7 @@ Init_ossl_dh()
619
621
  *
620
622
  * === Example of a key exchange
621
623
  * dh1 = OpenSSL::PKey::DH.new(2048)
622
- * params = dh1.public_key.to_der #you may send this publicly to the participating party
624
+ * der = dh1.public_key.to_der #you may send this publicly to the participating party
623
625
  * dh2 = OpenSSL::PKey::DH.new(der)
624
626
  * dh2.generate_key! #generate the per-session key pair
625
627
  * symm_key1 = dh1.compute_key(dh2.pub_key)
@@ -662,4 +664,3 @@ Init_ossl_dh()
662
664
  {
663
665
  }
664
666
  #endif /* NO_DH */
665
-
@@ -291,7 +291,9 @@ ossl_dsa_is_private(VALUE self)
291
291
 
292
292
  /*
293
293
  * call-seq:
294
+ * dsa.export([cipher, password]) -> aString
294
295
  * dsa.to_pem([cipher, password]) -> aString
296
+ * dsa.to_s([cipher, password]) -> aString
295
297
  *
296
298
  * Encodes this DSA to its PEM encoding.
297
299
  *
@@ -533,8 +533,8 @@ static VALUE ossl_ec_key_to_string(VALUE self, VALUE ciph, VALUE pass, int forma
533
533
 
534
534
  /*
535
535
  * call-seq:
536
- * key.export => String
537
- * key.export(cipher, pass_phrase) => String
536
+ * key.export([cipher, pass_phrase]) => String
537
+ * key.to_pem([cipher, pass_phrase]) => String
538
538
  *
539
539
  * Outputs the EC key in PEM encoding. If +cipher+ and +pass_phrase+ are
540
540
  * given they will be used to encrypt the key. +cipher+ must be an
@@ -847,6 +847,7 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self)
847
847
  }
848
848
 
849
849
  /* call-seq:
850
+ * group1.eql?(group2) => true | false
850
851
  * group1 == group2 => true | false
851
852
  *
852
853
  */
@@ -1316,6 +1317,7 @@ static VALUE ossl_ec_point_initialize(int argc, VALUE *argv, VALUE self)
1316
1317
 
1317
1318
  /*
1318
1319
  * call-seq:
1320
+ * point1.eql?(point2) => true | false
1319
1321
  * point1 == point2 => true | false
1320
1322
  *
1321
1323
  */
@@ -291,8 +291,9 @@ ossl_rsa_is_private(VALUE self)
291
291
 
292
292
  /*
293
293
  * call-seq:
294
- * rsa.to_pem => PEM-format String
295
- * rsa.to_pem(cipher, pass_phrase) => PEM-format String
294
+ * rsa.export([cipher, pass_phrase]) => PEM-format String
295
+ * rsa.to_pem([cipher, pass_phrase]) => PEM-format String
296
+ * rsa.to_s([cipher, pass_phrase]) => PEM-format String
296
297
  *
297
298
  * Outputs this keypair in PEM encoding. If +cipher+ and +pass_phrase+ are
298
299
  * given they will be used to encrypt the key. +cipher+ must be an