Commit graph

791 commits

Author SHA1 Message Date
nobu
e14c9f1048 Fix typo on OpenSSL::PKey doc [ci skip]
* ext/openssl/ossl_pkey.c (Init_ossl_pkey): [DOC] Fix typo
  "encrypted" to "decrypted".  [Fix GH-1235]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-02-02 23:25:40 +00:00
hsbt
d2076446ed * ext/openssl/lib/openssl/pkey.rb: Added 2048 bit DH parameter.
* test/openssl/test_pkey_dh.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-16 07:51:24 +00:00
hsbt
55cb1b5e70 * Remove 512-bit DH group. It's affected by LogJam Attack.
https://weakdh.org/
  [fix GH-1196][Bug #11968][ruby-core:72766]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-14 06:09:19 +00:00
nobu
fa8920288c openssl: fix examples [ci skip]
* ext/openssl/ossl.c: Add missing variables to documentation
  examples.  [Fix GH-1189]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-09 14:15:49 +00:00
nobu
f4166e2dd7 prefer rb_syserr_fail
* file.c, io.c, util.c: prefer rb_syserr_fail with saved errno
  over setting errno then call rb_sys_fail, not to be clobbered
  potentially and to reduce thread local errno accesses.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-23 08:57:48 +00:00
nobu
c17e9e077c NotImplementedError typo
* ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket): fix
  NotImplementedError typo.  [Fix GH-1165]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-21 00:33:20 +00:00
naruse
c4fdfabcc8 handle ext/ as r53141
g -L frozen_string_literal ext/**/*.rb|xargs ruby -Ka -e'ARGV.each{|fn|puts
fn;open(fn,"r+"){|f|s=f.read.sub(/\A(#!.*\n)?(#.*coding.*\n)?/,"\\&#
frozen_string_literal: false\n");f.rewind;f.write s}}'

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:31:54 +00:00
naruse
1dd1a9873e * ext/openssl/ossl_ssl.c (ssl_npn_select_cb_common): fix parsing
protocol list.
  The protocol list from OpenSSL is not null-terminated.
  patched by Kazuki Yamaguchi [Bug #11810] [ruby-core:72082]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 01:29:44 +00:00
ko1
dff42b0ea0 * ext/**/*.c (*_memsize): same as r52986 for extensions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-09 01:01:17 +00:00
normal
ebcefd795b ext/openssl/ossl_ssl.c: hide globals
* ext/openssl/ossl_ssl.c (mSSLExtConfig): make static
  (eSSLError): ditto
  (ID_callback_state): ditto
  (ossl_ssl_ex_vcb_idx): ditto
  (ossl_ssl_ex_store_p): ditto
  (ossl_ssl_ex_ptr_idx): ditto
* ext/openssl/ossl_ssl.h: remove extern declarations for
  mSSLExtConfig and eSSLError

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52842 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-01 22:49:05 +00:00
kosaki
07083767e9 * ext/openssl/ossl_rand.c (ossl_rand_bytes): RAND_bytes could
be return -1 as an error. Therefore, added error handling.
* ext/openssl/ossl_pkey_dsa.c (dsa_generate): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 20:29:02 +00:00
hsbt
81a6bd50c2 * ext/openssl/ossl.c: fix brew command for installation of openssl.
[ci skip][fix GH-1007] Patch by @arthurnn

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-22 10:36:56 +00:00
naruse
c964c738be * ext/openssl/ossl.h: LibreSSL doesn't have and need e_os2.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-21 04:06:43 +00:00
zzak
293aa87118 Commit miss from r52556
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 05:03:55 +00:00
zzak
85dd19cf38 * ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 05:01:15 +00:00
zzak
47135def05 * ext/openssl/ossl_ssl.c: Merge ruby/openssl@81e1a30
* test/openssl/test_ssl.rb: ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 04:10:58 +00:00
nobu
6e19fc30b1 suppress warnings
* ext/date/date_parse.c (date_zone_to_diff): suppress parentheses
  warnings.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-08 05:54:29 +00:00
nobu
57e2877e7b ext: use RARRAY_AREF
* ext/**/*.c: prefer RARRAY_AREF to indexing RARRAY_CONST_PTR.
  pointed out by hanmac.
  3553a86 (commitcomment-14187670)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-05 01:09:17 +00:00
nobu
3553a86eb5 ext: use RARRAY_CONST_PTR
* ext/bigdecimal/bigdecimal.c: use RARRAY_CONST_PTR just fore
  reference instead of RARRAY_PTR, to keep the array WB-protected.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:27:10 +00:00
nobu
52912db4a8 ext: adjust index type
* ext: use long for index instead of int and RARRAY_LENINT.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-04 07:18:01 +00:00
naruse
b5f2b5e1a2 ALPN also uses the same logic [Bug #11369]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 16:54:05 +00:00
naruse
d7d779b594 * ext/openssl/ossl_ssl.c (ssl_npn_select_cb): explicitly raise error
in ext/openssl instead of OpenSSL itself because LibreSSL
  silently truncate the selected protocol name by casting the length
  from int to unsigned char. [Bug #11369]
  Patch by Jeremy Evans <merch-redmine@jeremyevans.net>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 16:54:01 +00:00
sorah
e2d79c46c8 * ext/openssl/lib/openssl/ssl.rb: Revert r52082 because it was
dropping TLS v1.1 support too. Supporting only TLS v1.2 is too
  early, because many popular websites still don't support it.

  For instance, Servers where aws-sdk connects to still don't support
  TLS v1.2 and it became broken.

  We should consider more carefully about this.

  [Fix GH-873] [Feature #11524]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-09 05:20:50 +00:00
zzak
4b395bb4ce * ext/openssl/lib/openssl/ssl.rb: Default to TLSv1.2 and drop TLS v1
Patch provided by @claudijd [Fixes GH-873] [Feature #11524]:
  https://github.com/ruby/ruby/pull/873


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-08 05:26:44 +00:00
zzak
b885cec842 * ext/openssl/ossl_pkcs12*: Remove svn commit id macro
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-23 13:23:02 +00:00
zzak
0ecc3688ed * ext/openssl/*: Remove svn commit id macros to make sync easier
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-22 16:12:15 +00:00
tenderlove
801e1fe46d * ext/openssl/ossl_ssl.c (static const struct): Only add SSLv3 support
if the SSL library supports it.  Thanks Kurt Roeckx <kurt@roeckx.be>
  [Bug #11376]

* ext/openssl/extconf.rb: check for SSLv3 support in the SSL
  implementation.

* test/openssl/test_ssl.rb (class OpenSSL): Skip tests that need SSLv3
  if there is no support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-29 17:45:14 +00:00
tenderlove
036fe23b26 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): add OP_ALL to
existing options rather than just setting it.  Some vendors apply
  custom patches to their versions of OpenSSL that set default values
  for options.  This commit respects the custom patches they've
  applied.

* test/openssl/test_ssl.rb (class OpenSSL): check that OP_ALL has been
  added to the options.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51642 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-19 14:59:58 +00:00
nobu
13f33b22e1 ossl_ssl.c: check SSL method name
* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version): SSL method
  name must not contain NUL.  preserve the encoding of message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-15 04:34:29 +00:00
nobu
b5a5cd605b use rb_sym2str
* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ssl_version): use
  rb_sym2str to get rid of inadvertent ID creations.

* ext/socket/ancdata.c (ancillary_inspect): ditto.

* ext/socket/option.c (sockopt_inspect): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-15 04:32:15 +00:00
tenderlove
ff7eb4c656 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move
SSLSocket#sysclose to Ruby.

* ext/openssl/ossl_ssl.c (ossl_ssl_close): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 23:17:33 +00:00
tenderlove
175862843c * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move nonblock
enable to SSLSocket#initialize and remove Nonblock module.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 22:59:00 +00:00
tenderlove
b830786f2d * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move
OpenSSL::SSL::SSLSocket#initialize to Ruby.

* ext/openssl/ossl_ssl.c: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 22:55:38 +00:00
nobu
4b19322384 ossl_ssl.c: remove unused variables
* ext/openssl/ossl_ssl.c (ossl_call_client_cert_cb),
  (ossl_call_tmp_dh_callback, ossl_call_tmp_ecdh_callback),
  (ossl_call_session_get_cb, ossl_call_session_new_cb): remove no
  longer used variables.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-05 01:48:10 +00:00
tenderlove
1cb9949fad * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): extract callback
lookup to private Ruby methods. This means we can keep the default
  DH callback logic hidden from consumers.  Also, since the SSLSocket
  always has a context, we can remove conditionals about that
  instance.

* ext/openssl/ossl_ssl.c: move callback lookup methods to private Ruby
  methods.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-04 23:56:44 +00:00
normal
1e5a40ff18 openssl/buffering: fix gets on EOF with limit
* ext/openssl/lib/openssl/buffering.rb (gets):
  avoid comparing fixnum with nil
* test/openssl/test_pair.rb: test gets with limit when EOF is hit
  Thanks to Bar Hofesh <bar.hofesh@safe-t.com> for the bug report
  and testing.
  [ruby-core:70149] [Bug #11400]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 22:08:17 +00:00
tenderlove
d8225d9f04 * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): Implement
SSLContext#options and options= using SSL_CTX_set_options and
  SSL_CTX_get_options. This reduces the number of ivars we need and
  simplifies `ossl_sslctx_setup`.

* ext/openssl/lib/openssl/ssl.rb (module OpenSSL): Default `options`
  to SSL_OP_ALL

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-08-01 00:12:46 +00:00
tenderlove
bcc2641ed8 * ext/openssl/ossl_ssl.c (Init_ossl_ssl): OpenSSL declares these
constants as longs, so we should follow that and use LONG2NUM.
  http://git.io/vOqxD

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 22:01:49 +00:00
tenderlove
9fefa60637 * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): change callback
to return the Ruby dh (or ecdh) object that the caller cares about
  instead of doing rb_iv_get / set to communicate.  This means we can
  remove an rb_iv_get call, and only use the set calls for their
  intended purpose (to prevent the object from being GC'd).

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto
* ext/openssl/ossl_ssl.c (ossl_call_tmp_ecdh_callback): ditto
* ext/openssl/ossl_ssl.c (ossl_tmp_ecdh_callback): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 19:08:40 +00:00
tenderlove
2abc873732 * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): Similarly to the
tmp_ecdh_callback, the SSLSocket instance always holds a reference
  to the SSLContext object (it's always set in `initialize`).  The
  SSLContext holds a reference to the tmp_dh_callback.  Ask the
  context for the callback instead of storing the callback in two
  places.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:51:30 +00:00
tenderlove
568ba1cfdb * ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): create an array
and use `rb_apply` to clean up calls to `rb_protect`.

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:44:12 +00:00
tenderlove
cbb45e2f4e * ext/openssl/ossl_ssl.c (ossl_call_tmp_ecdh_callback): The SSL socket
always holds a reference to the SSLContext object, which will have
  the callback object.  Ask the context for the callback instead of
  storing the callback in two places.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:29:12 +00:00
tenderlove
5b5d79c88b * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): convert
`tmp_dh_callback` to Ruby, and call it when setting up an SSL
  connection.  This allows us to move the "default" behavior to the
  reader method.

* ext/openssl/ossl_ssl.c: call the tmp_dh_callback instead of
  accessing the SSLContext's internals.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51455 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-31 18:20:31 +00:00
tenderlove
dc9ca079bb * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): raise a more
helpful exception when verifying the peer connection and an
  anonymous cipher has been selected. [ruby-core:68330] [Bug #10910]
  Thanks to Chris Sinjakli <chris@sinjakli.co.uk> for the patch.

* test/openssl/test_ssl.rb (class OpenSSL): test for change

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-27 18:29:17 +00:00
nobu
edf712bfd8 ossl_ssl.c: fix condition
* ext/openssl/ossl_ssl.c (ossl_ssl_alpn_protocol): fix condition
  to compile, needs ALPN to be available.  [Feature #9390]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-26 10:21:35 +00:00
tenderlove
86ff702957 * ext/openssl/ossl_ssl.c (ossl_call_servername_cb): set the ssl context
object returned by the servername callback on to the socket as an
  instance variable.  If the callback allocated a new context object
  and didn't keep a reference to it, it could be GC'd out from under
  the socket object.

* test/openssl/test_ssl.rb (class OpenSSL): test for change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-26 01:29:02 +00:00
tenderlove
b380c987e1 * ext/openssl/lib/openssl/pkey.rb: implement DEFAULT_512 and
DEFAULT_1024 constants in Ruby.

* ext/openssl/lib/openssl/ssl.rb (module OpenSSL): Ask PKey for the
  default DH callback since it aleady must check whether openssl has
  been compiled with DH support.

* ext/openssl/ossl_pkey_dh.c (OSSL_PKEY_BN): Remove C definitions of
  DEFAULT_512 and DEFAULT_1024

* ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): ditto

* test/openssl/test_pkey_dh.rb (class OpenSSL): add test to ensure the
  Ruby definitions are the same as the C definitions were.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 23:35:49 +00:00
tenderlove
486e6e02c2 * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): support
specifically setting the tmp_dh_callback to nil.

* ext/openssl/ossl_ssl.c (Init_ossl_ssl): ditto

* test/openssl/test_pair.rb (module OpenSSL): add a test

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 23:16:49 +00:00
tenderlove
d9fcc9ba5e * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): move the default
tmp_dh_callback Ruby code and set it as a default in `initialize`.

* ext/openssl/ossl_pkey_dh.c (static unsigned char DEFAULT_DH_512_GEN):
  move this constant to Ruby.

* ext/openssl/ossl_pkey_dh.c (static unsigned char DEFAULT_DH_1024_GEN):
  ditto

* ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): ditto

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto

* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): tmp_dh_callback should
  always be set, so we can remove this conditional

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 22:51:20 +00:00
tenderlove
dec31ef3eb * ext/openssl/lib/openssl/ssl.rb (module OpenSSL): add missing
instance variables to squash warnings with alpn.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-25 19:53:16 +00:00