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 
     | 
    
         |