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
 
    
        data/lib/openssl/asn1.rb
    ADDED
    
    | 
         @@ -0,0 +1,188 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
            #--
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # = Ruby-space definitions that completes C-space funcs for ASN.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # = Licence
         
     | 
| 
      
 7 
     | 
    
         
            +
            # This program is licensed under the same licence as Ruby.
         
     | 
| 
      
 8 
     | 
    
         
            +
            # (See the file 'COPYING'.)
         
     | 
| 
      
 9 
     | 
    
         
            +
            #++
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            module OpenSSL
         
     | 
| 
      
 12 
     | 
    
         
            +
              module ASN1
         
     | 
| 
      
 13 
     | 
    
         
            +
                class ASN1Data
         
     | 
| 
      
 14 
     | 
    
         
            +
                  #
         
     | 
| 
      
 15 
     | 
    
         
            +
                  # Carries the value of a ASN.1 type.
         
     | 
| 
      
 16 
     | 
    
         
            +
                  # Please confer Constructive and Primitive for the mappings between
         
     | 
| 
      
 17 
     | 
    
         
            +
                  # ASN.1 data types and Ruby classes.
         
     | 
| 
      
 18 
     | 
    
         
            +
                  #
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attr_accessor :value
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  # An Integer representing the tag number of this ASN1Data. Never +nil+.
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attr_accessor :tag
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  # A Symbol representing the tag class of this ASN1Data. Never +nil+.
         
     | 
| 
      
 25 
     | 
    
         
            +
                  # See ASN1Data for possible values.
         
     | 
| 
      
 26 
     | 
    
         
            +
                  attr_accessor :tag_class
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  #
         
     | 
| 
      
 29 
     | 
    
         
            +
                  # Never +nil+. A boolean value indicating whether the encoding uses
         
     | 
| 
      
 30 
     | 
    
         
            +
                  # indefinite length (in the case of parsing) or whether an indefinite
         
     | 
| 
      
 31 
     | 
    
         
            +
                  # length form shall be used (in the encoding case).
         
     | 
| 
      
 32 
     | 
    
         
            +
                  # In DER, every value uses definite length form. But in scenarios where
         
     | 
| 
      
 33 
     | 
    
         
            +
                  # large amounts of data need to be transferred it might be desirable to
         
     | 
| 
      
 34 
     | 
    
         
            +
                  # have some kind of streaming support available.
         
     | 
| 
      
 35 
     | 
    
         
            +
                  # For example, huge OCTET STRINGs are preferably sent in smaller-sized
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # chunks, each at a time.
         
     | 
| 
      
 37 
     | 
    
         
            +
                  # This is possible in BER by setting the length bytes of an encoding
         
     | 
| 
      
 38 
     | 
    
         
            +
                  # to zero and by this indicating that the following value will be
         
     | 
| 
      
 39 
     | 
    
         
            +
                  # sent in chunks. Indefinite length encodings are always constructed.
         
     | 
| 
      
 40 
     | 
    
         
            +
                  # The end of such a stream of chunks is indicated by sending a EOC
         
     | 
| 
      
 41 
     | 
    
         
            +
                  # (End of Content) tag. SETs and SEQUENCEs may use an indefinite length
         
     | 
| 
      
 42 
     | 
    
         
            +
                  # encoding, but also primitive types such as e.g. OCTET STRINGS or
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # BIT STRINGS may leverage this functionality (cf. ITU-T X.690).
         
     | 
| 
      
 44 
     | 
    
         
            +
                  #
         
     | 
| 
      
 45 
     | 
    
         
            +
                  attr_accessor :indefinite_length
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  alias infinite_length indefinite_length
         
     | 
| 
      
 48 
     | 
    
         
            +
                  alias infinite_length= indefinite_length=
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  #
         
     | 
| 
      
 51 
     | 
    
         
            +
                  # :call-seq:
         
     | 
| 
      
 52 
     | 
    
         
            +
                  #    OpenSSL::ASN1::ASN1Data.new(value, tag, tag_class) => ASN1Data
         
     | 
| 
      
 53 
     | 
    
         
            +
                  #
         
     | 
| 
      
 54 
     | 
    
         
            +
                  # _value_: Please have a look at Constructive and Primitive to see how Ruby
         
     | 
| 
      
 55 
     | 
    
         
            +
                  # types are mapped to ASN.1 types and vice versa.
         
     | 
| 
      
 56 
     | 
    
         
            +
                  #
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # _tag_: An Integer indicating the tag number.
         
     | 
| 
      
 58 
     | 
    
         
            +
                  #
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # _tag_class_: A Symbol indicating the tag class. Please cf. ASN1 for
         
     | 
| 
      
 60 
     | 
    
         
            +
                  # possible values.
         
     | 
| 
      
 61 
     | 
    
         
            +
                  #
         
     | 
| 
      
 62 
     | 
    
         
            +
                  # == Example
         
     | 
| 
      
 63 
     | 
    
         
            +
                  #   asn1_int = OpenSSL::ASN1Data.new(42, 2, :UNIVERSAL) # => Same as OpenSSL::ASN1::Integer.new(42)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  #   tagged_int = OpenSSL::ASN1Data.new(42, 0, :CONTEXT_SPECIFIC) # implicitly 0-tagged INTEGER
         
     | 
| 
      
 65 
     | 
    
         
            +
                  #
         
     | 
| 
      
 66 
     | 
    
         
            +
                  def initialize(value, tag, tag_class)
         
     | 
| 
      
 67 
     | 
    
         
            +
                    raise ASN1Error, "invalid tag class" unless tag_class.is_a?(Symbol)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    @tag = tag
         
     | 
| 
      
 70 
     | 
    
         
            +
                    @value = value
         
     | 
| 
      
 71 
     | 
    
         
            +
                    @tag_class = tag_class
         
     | 
| 
      
 72 
     | 
    
         
            +
                    @indefinite_length = false
         
     | 
| 
      
 73 
     | 
    
         
            +
                  end
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                module TaggedASN1Data
         
     | 
| 
      
 77 
     | 
    
         
            +
                  #
         
     | 
| 
      
 78 
     | 
    
         
            +
                  # May be used as a hint for encoding a value either implicitly or
         
     | 
| 
      
 79 
     | 
    
         
            +
                  # explicitly by setting it either to +:IMPLICIT+ or to +:EXPLICIT+.
         
     | 
| 
      
 80 
     | 
    
         
            +
                  # _tagging_ is not set when a ASN.1 structure is parsed using
         
     | 
| 
      
 81 
     | 
    
         
            +
                  # OpenSSL::ASN1.decode.
         
     | 
| 
      
 82 
     | 
    
         
            +
                  #
         
     | 
| 
      
 83 
     | 
    
         
            +
                  attr_accessor :tagging
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                  # :call-seq:
         
     | 
| 
      
 86 
     | 
    
         
            +
                  #    OpenSSL::ASN1::Primitive.new(value [, tag, tagging, tag_class ]) => Primitive
         
     | 
| 
      
 87 
     | 
    
         
            +
                  #
         
     | 
| 
      
 88 
     | 
    
         
            +
                  # _value_: is mandatory.
         
     | 
| 
      
 89 
     | 
    
         
            +
                  #
         
     | 
| 
      
 90 
     | 
    
         
            +
                  # _tag_: optional, may be specified for tagged values. If no _tag_ is
         
     | 
| 
      
 91 
     | 
    
         
            +
                  # specified, the UNIVERSAL tag corresponding to the Primitive sub-class
         
     | 
| 
      
 92 
     | 
    
         
            +
                  # is used by default.
         
     | 
| 
      
 93 
     | 
    
         
            +
                  #
         
     | 
| 
      
 94 
     | 
    
         
            +
                  # _tagging_: may be used as an encoding hint to encode a value either
         
     | 
| 
      
 95 
     | 
    
         
            +
                  # explicitly or implicitly, see ASN1 for possible values.
         
     | 
| 
      
 96 
     | 
    
         
            +
                  #
         
     | 
| 
      
 97 
     | 
    
         
            +
                  # _tag_class_: if _tag_ and _tagging_ are +nil+ then this is set to
         
     | 
| 
      
 98 
     | 
    
         
            +
                  # +:UNIVERSAL+ by default. If either _tag_ or _tagging_ are set then
         
     | 
| 
      
 99 
     | 
    
         
            +
                  # +:CONTEXT_SPECIFIC+ is used as the default. For possible values please
         
     | 
| 
      
 100 
     | 
    
         
            +
                  # cf. ASN1.
         
     | 
| 
      
 101 
     | 
    
         
            +
                  #
         
     | 
| 
      
 102 
     | 
    
         
            +
                  # == Example
         
     | 
| 
      
 103 
     | 
    
         
            +
                  #   int = OpenSSL::ASN1::Integer.new(42)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  #   zero_tagged_int = OpenSSL::ASN1::Integer.new(42, 0, :IMPLICIT)
         
     | 
| 
      
 105 
     | 
    
         
            +
                  #   private_explicit_zero_tagged_int = OpenSSL::ASN1::Integer.new(42, 0, :EXPLICIT, :PRIVATE)
         
     | 
| 
      
 106 
     | 
    
         
            +
                  #
         
     | 
| 
      
 107 
     | 
    
         
            +
                  def initialize(value, tag = nil, tagging = nil, tag_class = nil)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    tag ||= ASN1.take_default_tag(self.class)
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                    raise ASN1Error, "must specify tag number" unless tag
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                    if tagging
         
     | 
| 
      
 113 
     | 
    
         
            +
                      raise ASN1Error, "invalid tagging method" unless tagging.is_a?(Symbol)
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                    tag_class ||= tagging ? :CONTEXT_SPECIFIC : :UNIVERSAL
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                    raise ASN1Error, "invalid tag class" unless tag_class.is_a?(Symbol)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                    @tagging = tagging
         
     | 
| 
      
 121 
     | 
    
         
            +
                    super(value ,tag, tag_class)
         
     | 
| 
      
 122 
     | 
    
         
            +
                  end
         
     | 
| 
      
 123 
     | 
    
         
            +
                end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                class Primitive < ASN1Data
         
     | 
| 
      
 126 
     | 
    
         
            +
                  include TaggedASN1Data
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                  undef_method :indefinite_length=
         
     | 
| 
      
 129 
     | 
    
         
            +
                  undef_method :infinite_length=
         
     | 
| 
      
 130 
     | 
    
         
            +
                end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                class Constructive < ASN1Data
         
     | 
| 
      
 133 
     | 
    
         
            +
                  include TaggedASN1Data
         
     | 
| 
      
 134 
     | 
    
         
            +
                  include Enumerable
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                  # :call-seq:
         
     | 
| 
      
 137 
     | 
    
         
            +
                  #    asn1_ary.each { |asn1| block } => asn1_ary
         
     | 
| 
      
 138 
     | 
    
         
            +
                  #
         
     | 
| 
      
 139 
     | 
    
         
            +
                  # Calls the given block once for each element in self, passing that element
         
     | 
| 
      
 140 
     | 
    
         
            +
                  # as parameter _asn1_. If no block is given, an enumerator is returned
         
     | 
| 
      
 141 
     | 
    
         
            +
                  # instead.
         
     | 
| 
      
 142 
     | 
    
         
            +
                  #
         
     | 
| 
      
 143 
     | 
    
         
            +
                  # == Example
         
     | 
| 
      
 144 
     | 
    
         
            +
                  #   asn1_ary.each do |asn1|
         
     | 
| 
      
 145 
     | 
    
         
            +
                  #     puts asn1
         
     | 
| 
      
 146 
     | 
    
         
            +
                  #   end
         
     | 
| 
      
 147 
     | 
    
         
            +
                  #
         
     | 
| 
      
 148 
     | 
    
         
            +
                  def each(&blk)
         
     | 
| 
      
 149 
     | 
    
         
            +
                    @value.each(&blk)
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                    self
         
     | 
| 
      
 152 
     | 
    
         
            +
                  end
         
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                class Boolean < Primitive ; end
         
     | 
| 
      
 156 
     | 
    
         
            +
                class Integer < Primitive ; end
         
     | 
| 
      
 157 
     | 
    
         
            +
                class Enumerated < Primitive ; end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                class BitString < Primitive
         
     | 
| 
      
 160 
     | 
    
         
            +
                  attr_accessor :unused_bits
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                  def initialize(*)
         
     | 
| 
      
 163 
     | 
    
         
            +
                    super
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
                    @unused_bits = 0
         
     | 
| 
      
 166 
     | 
    
         
            +
                  end
         
     | 
| 
      
 167 
     | 
    
         
            +
                end
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
                class EndOfContent < ASN1Data
         
     | 
| 
      
 170 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 171 
     | 
    
         
            +
                    super("", 0, :UNIVERSAL)
         
     | 
| 
      
 172 
     | 
    
         
            +
                  end
         
     | 
| 
      
 173 
     | 
    
         
            +
                end
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
                # :nodoc:
         
     | 
| 
      
 176 
     | 
    
         
            +
                def self.take_default_tag(klass)
         
     | 
| 
      
 177 
     | 
    
         
            +
                  tag = CLASS_TAG_MAP[klass]
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                  return tag if tag
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
                  sklass = klass.superclass
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                  return unless sklass
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                  take_default_tag(sklass)
         
     | 
| 
      
 186 
     | 
    
         
            +
                end
         
     | 
| 
      
 187 
     | 
    
         
            +
              end
         
     | 
| 
      
 188 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/openssl/bn.rb
    CHANGED
    
    
    
        data/lib/openssl/buffering.rb
    CHANGED
    
    | 
         @@ -8,7 +8,7 @@ 
     | 
|
| 
       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 
     | 
    
         
             
            #++
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            ##
         
     | 
| 
         @@ -107,6 +107,12 @@ module OpenSSL::Buffering 
     | 
|
| 
       107 
107 
     | 
    
         
             
                read(1)&.ord
         
     | 
| 
       108 
108 
     | 
    
         
             
              end
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
      
 110 
     | 
    
         
            +
              # Get the next 8bit byte. Raises EOFError on EOF
         
     | 
| 
      
 111 
     | 
    
         
            +
              def readbyte
         
     | 
| 
      
 112 
     | 
    
         
            +
                raise EOFError if eof?
         
     | 
| 
      
 113 
     | 
    
         
            +
                getbyte
         
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       110 
116 
     | 
    
         
             
              ##
         
     | 
| 
       111 
117 
     | 
    
         
             
              # Reads _size_ bytes from the stream.  If _buf_ is provided it must
         
     | 
| 
       112 
118 
     | 
    
         
             
              # reference a string which will receive the data.
         
     | 
| 
         @@ -229,7 +235,7 @@ module OpenSSL::Buffering 
     | 
|
| 
       229 
235 
     | 
    
         
             
              #
         
     | 
| 
       230 
236 
     | 
    
         
             
              # Unlike IO#gets the separator must be provided if a limit is provided.
         
     | 
| 
       231 
237 
     | 
    
         | 
| 
       232 
     | 
    
         
            -
              def gets(eol=$/, limit=nil)
         
     | 
| 
      
 238 
     | 
    
         
            +
              def gets(eol=$/, limit=nil, chomp: false)
         
     | 
| 
       233 
239 
     | 
    
         
             
                idx = @rbuffer.index(eol)
         
     | 
| 
       234 
240 
     | 
    
         
             
                until @eof
         
     | 
| 
       235 
241 
     | 
    
         
             
                  break if idx
         
     | 
| 
         @@ -244,7 +250,11 @@ module OpenSSL::Buffering 
     | 
|
| 
       244 
250 
     | 
    
         
             
                if size && limit && limit >= 0
         
     | 
| 
       245 
251 
     | 
    
         
             
                  size = [size, limit].min
         
     | 
| 
       246 
252 
     | 
    
         
             
                end
         
     | 
| 
       247 
     | 
    
         
            -
                consume_rbuff(size)
         
     | 
| 
      
 253 
     | 
    
         
            +
                line = consume_rbuff(size)
         
     | 
| 
      
 254 
     | 
    
         
            +
                if chomp && line
         
     | 
| 
      
 255 
     | 
    
         
            +
                  line.chomp!(eol)
         
     | 
| 
      
 256 
     | 
    
         
            +
                end
         
     | 
| 
      
 257 
     | 
    
         
            +
                line
         
     | 
| 
       248 
258 
     | 
    
         
             
              end
         
     | 
| 
       249 
259 
     | 
    
         | 
| 
       250 
260 
     | 
    
         
             
              ##
         
     | 
| 
         @@ -345,13 +355,18 @@ module OpenSSL::Buffering 
     | 
|
| 
       345 
355 
     | 
    
         
             
                @wbuffer << s
         
     | 
| 
       346 
356 
     | 
    
         
             
                @wbuffer.force_encoding(Encoding::BINARY)
         
     | 
| 
       347 
357 
     | 
    
         
             
                @sync ||= false
         
     | 
| 
       348 
     | 
    
         
            -
                 
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
             
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
                     
     | 
| 
       353 
     | 
    
         
            -
                       
     | 
| 
      
 358 
     | 
    
         
            +
                buffer_size = @wbuffer.size
         
     | 
| 
      
 359 
     | 
    
         
            +
                if @sync or buffer_size > BLOCK_SIZE
         
     | 
| 
      
 360 
     | 
    
         
            +
                  nwrote = 0
         
     | 
| 
      
 361 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 362 
     | 
    
         
            +
                    while nwrote < buffer_size do
         
     | 
| 
      
 363 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 364 
     | 
    
         
            +
                        nwrote += syswrite(@wbuffer[nwrote, buffer_size - nwrote])
         
     | 
| 
      
 365 
     | 
    
         
            +
                      rescue Errno::EAGAIN
         
     | 
| 
      
 366 
     | 
    
         
            +
                        retry
         
     | 
| 
      
 367 
     | 
    
         
            +
                      end
         
     | 
| 
       354 
368 
     | 
    
         
             
                    end
         
     | 
| 
      
 369 
     | 
    
         
            +
                  ensure
         
     | 
| 
       355 
370 
     | 
    
         
             
                    @wbuffer[0, nwrote] = ""
         
     | 
| 
       356 
371 
     | 
    
         
             
                  end
         
     | 
| 
       357 
372 
     | 
    
         
             
                end
         
     | 
    
        data/lib/openssl/cipher.rb
    CHANGED
    
    
    
        data/lib/openssl/digest.rb
    CHANGED
    
    
    
        data/lib/openssl/marshal.rb
    CHANGED
    
    
    
        data/lib/openssl/ssl.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            = Licence
         
     | 
| 
       9 
9 
     | 
    
         
             
              This program is licensed under the same licence as Ruby.
         
     | 
| 
       10 
     | 
    
         
            -
              (See the file ' 
     | 
| 
      
 10 
     | 
    
         
            +
              (See the file 'COPYING'.)
         
     | 
| 
       11 
11 
     | 
    
         
             
            =end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            require "openssl/buffering"
         
     | 
| 
         @@ -22,7 +22,6 @@ module OpenSSL 
     | 
|
| 
       22 
22 
     | 
    
         
             
              module SSL
         
     | 
| 
       23 
23 
     | 
    
         
             
                class SSLContext
         
     | 
| 
       24 
24 
     | 
    
         
             
                  DEFAULT_PARAMS = { # :nodoc:
         
     | 
| 
       25 
     | 
    
         
            -
                    :min_version => OpenSSL::SSL::TLS1_VERSION,
         
     | 
| 
       26 
25 
     | 
    
         
             
                    :verify_mode => OpenSSL::SSL::VERIFY_PEER,
         
     | 
| 
       27 
26 
     | 
    
         
             
                    :verify_hostname => true,
         
     | 
| 
       28 
27 
     | 
    
         
             
                    :options => -> {
         
     | 
| 
         @@ -55,6 +54,7 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       55 
54 
     | 
    
         
             
                  if !(OpenSSL::OPENSSL_VERSION.start_with?("OpenSSL") &&
         
     | 
| 
       56 
55 
     | 
    
         
             
                       OpenSSL::OPENSSL_VERSION_NUMBER >= 0x10100000)
         
     | 
| 
       57 
56 
     | 
    
         
             
                    DEFAULT_PARAMS.merge!(
         
     | 
| 
      
 57 
     | 
    
         
            +
                      min_version: OpenSSL::SSL::TLS1_VERSION,
         
     | 
| 
       58 
58 
     | 
    
         
             
                      ciphers: %w{
         
     | 
| 
       59 
59 
     | 
    
         
             
                        ECDHE-ECDSA-AES128-GCM-SHA256
         
     | 
| 
       60 
60 
     | 
    
         
             
                        ECDHE-RSA-AES128-GCM-SHA256
         
     | 
| 
         @@ -125,7 +125,6 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       125 
125 
     | 
    
         
             
                  # that this form is deprecated. New applications should use #min_version=
         
     | 
| 
       126 
126 
     | 
    
         
             
                  # and #max_version= as necessary.
         
     | 
| 
       127 
127 
     | 
    
         
             
                  def initialize(version = nil)
         
     | 
| 
       128 
     | 
    
         
            -
                    self.options |= OpenSSL::SSL::OP_ALL
         
     | 
| 
       129 
128 
     | 
    
         
             
                    self.ssl_version = version if version
         
     | 
| 
       130 
129 
     | 
    
         
             
                    self.verify_mode = OpenSSL::SSL::VERIFY_NONE
         
     | 
| 
       131 
130 
     | 
    
         
             
                    self.verify_hostname = false
         
     | 
| 
         @@ -145,7 +144,7 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       145 
144 
     | 
    
         
             
                  # used.
         
     | 
| 
       146 
145 
     | 
    
         
             
                  def set_params(params={})
         
     | 
| 
       147 
146 
     | 
    
         
             
                    params = DEFAULT_PARAMS.merge(params)
         
     | 
| 
       148 
     | 
    
         
            -
                    self.options  
     | 
| 
      
 147 
     | 
    
         
            +
                    self.options |= params.delete(:options) # set before min_version/max_version
         
     | 
| 
       149 
148 
     | 
    
         
             
                    params.each{|name, value| self.__send__("#{name}=", value) }
         
     | 
| 
       150 
149 
     | 
    
         
             
                    if self.verify_mode != OpenSSL::SSL::VERIFY_NONE
         
     | 
| 
       151 
150 
     | 
    
         
             
                      unless self.ca_file or self.ca_path or self.cert_store
         
     | 
| 
         @@ -252,6 +251,14 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       252 
251 
     | 
    
         
             
                    to_io.peeraddr
         
     | 
| 
       253 
252 
     | 
    
         
             
                  end
         
     | 
| 
       254 
253 
     | 
    
         | 
| 
      
 254 
     | 
    
         
            +
                  def local_address
         
     | 
| 
      
 255 
     | 
    
         
            +
                    to_io.local_address
         
     | 
| 
      
 256 
     | 
    
         
            +
                  end
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
                  def remote_address
         
     | 
| 
      
 259 
     | 
    
         
            +
                    to_io.remote_address
         
     | 
| 
      
 260 
     | 
    
         
            +
                  end
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
       255 
262 
     | 
    
         
             
                  def setsockopt(level, optname, optval)
         
     | 
| 
       256 
263 
     | 
    
         
             
                    to_io.setsockopt(level, optname, optval)
         
     | 
| 
       257 
264 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -271,6 +278,36 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       271 
278 
     | 
    
         
             
                  def do_not_reverse_lookup=(flag)
         
     | 
| 
       272 
279 
     | 
    
         
             
                    to_io.do_not_reverse_lookup = flag
         
     | 
| 
       273 
280 
     | 
    
         
             
                  end
         
     | 
| 
      
 281 
     | 
    
         
            +
             
     | 
| 
      
 282 
     | 
    
         
            +
                  def close_on_exec=(value)
         
     | 
| 
      
 283 
     | 
    
         
            +
                    to_io.close_on_exec = value
         
     | 
| 
      
 284 
     | 
    
         
            +
                  end
         
     | 
| 
      
 285 
     | 
    
         
            +
             
     | 
| 
      
 286 
     | 
    
         
            +
                  def close_on_exec?
         
     | 
| 
      
 287 
     | 
    
         
            +
                    to_io.close_on_exec?
         
     | 
| 
      
 288 
     | 
    
         
            +
                  end
         
     | 
| 
      
 289 
     | 
    
         
            +
             
     | 
| 
      
 290 
     | 
    
         
            +
                  def wait(*args)
         
     | 
| 
      
 291 
     | 
    
         
            +
                    to_io.wait(*args)
         
     | 
| 
      
 292 
     | 
    
         
            +
                  end
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
                  def wait_readable(*args)
         
     | 
| 
      
 295 
     | 
    
         
            +
                    to_io.wait_readable(*args)
         
     | 
| 
      
 296 
     | 
    
         
            +
                  end
         
     | 
| 
      
 297 
     | 
    
         
            +
             
     | 
| 
      
 298 
     | 
    
         
            +
                  def wait_writable(*args)
         
     | 
| 
      
 299 
     | 
    
         
            +
                    to_io.wait_writable(*args)
         
     | 
| 
      
 300 
     | 
    
         
            +
                  end
         
     | 
| 
      
 301 
     | 
    
         
            +
             
     | 
| 
      
 302 
     | 
    
         
            +
                  if IO.method_defined?(:timeout)
         
     | 
| 
      
 303 
     | 
    
         
            +
                    def timeout
         
     | 
| 
      
 304 
     | 
    
         
            +
                      to_io.timeout
         
     | 
| 
      
 305 
     | 
    
         
            +
                    end
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
                    def timeout=(value)
         
     | 
| 
      
 308 
     | 
    
         
            +
                      to_io.timeout=(value)
         
     | 
| 
      
 309 
     | 
    
         
            +
                    end
         
     | 
| 
      
 310 
     | 
    
         
            +
                  end
         
     | 
| 
       274 
311 
     | 
    
         
             
                end
         
     | 
| 
       275 
312 
     | 
    
         | 
| 
       276 
313 
     | 
    
         
             
                def verify_certificate_identity(cert, hostname)
         
     | 
| 
         @@ -421,6 +458,32 @@ ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== 
     | 
|
| 
       421 
458 
     | 
    
         
             
                    nil
         
     | 
| 
       422 
459 
     | 
    
         
             
                  end
         
     | 
| 
       423 
460 
     | 
    
         | 
| 
      
 461 
     | 
    
         
            +
                  # Close the stream for reading.
         
     | 
| 
      
 462 
     | 
    
         
            +
                  # This method is ignored by OpenSSL as there is no reasonable way to
         
     | 
| 
      
 463 
     | 
    
         
            +
                  # implement it, but exists for compatibility with IO.
         
     | 
| 
      
 464 
     | 
    
         
            +
                  def close_read
         
     | 
| 
      
 465 
     | 
    
         
            +
                    # Unsupported and ignored.
         
     | 
| 
      
 466 
     | 
    
         
            +
                    # Just don't read any more.
         
     | 
| 
      
 467 
     | 
    
         
            +
                  end
         
     | 
| 
      
 468 
     | 
    
         
            +
             
     | 
| 
      
 469 
     | 
    
         
            +
                  # Closes the stream for writing. The behavior of this method depends on
         
     | 
| 
      
 470 
     | 
    
         
            +
                  # the version of OpenSSL and the TLS protocol in use.
         
     | 
| 
      
 471 
     | 
    
         
            +
                  #
         
     | 
| 
      
 472 
     | 
    
         
            +
                  # - Sends a 'close_notify' alert to the peer.
         
     | 
| 
      
 473 
     | 
    
         
            +
                  # - Does not wait for the peer's 'close_notify' alert in response.
         
     | 
| 
      
 474 
     | 
    
         
            +
                  #
         
     | 
| 
      
 475 
     | 
    
         
            +
                  # In TLS 1.2 and earlier:
         
     | 
| 
      
 476 
     | 
    
         
            +
                  # - On receipt of a 'close_notify' alert, responds with a 'close_notify'
         
     | 
| 
      
 477 
     | 
    
         
            +
                  #   alert of its own and close down the connection immediately,
         
     | 
| 
      
 478 
     | 
    
         
            +
                  #   discarding any pending writes.
         
     | 
| 
      
 479 
     | 
    
         
            +
                  #
         
     | 
| 
      
 480 
     | 
    
         
            +
                  # Therefore, on TLS 1.2, this method will cause the connection to be
         
     | 
| 
      
 481 
     | 
    
         
            +
                  # completely shut down. On TLS 1.3, the connection will remain open for
         
     | 
| 
      
 482 
     | 
    
         
            +
                  # reading only.
         
     | 
| 
      
 483 
     | 
    
         
            +
                  def close_write
         
     | 
| 
      
 484 
     | 
    
         
            +
                    stop
         
     | 
| 
      
 485 
     | 
    
         
            +
                  end
         
     | 
| 
      
 486 
     | 
    
         
            +
             
     | 
| 
       424 
487 
     | 
    
         
             
                  private
         
     | 
| 
       425 
488 
     | 
    
         | 
| 
       426 
489 
     | 
    
         
             
                  def using_anon_cipher?
         
     | 
    
        data/lib/openssl/version.rb
    CHANGED
    
    
    
        data/lib/openssl/x509.rb
    CHANGED
    
    | 
         @@ -9,7 +9,7 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            #
         
     | 
| 
       10 
10 
     | 
    
         
             
            # = Licence
         
     | 
| 
       11 
11 
     | 
    
         
             
            # This program is licensed under the same licence as Ruby.
         
     | 
| 
       12 
     | 
    
         
            -
            # (See the file ' 
     | 
| 
      
 12 
     | 
    
         
            +
            # (See the file 'COPYING'.)
         
     | 
| 
       13 
13 
     | 
    
         
             
            #++
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            require_relative 'marshal'
         
     | 
| 
         @@ -122,8 +122,8 @@ module OpenSSL 
     | 
|
| 
       122 
122 
     | 
    
         
             
                    include Helpers
         
     | 
| 
       123 
123 
     | 
    
         | 
| 
       124 
124 
     | 
    
         
             
                    # Get the distributionPoint fullName URI from the certificate's CRL
         
     | 
| 
       125 
     | 
    
         
            -
                    # distribution points extension, as described in  
     | 
| 
       126 
     | 
    
         
            -
                    # 4.2.1.13
         
     | 
| 
      
 125 
     | 
    
         
            +
                    # distribution points extension, as described in RFC 5280 Section
         
     | 
| 
      
 126 
     | 
    
         
            +
                    # 4.2.1.13.
         
     | 
| 
       127 
127 
     | 
    
         
             
                    #
         
     | 
| 
       128 
128 
     | 
    
         
             
                    # Returns an array of strings or nil or raises ASN1::ASN1Error.
         
     | 
| 
       129 
129 
     | 
    
         
             
                    def crl_uris
         
     | 
| 
         @@ -135,19 +135,19 @@ module OpenSSL 
     | 
|
| 
       135 
135 
     | 
    
         
             
                        raise ASN1::ASN1Error, "invalid extension"
         
     | 
| 
       136 
136 
     | 
    
         
             
                      end
         
     | 
| 
       137 
137 
     | 
    
         | 
| 
       138 
     | 
    
         
            -
                      crl_uris = cdp_asn1. 
     | 
| 
      
 138 
     | 
    
         
            +
                      crl_uris = cdp_asn1.flat_map do |crl_distribution_point|
         
     | 
| 
       139 
139 
     | 
    
         
             
                        distribution_point = crl_distribution_point.value.find do |v|
         
     | 
| 
       140 
140 
     | 
    
         
             
                          v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
         
     | 
| 
       141 
141 
     | 
    
         
             
                        end
         
     | 
| 
       142 
142 
     | 
    
         
             
                        full_name = distribution_point&.value&.find do |v|
         
     | 
| 
       143 
143 
     | 
    
         
             
                          v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
         
     | 
| 
       144 
144 
     | 
    
         
             
                        end
         
     | 
| 
       145 
     | 
    
         
            -
                        full_name&.value&. 
     | 
| 
      
 145 
     | 
    
         
            +
                        full_name&.value&.select do |v|
         
     | 
| 
       146 
146 
     | 
    
         
             
                          v.tag_class == :CONTEXT_SPECIFIC && v.tag == 6 # uniformResourceIdentifier
         
     | 
| 
       147 
147 
     | 
    
         
             
                        end
         
     | 
| 
       148 
148 
     | 
    
         
             
                      end
         
     | 
| 
       149 
149 
     | 
    
         | 
| 
       150 
     | 
    
         
            -
                      crl_uris 
     | 
| 
      
 150 
     | 
    
         
            +
                      crl_uris.empty? ? nil : crl_uris.map(&:value)
         
     | 
| 
       151 
151 
     | 
    
         
             
                    end
         
     | 
| 
       152 
152 
     | 
    
         
             
                  end
         
     | 
| 
       153 
153 
     | 
    
         | 
    
        data/lib/openssl.rb
    CHANGED
    
    | 
         @@ -7,12 +7,13 @@ 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            = Licence
         
     | 
| 
       9 
9 
     | 
    
         
             
              This program is licensed under the same licence as Ruby.
         
     | 
| 
       10 
     | 
    
         
            -
              (See the file ' 
     | 
| 
      
 10 
     | 
    
         
            +
              (See the file 'COPYING'.)
         
     | 
| 
       11 
11 
     | 
    
         
             
            =end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            require 'openssl.so'
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            require_relative 'openssl/bn'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require_relative 'openssl/asn1'
         
     | 
| 
       16 
17 
     | 
    
         
             
            require_relative 'openssl/pkey'
         
     | 
| 
       17 
18 
     | 
    
         
             
            require_relative 'openssl/cipher'
         
     | 
| 
       18 
19 
     | 
    
         
             
            require_relative 'openssl/digest'
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: openssl
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Martin Bosslet
         
     | 
| 
         @@ -11,7 +11,7 @@ authors: 
     | 
|
| 
       11 
11 
     | 
    
         
             
            autorequire:
         
     | 
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
     | 
    
         
            -
            date:  
     | 
| 
      
 14 
     | 
    
         
            +
            date: 2024-12-21 00:00:00.000000000 Z
         
     | 
| 
       15 
15 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       16 
16 
     | 
    
         
             
            description: OpenSSL for Ruby provides access to SSL/TLS and general-purpose cryptography
         
     | 
| 
       17 
17 
     | 
    
         
             
              based on the OpenSSL library.
         
     | 
| 
         @@ -27,8 +27,8 @@ extra_rdoc_files: 
     | 
|
| 
       27 
27 
     | 
    
         
             
            files:
         
     | 
| 
       28 
28 
     | 
    
         
             
            - BSDL
         
     | 
| 
       29 
29 
     | 
    
         
             
            - CONTRIBUTING.md
         
     | 
| 
      
 30 
     | 
    
         
            +
            - COPYING
         
     | 
| 
       30 
31 
     | 
    
         
             
            - History.md
         
     | 
| 
       31 
     | 
    
         
            -
            - LICENSE.txt
         
     | 
| 
       32 
32 
     | 
    
         
             
            - README.md
         
     | 
| 
       33 
33 
     | 
    
         
             
            - ext/openssl/extconf.rb
         
     | 
| 
       34 
34 
     | 
    
         
             
            - ext/openssl/openssl_missing.c
         
     | 
| 
         @@ -87,6 +87,7 @@ files: 
     | 
|
| 
       87 
87 
     | 
    
         
             
            - ext/openssl/ossl_x509revoked.c
         
     | 
| 
       88 
88 
     | 
    
         
             
            - ext/openssl/ossl_x509store.c
         
     | 
| 
       89 
89 
     | 
    
         
             
            - lib/openssl.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/openssl/asn1.rb
         
     | 
| 
       90 
91 
     | 
    
         
             
            - lib/openssl/bn.rb
         
     | 
| 
       91 
92 
     | 
    
         
             
            - lib/openssl/buffering.rb
         
     | 
| 
       92 
93 
     | 
    
         
             
            - lib/openssl/cipher.rb
         
     | 
| 
         @@ -101,6 +102,7 @@ files: 
     | 
|
| 
       101 
102 
     | 
    
         
             
            homepage: https://github.com/ruby/openssl
         
     | 
| 
       102 
103 
     | 
    
         
             
            licenses:
         
     | 
| 
       103 
104 
     | 
    
         
             
            - Ruby
         
     | 
| 
      
 105 
     | 
    
         
            +
            - BSD-2-Clause
         
     | 
| 
       104 
106 
     | 
    
         
             
            metadata:
         
     | 
| 
       105 
107 
     | 
    
         
             
              msys2_mingw_dependencies: openssl
         
     | 
| 
       106 
108 
     | 
    
         
             
            post_install_message:
         
     | 
| 
         @@ -120,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       120 
122 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       121 
123 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       122 
124 
     | 
    
         
             
            requirements: []
         
     | 
| 
       123 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 125 
     | 
    
         
            +
            rubygems_version: 3.5.22
         
     | 
| 
       124 
126 
     | 
    
         
             
            signing_key:
         
     | 
| 
       125 
127 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       126 
128 
     | 
    
         
             
            summary: SSL/TLS and general-purpose cryptography for Ruby
         
     | 
    
        /data/{LICENSE.txt → COPYING}
    RENAMED
    
    | 
         
            File without changes
         
     |