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
|