Commit graph

8776 commits

Author SHA1 Message Date
Peter Zhu
4f88acc833 Fix compiler warnings in objspace_dump.c when assertions are turned on
Example:

```
In file included from ../../../include/ruby/defines.h:72,
                 from ../../../include/ruby/ruby.h:23,
                 from ../../../gc.h:3,
                 from ../../../ext/objspace/objspace_dump.c:15:
../../../ext/objspace/objspace_dump.c: In function ‘dump_append_ld’:
../../../ext/objspace/objspace_dump.c:95:26: warning: comparison of integer expressions of different signedness: ‘long unsigned int’ and ‘int’ [-Wsign-compare]
   95 |     RUBY_ASSERT(required <= width);
      |                          ^~
```
2021-04-26 19:26:50 -04:00
Ryuta Kamizono
33f2ff3bab Fix some typos by spell checker 2021-04-26 10:07:41 +09:00
wonda-tea-coffee
f9b62b5cc0 [Doc] Fix a typo s/algorthm/algorithm/ 2021-04-25 10:52:29 -04:00
wonda-tea-coffee
ca5816e275 [ci skip] Fix a typo s/certificiate/certificate/ 2021-04-25 10:51:45 -04:00
wonda-tea-coffee
04e6383f40 [Doc] Fix a typo s/daguten/dakuten/ 2021-04-25 10:51:23 -04:00
wonda-tea-coffee
532c775e22 [Doc] Fix a typo s/arround/around/ 2021-04-25 10:50:12 -04:00
Charles Oliver Nutter
270b16e70c
[ruby/io-console] Move FFI console under lib
Having the separate dir makes testing difficult and doesn't
reflect the structure the gem will eventually have. We can filter
these files out if necessary when building the CRuby gem.

881010447c
2021-04-22 11:53:13 +09:00
Duncan MacGregor
042860bd65
[ruby/io-console] Enable building the C extension on TruffleRuby.
c17b8cf3a9
2021-04-22 11:51:37 +09:00
Olle Jonsson
4ac72d37d7 [ruby/io-wait] gemspec: Explicitly list 0 executables
This gem exposes no executables, and this clarifies this.

f491c6cc64
2021-04-21 20:38:00 +09:00
Olle Jonsson
59411b0b36
[ruby/zlib] gemspec: Remove unused files
Remove the list of executables.

6a70725b8e
2021-04-20 21:19:41 +09:00
Olle Jonsson
749aad280f
[ruby/gdbm] gemspec: Set executables to the empty list
This gem exposes zero executables.

d51cf47f65
2021-04-20 21:19:41 +09:00
Olle Jonsson
cc8d0e7cbf
[ruby/dbm] gemspec: add README & LICENSE
c86b94b781
2021-04-20 21:19:41 +09:00
Hiroshi SHIBATA
3fdc58c08b
[ruby/date] Bump version to 3.1.1
e574cc9048
2021-04-20 20:46:03 +09:00
卜部昌平
6413dc27dc dependency updates 2021-04-13 14:30:21 +09:00
Tom Stuart
8b2f2a707d [ruby/openssl] Use #ifdef consistently for HAVE_RB_EXT_RACTOR_SAFE
We previously used a mix of both `#if` and `#ifdef`, but the latter is
more reliable because it will still work if the macro is undefined.

e4a622e67e
2021-03-31 18:05:08 +09:00
Tom Stuart
5ab2625243 [ruby/openssl] Fix OpenSSL::Engine build on Debian
On Debian 9 (“stretch”) the `OPENSSL_NO_STATIC_ENGINE` macro is not
defined, which causes all the `#if HAVE_ENGINE_LOAD_…` directives to
fail with `error: 'HAVE_ENGINE_LOAD_…' is not defined, evaluates to 0
[-Werror,-Wundef]` while building TruffleRuby.

We can accomplish the same thing with `#ifdef`, which (of course) works
fine when the `HAVE_ENGINE_LOAD…` macros are also undefined.

Upstreamed from oracle/truffleruby#2255, which fixed
oracle/truffleruby#2254.

65e2adf1ac
2021-03-31 18:05:08 +09:00
Kazuki Yamaguchi
e2bf3659e1 [ruby/openssl] pkcs7: keep private key when duplicating PKCS7_SIGNER_INFO
ASN1_dup() will not copy the 'pkey' field of a PKCS7_SIGNER_INFO object
by design; it is a temporary field kept until the PKCS7 structure is
finalized. Let's bump reference counter of the pkey in the original
object and use it in the new object, too.

This commit also removes PKCS7#add_signer's routine to add the
content-type attribute as a signed attribute automatically. This
behavior was not documented or tested. This change should not break any
working user code since the method was completely useless without the
change above.

20ca7a27a8
2021-03-31 18:05:07 +09:00
aycabta
66d2fc7989 Enclose the code that was accidentally a link in "tt" 2021-03-31 15:18:52 +09:00
Nobuyoshi Nakada
94d564077c
Text files should end with a newline 2021-03-30 23:41:21 +09:00
Nobuyoshi Nakada
989e22f394
[ruby/io-console] bump up to 0.5.9
302e86a28c
0690862526
2021-03-28 23:42:38 +09:00
Kenichi Kamiya
9af57eeed6
[ruby/pathname] Fix segfault of Pathname#split
Fix segmentation fault of Pathname#split when File.split returns
non array value [Bug #17755]

e29b49e3b1
1db7479a74
2021-03-28 14:04:10 +09:00
Jean Boussier
7e8a9af9db rb_enc_interned_str: handle autoloaded encodings
If called with an autoloaded encoding that was not yet
initialized, `rb_enc_interned_str` would crash with
a NULL pointer exception.

See: https://github.com/ruby/ruby/pull/4119#issuecomment-800189841
2021-03-22 21:37:48 +09:00
Nobuyoshi Nakada
3260602fa3
Adjusted indents [ci skip] 2021-03-17 09:49:17 +09:00
Sorah Fukumori
cf831f4918
zlib: fix Gzip{Writer,Reader}.new fails with a O_TMPFILE file 2021-03-17 02:16:27 +09:00
Kazuki Yamaguchi
1eb6d8aa63 [ruby/openssl] bn: check -1 return from BIGNUM functions
Although the manpage says that BIGNUM functions return 0 on error,
OpenSSL versions before 1.0.2n and current LibreSSL versions may return
-1 instead.

Note that the implementation of OpenSSL::BN#mod_inverse is extracted
from BIGNUM_2c() macro as it didn't really share the same function
signature with others.

9b59f34345
2021-03-16 19:37:06 +09:00
Nobuyoshi Nakada
1ad2224773 [ruby/openssl] Fixed the results of OpenSSL::Timestamp::Response#failure_info
Made stored values `Symbol`s instead of `ID`s.

Fixes https://bugs.ruby-lang.org/issues/17625

Co-Authored-By: xtkoba (Tee KOBAYASHI) <xtkoba+ruby@gmail.com>

f2d004679a
2021-03-16 19:37:06 +09:00
Jeremy Evans
e2ce383044 [ruby/openssl] Enhance TLS 1.3 support on LibreSSL 3.2/3.3
This defines TLS1_3_VERSION when using LibreSSL 3.2+.  LibreSSL 3.2/3.3
doesn't advertise this by default, even though it will use TLS 1.3
in both client and server modes.

Changes between LibreSSL 3.1 and 3.2/3.3 broke a few tests, Defining
TLS1_3_VERSION by itself fixes 1 test failure.  A few tests now
fail on LibreSSL 3.2/3.3 unless TLS 1.2 is set as the maximum version,
and this adjusts those tests.  The client CA test doesn't work in
LibreSSL 3.2+, so I've marked that as pending.

For the hostname verification, LibreSSL 3.2.2+ has a new stricter
hostname verifier that doesn't like subjectAltName such as
c*.example.com and d.*.example.com, so adjust the related tests.

With these changes, the tests pass on LibreSSL 3.2/3.3.

a0e98d48c9
2021-03-16 19:37:06 +09:00
Kazuki Yamaguchi
4756ac00b7 [ruby/openssl] pkey/ec: remove OpenSSL::PKey::EC::Group.new(ec_method) form
The form created an empty EC_GROUP object with the specified EC_METHOD.
However, the feature was unfinished and not useful in any way because
OpenSSL::PKey::EC::Group did not implement wrappers for necessary
functions to set actual parameters for the group, namely
EC_GROUP_set_curve() family.

EC_GROUP object creation with EC_METHOD explicitly specified is
deprecated in OpenSSL 3.0, as it was apparently not intended for use
outside OpenSSL.

It is still possible to create EC_GROUP, but without EC_METHOD
explicitly specified - OpenSSL chooses the appropriate EC_METHOD for
the curve type. The OpenSSL::PKey::EC::Group.new(<:GFp|:GF2m>, p, a, b)
form will continue to work.

df4bec841f
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
d47210b113 [ruby/openssl] ssl: remove SSL::SSLContext#tmp_ecdh_callback
The underlying API SSL_CTX_set_tmp_ecdh_callback() was removed by
LibreSSL >= 2.6.1 and OpenSSL >= 1.1.0, in other words, it is not
supported by any non-EOL versions of OpenSSL.

The wrapper was initially implemented in Ruby 2.3 and has been
deprecated since Ruby/OpenSSL 2.0 (bundled with Ruby 2.4) with explicit
warning with rb_warn().

ee037e1460
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
945ed40862 [ruby/openssl] ssl: retry write on EPROTOTYPE on macOS
Errno::EPROTOTYPE is not supposed to be raised by SSLSocket#write.
However, on macOS, send(2) which is called via SSL_write() can
occasionally return EPROTOTYPE. Retry SSL_write() so that we get a
proper error, just as ext/socket does.

Reference: https://bugs.ruby-lang.org/issues/14713
Reference: https://github.com/ruby/openssl/issues/227

2e700c80bf
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
c46b1f0bec [ruby/openssl] x509store: update rdoc for X509::Store and X509::StoreContext
Add more details about each method, and add reference to OpenSSL man
pages.

02b6f82c73
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
62d889c857 [ruby/openssl] x509store: fix memory leak in X509::StoreContext.new
The certificate passed as the second argument was not properly free'd
in the error paths.

9561199b9f
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
871c61d5d0 [ruby/openssl] x509store: avoid ossl_raise() calls with NULL message
Use the OpenSSL function name that caused the error to generate a better
error message.

b31809ba3d
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
be3ba2ee4d [ruby/openssl] x509store: refactor X509::StoreContext#chain
Use ossl_x509_sk2ary() to create an array of OpenSSL::X509::Certificate
from STACK_OF(X509).

fa1da69f92
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
08c99a4208 [ruby/openssl] x509store: emit warning if arguments are given to X509::Store.new
Anything passed to OpenSSL::X509::Store.new was always ignored. Let's
emit an explicit warning to not confuse users.

d173700eeb
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
88b8b3ac15 [ruby/openssl] x509store: let X509::Store#add_file raise TypeError if nil is given
Undo special treatment of nil and simply pass the value to
StringValueCStr().

nil was never a valid argument for the method; OpenSSL::X509::StoreError
with an unhelpful error message "system lib" was raised in that case.

fb2fcbb137
2021-03-16 19:16:11 +09:00
Nobuhiro IMAI
92f19f7bb0 [ruby/openssl] [DOC] Fix RDoc markup
f36af95519
2021-03-16 19:16:11 +09:00
Claus Lensbøl
be1e88a277 [ruby/openssl] Fix typo in documentation
The socket is called ssl_connection, not connection

642783aeda
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
81325db5f8 [ruby/openssl] ssl: initialize verify_mode and verify_hostname with default values
SSLContext's verify_mode expects an SSL_VERIFY_* constant (an integer)
and verify_hostname expects either true or false. However, they are set
to nil after calling OpenSSL::SSL::SSLContext.new, which is surprising.

Set a proper value to them by default: verify_mode is set to
OpenSSL::SSL::VERIFY_NONE and verify_hostname is set to false by
default.

Note that this does not change the default behavior. The certificate
verification was never performed unless verify_mode is set to
OpenSSL::SSL::VERIFY_PEER by a user. The same applies to
verify_hostname.

87d869352c
2021-03-16 19:16:11 +09:00
Colton Jenkins
c71afc9db7 [ruby/openssl] Add compare? method to OpenSSL::PKey that wraps EVP_PKEY_cmp.
Explicitly check for type given some conflicting statements within openssl's
documentation around EVP_PKEY_cmp and EVP_PKEY_ASN1_METHOD(3).
Add documentation with an example for compare?

0bf51da6e2
2021-03-16 19:16:11 +09:00
Bart de Water
da6341b709 [ruby/openssl] User lower case cipher names for maximum compatibility
We ran into some Linux-based systems not accepting the upper case variant

7bc49121d5
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
13198d4968 [ruby/openssl] hmac: implement base64digest methods
OpenSSL::HMAC implements the similar interface as ::Digest. Let's add
base64digest methods to OpenSSL::HMAC, too, for feature parity.

098bcb68af
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
b91f62f384 [ruby/openssl] hmac: migrate from the low-level HMAC API to the EVP API
Use the EVP API instead of the low-level HMAC API. Use of the HMAC API
has been discouraged and is being marked as deprecated starting from
OpenSSL 3.0.0.

The two singleton methods OpenSSL::HMAC, HMAC.digest and HMAC.hexdigest
are now in lib/openssl/hmac.rb.

0317e2fc02
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
fde9f806cb [ruby/openssl] pkey/ec: deprecate OpenSSL::PKey::EC::Point#mul(ary, ary [, bn])
Deprecate it for future removal. However, I do not expect any
application is affected by this.

The other form of calling it, PKey::EC::Point#mul(bn [, bn]) remains
untouched.

PKey::EC::Point#mul calls EC_POINTs_mul(3) when multiple BNs
are given as an array. LibreSSL 2.8.0 released on 2018-08 removed the
feature and OpenSSL 3.0 which is planned to be released in 2020 will
also deprecate the function as there is no real use-case.

812de4253d
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
15863069c9 [ruby/openssl] digest, hmac, ts, x509: use IO.binread in examples where appropriate
IO.read may mangle line separator, which will corrupt binary data
including DER-encoded X.509 certificates and such.

Fixes: https://github.com/ruby/openssl/issues/243

93213b2730
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
9d3ffe09c4 [ruby/openssl] pkey: reimplement PKey::DH#compute_key and PKey::EC#dh_compute_key
Use the new OpenSSL::PKey::PKey#derive instead of the raw
{EC,}DH_compute_key(), mainly to reduce amount of the C code.

28edf6bafc
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
fbadb01d6e [ruby/openssl] pkey: add PKey::PKey#derive
Add OpenSSL::PKey::PKey#derive as the wrapper for EVP_PKEY_CTX_derive().
This is useful for pkey types that we don't have dedicated classes, such
as X25519.

28f0059bea
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
b2dc4880f5 [ruby/openssl] pkey: support 'one-shot' signing and verification
OpenSSL 1.1.1 added EVP_DigestSign() and EVP_DigestVerify() functions
to the interface. Some EVP_PKEY methods such as PureEdDSA algorithms
do not support the streaming mechanism and require us to use them.

ae19454592
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
5cae289682 [ruby/openssl] pkey: port PKey::PKey#sign and #verify to the EVP_Digest* interface
Use EVP_DigestSign*() and EVP_DigestVerify*() interface instead of the
old EVP_Sign*() and EVP_Verify*() functions. They were added in OpenSSL
1.0.0.

Also, allow the digest to be specified as nil, as certain EVP_PKEY types
don't expect a digest algorithm.

9ff6e5143b
2021-03-16 19:16:11 +09:00
Kazuki Yamaguchi
1e3590fe22 [ruby/openssl] pkey: add PKey.generate_parameters and .generate_key
Add two methods to create a PKey using the generic EVP interface. This
is useful for the PKey types we don't have a dedicated class.

d8e8e57de9
2021-03-16 19:16:11 +09:00