openssl 3.2.0 → 3.3.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/CONTRIBUTING.md +180 -29
- data/History.md +114 -1
- data/README.md +11 -7
- data/ext/openssl/extconf.rb +7 -9
- data/ext/openssl/openssl_missing.c +1 -1
- data/ext/openssl/openssl_missing.h +1 -1
- data/ext/openssl/ossl.c +7 -9
- data/ext/openssl/ossl.h +12 -8
- data/ext/openssl/ossl_asn1.c +65 -261
- data/ext/openssl/ossl_asn1.h +1 -19
- data/ext/openssl/ossl_bio.c +1 -1
- data/ext/openssl/ossl_bio.h +1 -1
- data/ext/openssl/ossl_bn.c +12 -12
- data/ext/openssl/ossl_bn.h +1 -2
- data/ext/openssl/ossl_cipher.c +24 -9
- data/ext/openssl/ossl_cipher.h +1 -4
- data/ext/openssl/ossl_config.c +10 -9
- data/ext/openssl/ossl_config.h +1 -1
- data/ext/openssl/ossl_digest.c +39 -20
- data/ext/openssl/ossl_digest.h +1 -4
- data/ext/openssl/ossl_engine.c +3 -3
- data/ext/openssl/ossl_engine.h +1 -4
- data/ext/openssl/ossl_hmac.c +3 -3
- data/ext/openssl/ossl_hmac.h +1 -4
- data/ext/openssl/ossl_kdf.c +5 -5
- data/ext/openssl/ossl_ns_spki.c +8 -8
- data/ext/openssl/ossl_ns_spki.h +1 -5
- data/ext/openssl/ossl_ocsp.c +8 -8
- data/ext/openssl/ossl_ocsp.h +1 -8
- data/ext/openssl/ossl_pkcs12.c +54 -3
- data/ext/openssl/ossl_pkcs12.h +1 -4
- data/ext/openssl/ossl_pkcs7.c +79 -22
- data/ext/openssl/ossl_pkcs7.h +2 -22
- data/ext/openssl/ossl_pkey.c +1 -1
- data/ext/openssl/ossl_pkey.h +3 -14
- data/ext/openssl/ossl_pkey_dh.c +2 -2
- data/ext/openssl/ossl_pkey_dsa.c +2 -2
- data/ext/openssl/ossl_pkey_ec.c +6 -6
- data/ext/openssl/ossl_pkey_rsa.c +2 -2
- data/ext/openssl/ossl_provider.c +1 -1
- data/ext/openssl/ossl_rand.c +3 -3
- data/ext/openssl/ossl_rand.h +1 -4
- data/ext/openssl/ossl_ssl.c +71 -52
- data/ext/openssl/ossl_ssl.h +1 -1
- data/ext/openssl/ossl_ts.c +73 -15
- data/ext/openssl/ossl_ts.h +1 -1
- data/ext/openssl/ossl_x509.c +1 -1
- data/ext/openssl/ossl_x509.h +1 -20
- data/ext/openssl/ossl_x509attr.c +25 -26
- data/ext/openssl/ossl_x509cert.c +42 -3
- data/ext/openssl/ossl_x509crl.c +8 -4
- data/ext/openssl/ossl_x509ext.c +3 -3
- data/ext/openssl/ossl_x509name.c +3 -3
- data/ext/openssl/ossl_x509req.c +8 -4
- data/ext/openssl/ossl_x509revoked.c +2 -2
- data/ext/openssl/ossl_x509store.c +16 -11
- data/lib/openssl/asn1.rb +188 -0
- data/lib/openssl/bn.rb +1 -1
- data/lib/openssl/buffering.rb +24 -9
- data/lib/openssl/cipher.rb +1 -1
- data/lib/openssl/digest.rb +1 -1
- data/lib/openssl/marshal.rb +1 -1
- data/lib/openssl/ssl.rb +67 -4
- data/lib/openssl/version.rb +1 -1
- data/lib/openssl/x509.rb +6 -6
- data/lib/openssl.rb +2 -1
- metadata +6 -4
- /data/{LICENSE.txt → COPYING} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8432d7080faee7ddacde9ce67046b585bed0364f1f63f3e34ca68e28b94c939
|
4
|
+
data.tar.gz: 2e55e3ed68ce1bfa26d38e95481510d126282e4fb44b6f2379efe060cbc6a9d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b47e7a7d5e2eb91a2beb38a3054f51bbec651823e4644ac16778d5a9d60545b8e53f8065ad8aa059d880d19aa01d7d5e171f8aea4d7262a62717221a4c47d1f
|
7
|
+
data.tar.gz: b3fd16b1cbe564abcafcf849c9666644f6a74672bd65c4019ba008e7f377b1ed4b121d89d9bc6f8b38306ee0c76ed60e1df798b6fe3533d633389393263438f7
|
data/CONTRIBUTING.md
CHANGED
@@ -10,7 +10,7 @@ Bugs and feature requests are tracked on [GitHub].
|
|
10
10
|
|
11
11
|
If you think you found a bug, file a ticket on GitHub. Please DO NOT report
|
12
12
|
security issues here, there is a separate procedure which is described on
|
13
|
-
["Security at ruby-lang.org"]
|
13
|
+
["Security at ruby-lang.org"][Ruby Security].
|
14
14
|
|
15
15
|
When reporting a bug, please make sure you include:
|
16
16
|
|
@@ -22,26 +22,25 @@ When reporting a bug, please make sure you include:
|
|
22
22
|
|
23
23
|
There are a number of unresolved issues and feature requests for openssl that
|
24
24
|
need review. Before submitting a new ticket, it is recommended to check
|
25
|
-
[known issues].
|
25
|
+
[known issues][Issues].
|
26
26
|
|
27
27
|
## Submitting patches
|
28
28
|
|
29
29
|
Patches are also very welcome!
|
30
30
|
|
31
|
-
Please submit a [pull request] with your changes.
|
31
|
+
Please submit a [pull request][Compare changes] with your changes.
|
32
32
|
|
33
33
|
Make sure that your branch does:
|
34
34
|
|
35
35
|
* Have good commit messages
|
36
|
-
* Follow Ruby's coding style ([
|
36
|
+
* Follow Ruby's coding style ([Developer-How-To][Ruby Developer-How-To])
|
37
37
|
* Pass the test suite successfully (see "Testing")
|
38
38
|
|
39
39
|
## Testing
|
40
40
|
|
41
41
|
We have a test suite!
|
42
42
|
|
43
|
-
Test cases are located under the
|
44
|
-
[`test/openssl`](https://github.com/ruby/openssl/tree/master/test/openssl)
|
43
|
+
Test cases are located under the [`test/openssl`][GitHub test/openssl]
|
45
44
|
directory.
|
46
45
|
|
47
46
|
You can run it with the following three commands:
|
@@ -54,31 +53,176 @@ $ bundle exec rake test
|
|
54
53
|
|
55
54
|
### With different versions of OpenSSL
|
56
55
|
|
57
|
-
Ruby OpenSSL supports various versions of OpenSSL library. The test suite
|
58
|
-
to pass on all supported combinations.
|
56
|
+
Ruby OpenSSL supports various versions of the OpenSSL library. The test suite
|
57
|
+
needs to pass on all supported combinations.
|
59
58
|
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
If you want to test, debug, report an issue, or contribute to the Ruby OpenSSL
|
60
|
+
or [the OpenSSL project][OpenSSL] in the non-FIPS or the
|
61
|
+
[FIPS][OpenSSL README-FIPS] case, compiling OpenSSL from the source by yourself
|
62
|
+
is a good practice.
|
63
|
+
|
64
|
+
The following steps are tested in Linux and GCC environment. You can adjust the
|
65
|
+
commands in the steps for a different environment.
|
66
|
+
|
67
|
+
To download the OpenSSL source from the Git repository, you can run the following
|
68
|
+
commands:
|
69
|
+
|
70
|
+
```
|
71
|
+
$ git clone https://github.com/openssl/openssl.git
|
72
|
+
$ cd openssl
|
73
|
+
```
|
74
|
+
|
75
|
+
You see the `master` branch used as a development branch. Testing against the
|
76
|
+
latest OpenSSL master branch is a good practice to report an issue to the
|
77
|
+
OpenSSL project.
|
78
|
+
|
79
|
+
```
|
80
|
+
$ git branch | grep '^*'
|
81
|
+
* master
|
82
|
+
```
|
83
|
+
|
84
|
+
If you test against the latest stable branch, you can run the following command.
|
85
|
+
In this example, the `openssl-3.1` branch is the stable branch of OpenSSL 3.1
|
86
|
+
series.
|
87
|
+
|
88
|
+
```
|
89
|
+
$ git checkout openssl-3.1
|
90
|
+
```
|
91
|
+
|
92
|
+
To configure OpenSSL, you can run the following commands.
|
93
|
+
|
94
|
+
In this example, we use the `OPENSSL_DIR` environment variable to specify the
|
95
|
+
OpenSSL installed directory for convenience. Including the commit hash in the
|
96
|
+
directory name is a good practice.
|
97
|
+
|
98
|
+
```
|
99
|
+
$ git rev-parse --short HEAD
|
100
|
+
0bf18140f4
|
101
|
+
|
102
|
+
$ OPENSSL_DIR=$HOME/.openssl/openssl-fips-debug-0bf18140f4
|
103
|
+
```
|
104
|
+
|
105
|
+
The following configuration options are useful in this case.
|
106
|
+
You can check [OpenSSL installation document][OpenSSL INSTALL] for details.
|
107
|
+
|
108
|
+
* `enable-fips`: Add an option to run with the OpenSSL FIPS module.
|
109
|
+
* `enable-trace`: Add an option to enabling tracing log. You can trace logs by
|
110
|
+
implementing a code. See the man page [OSSL_TRACE(3)][OpenSSL OSSL_TRACE] for
|
111
|
+
details.
|
112
|
+
* compiler flags
|
113
|
+
* `-Wl,-rpath,$(LIBRPATH)`: Set the runtime shared library path to run the
|
114
|
+
`openssl` command without the `LD_LIBRARY_PATH`. You can check
|
115
|
+
[this document][OpenSSL NOTES-UNIX] for details.
|
116
|
+
* `-O0 -g3 -ggdb3 -gdwarf-5`: You can set debugging compiler flags.
|
63
117
|
|
64
118
|
```
|
65
|
-
$
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
119
|
+
$ ./Configure \
|
120
|
+
--prefix=$OPENSSL_DIR \
|
121
|
+
--libdir=lib \
|
122
|
+
enable-fips \
|
123
|
+
enable-trace \
|
124
|
+
'-Wl,-rpath,$(LIBRPATH)' \
|
125
|
+
-O0 -g3 -ggdb3 -gdwarf-5
|
126
|
+
$ make -j4
|
127
|
+
$ make install
|
128
|
+
```
|
129
|
+
|
130
|
+
To print installed OpenSSL version, you can run the following command:
|
131
|
+
|
132
|
+
```
|
133
|
+
$ $OPENSSL_DIR/bin/openssl version
|
134
|
+
OpenSSL 3.2.0-alpha3-dev (Library: OpenSSL 3.2.0-alpha3-dev )
|
135
|
+
```
|
136
|
+
|
137
|
+
Change the current working directory into Ruby OpenSSL's source directory.
|
138
|
+
|
139
|
+
To compile Ruby OpenSSL, you can run the following commands:
|
71
140
|
|
72
|
-
|
141
|
+
Similarly to when installing `openssl` gem via the `gem` command, you can pass a
|
142
|
+
`--with-openssl-dir` argument to `rake compile` to specify the OpenSSL library
|
143
|
+
to build against.
|
144
|
+
|
145
|
+
* `MAKEFLAGS="V=1"`: Enable the compiler command lines to print in
|
146
|
+
the log.
|
147
|
+
* `RUBY_OPENSSL_EXTCFLAGS`: Set extra compiler flags to compile Ruby OpenSSL.
|
148
|
+
|
149
|
+
```
|
73
150
|
$ bundle exec rake clean
|
74
|
-
$
|
151
|
+
$ MAKEFLAGS="V=1" \
|
152
|
+
RUBY_OPENSSL_EXTCFLAGS="-O0 -g3 -ggdb3 -gdwarf-5" \
|
153
|
+
bundle exec rake compile -- --with-openssl-dir=$OPENSSL_DIR
|
154
|
+
```
|
155
|
+
|
156
|
+
#### Testing normally in non-FIPS case
|
157
|
+
|
158
|
+
To test Ruby OpenSSL, you can run the following command:
|
159
|
+
|
160
|
+
```
|
75
161
|
$ bundle exec rake test
|
76
162
|
```
|
77
163
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
164
|
+
#### Testing in FIPS case
|
165
|
+
|
166
|
+
To use OpenSSL 3.0 or later versions in a FIPS-approved manner, you must load the
|
167
|
+
`fips` and `base` providers, and also use the property query `fips=yes`. The
|
168
|
+
property query is used when fetching cryptographic algorithm implementations.
|
169
|
+
This must be done at the startup of a process to avoid implicitly loading the
|
170
|
+
`default` provider which has the non-FIPS cryptographic algorithm
|
171
|
+
implementations. See also the man page [fips_module(7)][OpenSSL fips_module].
|
172
|
+
|
173
|
+
You can set this in your OpenSSL configuration file by either appropriately
|
174
|
+
modifying the default OpenSSL configuration file located at
|
175
|
+
`OpenSSL::Config::DEFAULT_CONFIG_FILE` or temporarily overriding it with the
|
176
|
+
`OPENSSL_CONF` environment variable.
|
177
|
+
|
178
|
+
In this example, we explain on the latter way.
|
179
|
+
|
180
|
+
You can create a OpenSSL FIPS config `openssl_fips.cnf` file based on the
|
181
|
+
`openssl_fips.cnf.tmpl` file in this repository, and replacing the placeholder
|
182
|
+
`OPENSSL_DIR` with your OpenSSL installed directory.
|
183
|
+
|
184
|
+
```
|
185
|
+
$ sed -e "s|OPENSSL_DIR|$OPENSSL_DIR|" tool/openssl_fips.cnf.tmpl | \
|
186
|
+
tee $OPENSSL_DIR/ssl/openssl_fips.cnf
|
187
|
+
```
|
188
|
+
|
189
|
+
You can see the base and fips providers by running the following command if you
|
190
|
+
setup the OpenSSL FIPS config file properly.
|
191
|
+
|
192
|
+
```
|
193
|
+
$ OPENSSL_CONF=$OPENSSL_DIR/ssl/openssl_fips.cnf \
|
194
|
+
$OPENSSL_DIR/bin/openssl list -providers
|
195
|
+
Providers:
|
196
|
+
base
|
197
|
+
name: OpenSSL Base Provider
|
198
|
+
version: 3.2.0
|
199
|
+
status: active
|
200
|
+
fips
|
201
|
+
name: OpenSSL FIPS Provider
|
202
|
+
version: 3.2.0
|
203
|
+
status: active
|
204
|
+
```
|
205
|
+
|
206
|
+
You can run the current tests in the FIPS module case used in the GitHub
|
207
|
+
Actions file `test.yml` explained in a later sentence.
|
208
|
+
|
209
|
+
```
|
210
|
+
$ OPENSSL_CONF=$OPENSSL_DIR/ssl/openssl_fips.cnf \
|
211
|
+
bundle exec rake test_fips
|
212
|
+
```
|
213
|
+
|
214
|
+
You can also run the all the tests in the FIPS module case. You see many
|
215
|
+
failures. We are working in progress to fix the failures. Your contribution is
|
216
|
+
welcome.
|
217
|
+
|
218
|
+
```
|
219
|
+
$ OPENSSL_CONF=$OPENSSL_DIR/ssl/openssl_fips.cnf \
|
220
|
+
TEST_RUBY_OPENSSL_FIPS_ENABLED=true \
|
221
|
+
bundle exec rake test
|
222
|
+
```
|
223
|
+
|
224
|
+
The GitHub Actions workflow file [`test.yml`][GitHub test.yml] contains useful
|
225
|
+
information for building OpenSSL/LibreSSL and testing against them.
|
82
226
|
|
83
227
|
|
84
228
|
## Relation with Ruby source tree
|
@@ -103,7 +247,7 @@ security issue handling procedure for Ruby core.
|
|
103
247
|
|
104
248
|
You can either use [HackerOne] or send an email to security@ruby-lang.org.
|
105
249
|
|
106
|
-
Please see [Security] page on ruby-lang.org website for details.
|
250
|
+
Please see [Security][Ruby Security] page on ruby-lang.org website for details.
|
107
251
|
|
108
252
|
Reported problems will be published after a fix is released.
|
109
253
|
|
@@ -112,9 +256,16 @@ _Thanks for your contributions!_
|
|
112
256
|
_\- The Ruby OpenSSL team_
|
113
257
|
|
114
258
|
[GitHub]: https://github.com/ruby/openssl
|
115
|
-
[
|
116
|
-
[
|
259
|
+
[Issues]: https://github.com/ruby/openssl/issues
|
260
|
+
[Compare changes]: https://github.com/ruby/openssl/compare
|
261
|
+
[GitHub test/openssl]: https://github.com/ruby/openssl/tree/master/test/openssl
|
262
|
+
[GitHub test.yml]: https://github.com/ruby/openssl/tree/master/.github/workflows/test.yml
|
263
|
+
[Ruby Developer-How-To]: https://github.com/ruby/ruby/wiki/Developer-How-To
|
264
|
+
[Ruby Security]: https://www.ruby-lang.org/en/security/
|
117
265
|
[HackerOne]: https://hackerone.com/ruby
|
118
|
-
[
|
119
|
-
[
|
120
|
-
[
|
266
|
+
[OpenSSL]: https://www.openssl.org/
|
267
|
+
[OpenSSL INSTALL]: https://github.com/openssl/openssl/blob/master/INSTALL.md
|
268
|
+
[OpenSSL README-FIPS]: https://github.com/openssl/openssl/blob/master/README-FIPS.md
|
269
|
+
[OpenSSL NOTES-UNIX]: https://github.com/openssl/openssl/blob/master/NOTES-UNIX.md
|
270
|
+
[OpenSSL OSSL_TRACE]: https://www.openssl.org/docs/manmaster/man3/OSSL_TRACE.html
|
271
|
+
[OpenSSL fips_module]: https://www.openssl.org/docs/manmaster/man7/fips_module.html
|
data/History.md
CHANGED
@@ -1,3 +1,85 @@
|
|
1
|
+
Version 3.3.0
|
2
|
+
=============
|
3
|
+
|
4
|
+
Compatibility
|
5
|
+
-------------
|
6
|
+
|
7
|
+
* Ruby version: 2.7 or later
|
8
|
+
* OpenSSL version: OpenSSL 1.0.2 or later, and LibreSSL 3.1 or later
|
9
|
+
|
10
|
+
Notable changes
|
11
|
+
---------------
|
12
|
+
|
13
|
+
* `OpenSSL::SSL`
|
14
|
+
- `OpenSSL::SSL::SSLSocket#set_params` no longer sets `#min_version=` to TLS
|
15
|
+
1.0 except when OpenSSL 1.0.2 is used. This has been done to disable
|
16
|
+
SSL 3.0, which is not supported by default in OpenSSL 1.1.0 or later, or in
|
17
|
+
LibreSSL. This lets it respect the system default if the system-wide
|
18
|
+
configuration file specifies a higher minimum protocol version.
|
19
|
+
[[GitHub #710]](https://github.com/ruby/openssl/pull/710)
|
20
|
+
- `OpenSSL::SSL::SSLSocket.new` no longer enables the `OpenSSL::SSL::OP_ALL`
|
21
|
+
SSL options by default and follows the system default.
|
22
|
+
[[GitHub #767]](https://github.com/ruby/openssl/pull/767)
|
23
|
+
- Add the following IO methods to `OpenSSL::SSL::SSLSocket`, which will pass
|
24
|
+
along to the underlying socket: `#local_address`, `#remote_address`,
|
25
|
+
`#close_on_exec=`, `#close_on_exec?`, `#wait`, `#wait_readable`, and
|
26
|
+
`#wait_writable`.
|
27
|
+
[[GitHub #708]](https://github.com/ruby/openssl/pull/708)
|
28
|
+
- Update `OpenSSL::SSL::SSLSocket#gets` to take the `chomp` keyword argument.
|
29
|
+
[[GitHub #708]](https://github.com/ruby/openssl/pull/708)
|
30
|
+
- Make `OpenSSL::SSL::SSLSocket` respect the `IO#timeout` value of the
|
31
|
+
underlying socket on Ruby 3.2 or later. `#timeout` and `#timeout=` methods
|
32
|
+
are also added.
|
33
|
+
[[GitHub #714]](https://github.com/ruby/openssl/pull/714)
|
34
|
+
- Add `OpenSSL::SSL::SSLSocket#close_read` and `#close_write`.
|
35
|
+
[[GitHub #743]](https://github.com/ruby/openssl/pull/743)
|
36
|
+
- Add `OpenSSL::Digest.digests` to get a list of all available digest
|
37
|
+
algorithms.
|
38
|
+
[[GitHub #726]](https://github.com/ruby/openssl/pull/726)
|
39
|
+
- Fix `OpenSSL::SSL::SSLSocket#read_nonblock` clearing the passed String
|
40
|
+
buffer when nothing can be read from the connection.
|
41
|
+
[[GitHub #739]](https://github.com/ruby/openssl/pull/739)
|
42
|
+
* Add `#to_text` methods to `OpenSSL::Timestamp::Response`,
|
43
|
+
`OpenSSL::Timestamp::Request`, `OpenSSL::Timestamp::TokenInfo`, and
|
44
|
+
`OpenSSL::PKCS7` to get a human-readable representation of the object.
|
45
|
+
[[GitHub #756]](https://github.com/ruby/openssl/pull/756)
|
46
|
+
* Add `OpenSSL::X509::Certificate#tbs_bytes` to get the DER encoding of the
|
47
|
+
TBSCertificate.
|
48
|
+
[[GitHub #753]](https://github.com/ruby/openssl/pull/753)
|
49
|
+
* Allow passing `nil` as the digest algorithm to `#sign` methods on
|
50
|
+
`OpenSSL::X509::Certificate`, `OpenSSL::X509::Request`, and
|
51
|
+
`OpenSSL::X509::CRL`. This adds supports for signing with EdDSA keys.
|
52
|
+
[[GitHub #761]](https://github.com/ruby/openssl/pull/761)
|
53
|
+
[[GitHub #804]](https://github.com/ruby/openssl/pull/804)
|
54
|
+
* Add `OpenSSL::SSL::SSLSocket#readbyte`.
|
55
|
+
[[GitHub #771]](https://github.com/ruby/openssl/pull/771)
|
56
|
+
* Change `OpenSSL::X509::Store#time=` to set the time to the `X509_VERIFY_PARAM`
|
57
|
+
in the `X509_STORE`. This allows `OpenSSL::Timestamp::Response#verify` to
|
58
|
+
verify a signature with the specified timestamp.
|
59
|
+
[[GitHub #770]](https://github.com/ruby/openssl/pull/770)
|
60
|
+
* Make `OpenSSL::PKCS7.encrypt`'s third parameter `cipher` mandatory. It had
|
61
|
+
an undocumented default value "RC2-40-CBC", which is not only insecure, but
|
62
|
+
also not supported in OpenSSL 3.0 or later.
|
63
|
+
[[GitHub #796]](https://github.com/ruby/openssl/pull/796)
|
64
|
+
* Make `OpenSSL::BN` shareable between ractors when frozen.
|
65
|
+
[[GitHub #808]](https://github.com/ruby/openssl/pull/808)
|
66
|
+
* Make `OpenSSL::Config` instances frozen by default, and make it shareable
|
67
|
+
between ractors. `OpenSSL::Config::DEFAULT_CONFIG_FILE` is also frozen.
|
68
|
+
[[GitHub #809]](https://github.com/ruby/openssl/pull/809)
|
69
|
+
* Add `OpenSSL::PKCS12#set_mac` to configure the MAC parameters and recalculate
|
70
|
+
a MAC for the content.
|
71
|
+
[[GitHub #788]](https://github.com/ruby/openssl/pull/788)
|
72
|
+
|
73
|
+
And various non-user-visible changes and bug fixes. Please see the commit
|
74
|
+
history for more details.
|
75
|
+
|
76
|
+
|
77
|
+
Version 3.2.1
|
78
|
+
=============
|
79
|
+
|
80
|
+
Merged changes in 3.0.3.
|
81
|
+
|
82
|
+
|
1
83
|
Version 3.2.0
|
2
84
|
=============
|
3
85
|
|
@@ -38,6 +120,12 @@ Notable changes
|
|
38
120
|
[[GitHub #141]](https://github.com/ruby/openssl/pull/141)
|
39
121
|
|
40
122
|
|
123
|
+
Version 3.1.1
|
124
|
+
=============
|
125
|
+
|
126
|
+
Merged changes in 3.0.3.
|
127
|
+
|
128
|
+
|
41
129
|
Version 3.1.0
|
42
130
|
=============
|
43
131
|
|
@@ -74,6 +162,31 @@ Notable changes
|
|
74
162
|
LibreSSL 3.6 and Ed25519 support in LibreSSL 3.7.
|
75
163
|
|
76
164
|
|
165
|
+
Version 3.0.3
|
166
|
+
=============
|
167
|
+
|
168
|
+
Bug fixes
|
169
|
+
---------
|
170
|
+
|
171
|
+
* Fix a performance regression introduced in v2.1.3 on a buffered write to
|
172
|
+
`SSLSocket`.
|
173
|
+
[[GitHub #706]](https://github.com/ruby/openssl/pull/706)
|
174
|
+
* Fix `OpenSSL::PKCS7` to handle PKCS#7 structures without content.
|
175
|
+
[[GitHub #690]](https://github.com/ruby/openssl/pull/690)
|
176
|
+
[[GitHub #752]](https://github.com/ruby/openssl/pull/752)
|
177
|
+
* Fix `OpenSSL::ASN1::ObjectId#==` with OIDs without a known name.
|
178
|
+
[[GitHub #791]](https://github.com/ruby/openssl/issues/791)
|
179
|
+
[[GitHub #792]](https://github.com/ruby/openssl/pull/792)
|
180
|
+
* Fix `OpenSSL::X509::Certificate#crl_uris` to handle CDP with multiple CRL
|
181
|
+
URIs.
|
182
|
+
[[GitHub #775]](https://github.com/ruby/openssl/issues/775)
|
183
|
+
[[GitHub #776]](https://github.com/ruby/openssl/pull/776)
|
184
|
+
* Fix `OpenSSL::Cipher#update` to always make the output buffer `String`
|
185
|
+
independent.
|
186
|
+
[[Bug #20937]](https://bugs.ruby-lang.org/issues/20937)
|
187
|
+
[[GitHub #824]](https://github.com/ruby/openssl/pull/824)
|
188
|
+
|
189
|
+
|
77
190
|
Version 3.0.2
|
78
191
|
=============
|
79
192
|
|
@@ -457,7 +570,7 @@ Security fixes
|
|
457
570
|
Bug fixes
|
458
571
|
---------
|
459
572
|
|
460
|
-
* Fixed OpenSSL::PKey
|
573
|
+
* Fixed OpenSSL::PKey::\*.{new,generate} immediately aborting if the thread is
|
461
574
|
interrupted.
|
462
575
|
[[Bug #14882]](https://bugs.ruby-lang.org/issues/14882)
|
463
576
|
[[GitHub #205]](https://github.com/ruby/openssl/pull/205)
|
data/README.md
CHANGED
@@ -18,10 +18,11 @@ included as a default gem in [supported Ruby branches][Ruby Maintenance Branches
|
|
18
18
|
|
19
19
|
|Version|Maintenance status |Ruby compatibility|OpenSSL compatibility |
|
20
20
|
|-------|-------------------------------|------------------|--------------------------------------------|
|
21
|
-
|3.
|
22
|
-
|3.
|
23
|
-
|3.
|
24
|
-
|
|
21
|
+
|3.3.x |normal maintenance (Ruby 3.4) |Ruby 2.7+ |OpenSSL 1.0.2-3.4 (current) or LibreSSL 3.1+|
|
22
|
+
|3.2.x |normal maintenance (Ruby 3.3) |Ruby 2.7+ |OpenSSL 1.0.2-3.4 (current) or LibreSSL 3.1+|
|
23
|
+
|3.1.x |normal maintenance (Ruby 3.2) |Ruby 2.6+ |OpenSSL 1.0.2-3.4 (current) or LibreSSL 3.1+|
|
24
|
+
|3.0.x |security maintenance (Ruby 3.1)|Ruby 2.6+ |OpenSSL 1.0.2-3.4 (current) or LibreSSL 3.1+|
|
25
|
+
|2.2.x |end-of-life (Ruby 3.0) |Ruby 2.3+ |OpenSSL 1.0.1-1.1.1 or LibreSSL 2.9+ |
|
25
26
|
|2.1.x |end-of-life (Ruby 2.5-2.7) |Ruby 2.3+ |OpenSSL 1.0.1-1.1.1 or LibreSSL 2.5+ |
|
26
27
|
|2.0.x |end-of-life (Ruby 2.4) |Ruby 2.3+ |OpenSSL 0.9.8-1.1.1 or LibreSSL 2.3+ |
|
27
28
|
|
@@ -32,8 +33,7 @@ included as a default gem in [supported Ruby branches][Ruby Maintenance Branches
|
|
32
33
|
|
33
34
|
> **Note**
|
34
35
|
> The openssl gem is included with Ruby by default, but you may wish to upgrade
|
35
|
-
> it to a newer version available at
|
36
|
-
> [rubygems.org](https://rubygems.org/gems/openssl).
|
36
|
+
> it to a newer version available at [rubygems.org][RubyGems.org openssl].
|
37
37
|
|
38
38
|
To upgrade it, you can use RubyGems:
|
39
39
|
|
@@ -59,6 +59,8 @@ gem 'openssl', git: 'https://github.com/ruby/openssl'
|
|
59
59
|
|
60
60
|
After running `bundle install`, you should have the gem installed in your bundle.
|
61
61
|
|
62
|
+
[RubyGems.org openssl]: https://rubygems.org/gems/openssl
|
63
|
+
|
62
64
|
## Usage
|
63
65
|
|
64
66
|
Once installed, you can require "openssl" in your application.
|
@@ -80,4 +82,6 @@ Please read our [CONTRIBUTING.md] for instructions.
|
|
80
82
|
## Security
|
81
83
|
|
82
84
|
Security issues should be reported to ruby-core by following the process
|
83
|
-
described on ["Security at ruby-lang.org"]
|
85
|
+
described on ["Security at ruby-lang.org"][Security].
|
86
|
+
|
87
|
+
[Security]: https://www.ruby-lang.org/en/security/
|
data/ext/openssl/extconf.rb
CHANGED
@@ -8,19 +8,12 @@
|
|
8
8
|
|
9
9
|
= Licence
|
10
10
|
This program is licensed under the same licence as Ruby.
|
11
|
-
(See the file '
|
11
|
+
(See the file 'COPYING'.)
|
12
12
|
=end
|
13
13
|
|
14
14
|
require "mkmf"
|
15
15
|
|
16
|
-
ssl_dirs =
|
17
|
-
if defined?(::TruffleRuby)
|
18
|
-
# Always respect the openssl prefix chosen by truffle/openssl-prefix
|
19
|
-
require 'truffle/openssl-prefix'
|
20
|
-
ssl_dirs = dir_config("openssl", ENV["OPENSSL_PREFIX"])
|
21
|
-
else
|
22
|
-
ssl_dirs = dir_config("openssl")
|
23
|
-
end
|
16
|
+
ssl_dirs = dir_config("openssl")
|
24
17
|
dir_config_given = ssl_dirs.any?
|
25
18
|
|
26
19
|
_, ssl_ldir = ssl_dirs
|
@@ -49,6 +42,7 @@ $defs.push("-D""OPENSSL_SUPPRESS_DEPRECATED")
|
|
49
42
|
|
50
43
|
have_func("rb_io_descriptor")
|
51
44
|
have_func("rb_io_maybe_wait(0, Qnil, Qnil, Qnil)", "ruby/io.h") # Ruby 3.1
|
45
|
+
have_func("rb_io_timeout", "ruby/io.h")
|
52
46
|
|
53
47
|
Logging::message "=== Checking for system dependent stuff... ===\n"
|
54
48
|
have_library("nsl", "t_open")
|
@@ -155,6 +149,9 @@ engines.each { |name|
|
|
155
149
|
have_func("ENGINE_load_#{name}()", "openssl/engine.h")
|
156
150
|
}
|
157
151
|
|
152
|
+
# missing in libressl < 3.5
|
153
|
+
have_func("i2d_re_X509_tbs(NULL, NULL)", x509_h)
|
154
|
+
|
158
155
|
# added in 1.1.0
|
159
156
|
if !have_struct_member("SSL", "ctx", "openssl/ssl.h") || is_libressl
|
160
157
|
$defs.push("-DHAVE_OPAQUE_OPENSSL")
|
@@ -193,6 +190,7 @@ have_func("TS_VERIFY_CTX_add_flags(NULL, 0)", ts_h)
|
|
193
190
|
have_func("TS_RESP_CTX_set_time_cb(NULL, NULL, NULL)", ts_h)
|
194
191
|
have_func("EVP_PBE_scrypt(\"\", 0, (unsigned char *)\"\", 0, 0, 0, 0, 0, NULL, 0)", evp_h)
|
195
192
|
have_func("SSL_CTX_set_post_handshake_auth(NULL, 0)", ssl_h)
|
193
|
+
have_func("X509_STORE_get0_param(NULL)", x509_h)
|
196
194
|
|
197
195
|
# added in 1.1.1
|
198
196
|
have_func("EVP_PKEY_check(NULL)", evp_h)
|
data/ext/openssl/ossl.c
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
*/
|
6
6
|
/*
|
7
7
|
* This program is licensed under the same licence as Ruby.
|
8
|
-
* (See the file '
|
8
|
+
* (See the file 'COPYING'.)
|
9
9
|
*/
|
10
10
|
#include "ossl.h"
|
11
11
|
#include <stdarg.h> /* for ossl_raise */
|
@@ -355,7 +355,7 @@ ossl_clear_error(void)
|
|
355
355
|
* Any errors you see here are probably due to a bug in Ruby's OpenSSL
|
356
356
|
* implementation.
|
357
357
|
*/
|
358
|
-
VALUE
|
358
|
+
static VALUE
|
359
359
|
ossl_get_errors(VALUE _)
|
360
360
|
{
|
361
361
|
VALUE ary;
|
@@ -1150,24 +1150,22 @@ Init_openssl(void)
|
|
1150
1150
|
/*
|
1151
1151
|
* Init components
|
1152
1152
|
*/
|
1153
|
+
Init_ossl_asn1();
|
1153
1154
|
Init_ossl_bn();
|
1154
1155
|
Init_ossl_cipher();
|
1155
1156
|
Init_ossl_config();
|
1156
1157
|
Init_ossl_digest();
|
1158
|
+
Init_ossl_engine();
|
1157
1159
|
Init_ossl_hmac();
|
1160
|
+
Init_ossl_kdf();
|
1158
1161
|
Init_ossl_ns_spki();
|
1162
|
+
Init_ossl_ocsp();
|
1159
1163
|
Init_ossl_pkcs12();
|
1160
1164
|
Init_ossl_pkcs7();
|
1161
1165
|
Init_ossl_pkey();
|
1166
|
+
Init_ossl_provider();
|
1162
1167
|
Init_ossl_rand();
|
1163
1168
|
Init_ossl_ssl();
|
1164
|
-
#ifndef OPENSSL_NO_TS
|
1165
1169
|
Init_ossl_ts();
|
1166
|
-
#endif
|
1167
1170
|
Init_ossl_x509();
|
1168
|
-
Init_ossl_ocsp();
|
1169
|
-
Init_ossl_engine();
|
1170
|
-
Init_ossl_provider();
|
1171
|
-
Init_ossl_asn1();
|
1172
|
-
Init_ossl_kdf();
|
1173
1171
|
}
|
data/ext/openssl/ossl.h
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
*/
|
6
6
|
/*
|
7
7
|
* This program is licensed under the same licence as Ruby.
|
8
|
-
* (See the file '
|
8
|
+
* (See the file 'COPYING'.)
|
9
9
|
*/
|
10
10
|
#if !defined(_OSSL_H_)
|
11
11
|
#define _OSSL_H_
|
@@ -17,6 +17,12 @@
|
|
17
17
|
#include <errno.h>
|
18
18
|
#include <ruby/io.h>
|
19
19
|
#include <ruby/thread.h>
|
20
|
+
#ifdef HAVE_RUBY_RACTOR_H
|
21
|
+
#include <ruby/ractor.h>
|
22
|
+
#else
|
23
|
+
#define RUBY_TYPED_FROZEN_SHAREABLE 0
|
24
|
+
#endif
|
25
|
+
|
20
26
|
#include <openssl/opensslv.h>
|
21
27
|
|
22
28
|
#include <openssl/err.h>
|
@@ -39,6 +45,7 @@
|
|
39
45
|
#include <openssl/dsa.h>
|
40
46
|
#include <openssl/evp.h>
|
41
47
|
#include <openssl/dh.h>
|
48
|
+
#include "openssl_missing.h"
|
42
49
|
|
43
50
|
#ifndef LIBRESSL_VERSION_NUMBER
|
44
51
|
# define OSSL_IS_LIBRESSL 0
|
@@ -172,28 +179,25 @@ extern VALUE dOSSL;
|
|
172
179
|
/*
|
173
180
|
* Include all parts
|
174
181
|
*/
|
175
|
-
#include "openssl_missing.h"
|
176
182
|
#include "ossl_asn1.h"
|
177
183
|
#include "ossl_bio.h"
|
178
184
|
#include "ossl_bn.h"
|
179
185
|
#include "ossl_cipher.h"
|
180
186
|
#include "ossl_config.h"
|
181
187
|
#include "ossl_digest.h"
|
188
|
+
#include "ossl_engine.h"
|
182
189
|
#include "ossl_hmac.h"
|
190
|
+
#include "ossl_kdf.h"
|
183
191
|
#include "ossl_ns_spki.h"
|
184
192
|
#include "ossl_ocsp.h"
|
185
193
|
#include "ossl_pkcs12.h"
|
186
194
|
#include "ossl_pkcs7.h"
|
187
195
|
#include "ossl_pkey.h"
|
196
|
+
#include "ossl_provider.h"
|
188
197
|
#include "ossl_rand.h"
|
189
198
|
#include "ossl_ssl.h"
|
190
|
-
#
|
191
|
-
#include "ossl_ts.h"
|
192
|
-
#endif
|
199
|
+
#include "ossl_ts.h"
|
193
200
|
#include "ossl_x509.h"
|
194
|
-
#include "ossl_engine.h"
|
195
|
-
#include "ossl_provider.h"
|
196
|
-
#include "ossl_kdf.h"
|
197
201
|
|
198
202
|
void Init_openssl(void);
|
199
203
|
|