openssl-custom 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/BSDL +22 -0
  3. data/CONTRIBUTING.md +132 -0
  4. data/History.md +485 -0
  5. data/LICENSE.txt +56 -0
  6. data/README.md +66 -0
  7. data/ext/openssl/extconf.rb +190 -0
  8. data/ext/openssl/openssl_missing.c +106 -0
  9. data/ext/openssl/openssl_missing.h +257 -0
  10. data/ext/openssl/ossl.c +1282 -0
  11. data/ext/openssl/ossl.h +181 -0
  12. data/ext/openssl/ossl_asn1.c +1878 -0
  13. data/ext/openssl/ossl_asn1.h +62 -0
  14. data/ext/openssl/ossl_bio.c +42 -0
  15. data/ext/openssl/ossl_bio.h +16 -0
  16. data/ext/openssl/ossl_bn.c +1270 -0
  17. data/ext/openssl/ossl_bn.h +26 -0
  18. data/ext/openssl/ossl_cipher.c +1075 -0
  19. data/ext/openssl/ossl_cipher.h +20 -0
  20. data/ext/openssl/ossl_config.c +89 -0
  21. data/ext/openssl/ossl_config.h +19 -0
  22. data/ext/openssl/ossl_digest.c +425 -0
  23. data/ext/openssl/ossl_digest.h +20 -0
  24. data/ext/openssl/ossl_engine.c +567 -0
  25. data/ext/openssl/ossl_engine.h +19 -0
  26. data/ext/openssl/ossl_hmac.c +389 -0
  27. data/ext/openssl/ossl_hmac.h +18 -0
  28. data/ext/openssl/ossl_kdf.c +303 -0
  29. data/ext/openssl/ossl_kdf.h +6 -0
  30. data/ext/openssl/ossl_ns_spki.c +405 -0
  31. data/ext/openssl/ossl_ns_spki.h +19 -0
  32. data/ext/openssl/ossl_ocsp.c +2013 -0
  33. data/ext/openssl/ossl_ocsp.h +23 -0
  34. data/ext/openssl/ossl_pkcs12.c +257 -0
  35. data/ext/openssl/ossl_pkcs12.h +13 -0
  36. data/ext/openssl/ossl_pkcs7.c +1098 -0
  37. data/ext/openssl/ossl_pkcs7.h +36 -0
  38. data/ext/openssl/ossl_pkey.c +673 -0
  39. data/ext/openssl/ossl_pkey.h +241 -0
  40. data/ext/openssl/ossl_pkey_dh.c +650 -0
  41. data/ext/openssl/ossl_pkey_dsa.c +664 -0
  42. data/ext/openssl/ossl_pkey_ec.c +1827 -0
  43. data/ext/openssl/ossl_pkey_rsa.c +966 -0
  44. data/ext/openssl/ossl_rand.c +200 -0
  45. data/ext/openssl/ossl_rand.h +18 -0
  46. data/ext/openssl/ossl_ssl.c +3080 -0
  47. data/ext/openssl/ossl_ssl.h +36 -0
  48. data/ext/openssl/ossl_ssl_session.c +332 -0
  49. data/ext/openssl/ossl_ts.c +1524 -0
  50. data/ext/openssl/ossl_ts.h +16 -0
  51. data/ext/openssl/ossl_x509.c +262 -0
  52. data/ext/openssl/ossl_x509.h +115 -0
  53. data/ext/openssl/ossl_x509attr.c +324 -0
  54. data/ext/openssl/ossl_x509cert.c +846 -0
  55. data/ext/openssl/ossl_x509crl.c +542 -0
  56. data/ext/openssl/ossl_x509ext.c +491 -0
  57. data/ext/openssl/ossl_x509name.c +590 -0
  58. data/ext/openssl/ossl_x509req.c +441 -0
  59. data/ext/openssl/ossl_x509revoked.c +300 -0
  60. data/ext/openssl/ossl_x509store.c +902 -0
  61. data/ext/openssl/ruby_missing.h +24 -0
  62. data/lib/openssl/bn.rb +40 -0
  63. data/lib/openssl/buffering.rb +478 -0
  64. data/lib/openssl/cipher.rb +67 -0
  65. data/lib/openssl/config.rb +501 -0
  66. data/lib/openssl/digest.rb +73 -0
  67. data/lib/openssl/hmac.rb +13 -0
  68. data/lib/openssl/marshal.rb +30 -0
  69. data/lib/openssl/pkcs5.rb +22 -0
  70. data/lib/openssl/pkey.rb +42 -0
  71. data/lib/openssl/ssl.rb +542 -0
  72. data/lib/openssl/version.rb +5 -0
  73. data/lib/openssl/x509.rb +369 -0
  74. data/lib/openssl.rb +38 -0
  75. metadata +196 -0
@@ -0,0 +1,369 @@
1
+ # frozen_string_literal: true
2
+ #--
3
+ # = Ruby-space definitions that completes C-space funcs for X509 and subclasses
4
+ #
5
+ # = Info
6
+ # 'OpenSSL for Ruby 2' project
7
+ # Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
8
+ # All rights reserved.
9
+ #
10
+ # = Licence
11
+ # This program is licensed under the same licence as Ruby.
12
+ # (See the file 'LICENCE'.)
13
+ #++
14
+
15
+ require_relative 'marshal'
16
+
17
+ module OpenSSL
18
+ module X509
19
+ class ExtensionFactory
20
+ def create_extension(*arg)
21
+ if arg.size > 1
22
+ create_ext(*arg)
23
+ else
24
+ send("create_ext_from_"+arg[0].class.name.downcase, arg[0])
25
+ end
26
+ end
27
+
28
+ def create_ext_from_array(ary)
29
+ raise ExtensionError, "unexpected array form" if ary.size > 3
30
+ create_ext(ary[0], ary[1], ary[2])
31
+ end
32
+
33
+ def create_ext_from_string(str) # "oid = critical, value"
34
+ oid, value = str.split(/=/, 2)
35
+ oid.strip!
36
+ value.strip!
37
+ create_ext(oid, value)
38
+ end
39
+
40
+ def create_ext_from_hash(hash)
41
+ create_ext(hash["oid"], hash["value"], hash["critical"])
42
+ end
43
+ end
44
+
45
+ class Extension
46
+ include OpenSSL::Marshal
47
+
48
+ def ==(other)
49
+ return false unless Extension === other
50
+ to_der == other.to_der
51
+ end
52
+
53
+ def to_s # "oid = critical, value"
54
+ str = self.oid
55
+ str << " = "
56
+ str << "critical, " if self.critical?
57
+ str << self.value.gsub(/\n/, ", ")
58
+ end
59
+
60
+ def to_h # {"oid"=>sn|ln, "value"=>value, "critical"=>true|false}
61
+ {"oid"=>self.oid,"value"=>self.value,"critical"=>self.critical?}
62
+ end
63
+
64
+ def to_a
65
+ [ self.oid, self.value, self.critical? ]
66
+ end
67
+
68
+ module Helpers
69
+ def find_extension(oid)
70
+ extensions.find { |e| e.oid == oid }
71
+ end
72
+ end
73
+
74
+ module SubjectKeyIdentifier
75
+ include Helpers
76
+
77
+ # Get the subject's key identifier from the subjectKeyIdentifier
78
+ # exteension, as described in RFC5280 Section 4.2.1.2.
79
+ #
80
+ # Returns the binary String key identifier or nil or raises
81
+ # ASN1::ASN1Error.
82
+ def subject_key_identifier
83
+ ext = find_extension("subjectKeyIdentifier")
84
+ return nil if ext.nil?
85
+
86
+ ski_asn1 = ASN1.decode(ext.value_der)
87
+ if ext.critical? || ski_asn1.tag_class != :UNIVERSAL || ski_asn1.tag != ASN1::OCTET_STRING
88
+ raise ASN1::ASN1Error, "invalid extension"
89
+ end
90
+
91
+ ski_asn1.value
92
+ end
93
+ end
94
+
95
+ module AuthorityKeyIdentifier
96
+ include Helpers
97
+
98
+ # Get the issuing certificate's key identifier from the
99
+ # authorityKeyIdentifier extension, as described in RFC5280
100
+ # Section 4.2.1.1
101
+ #
102
+ # Returns the binary String keyIdentifier or nil or raises
103
+ # ASN1::ASN1Error.
104
+ def authority_key_identifier
105
+ ext = find_extension("authorityKeyIdentifier")
106
+ return nil if ext.nil?
107
+
108
+ aki_asn1 = ASN1.decode(ext.value_der)
109
+ if ext.critical? || aki_asn1.tag_class != :UNIVERSAL || aki_asn1.tag != ASN1::SEQUENCE
110
+ raise ASN1::ASN1Error, "invalid extension"
111
+ end
112
+
113
+ key_id = aki_asn1.value.find do |v|
114
+ v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
115
+ end
116
+
117
+ key_id.nil? ? nil : key_id.value
118
+ end
119
+ end
120
+
121
+ module CRLDistributionPoints
122
+ include Helpers
123
+
124
+ # Get the distributionPoint fullName URI from the certificate's CRL
125
+ # distribution points extension, as described in RFC5280 Section
126
+ # 4.2.1.13
127
+ #
128
+ # Returns an array of strings or nil or raises ASN1::ASN1Error.
129
+ def crl_uris
130
+ ext = find_extension("crlDistributionPoints")
131
+ return nil if ext.nil?
132
+
133
+ cdp_asn1 = ASN1.decode(ext.value_der)
134
+ if cdp_asn1.tag_class != :UNIVERSAL || cdp_asn1.tag != ASN1::SEQUENCE
135
+ raise ASN1::ASN1Error, "invalid extension"
136
+ end
137
+
138
+ crl_uris = cdp_asn1.map do |crl_distribution_point|
139
+ distribution_point = crl_distribution_point.value.find do |v|
140
+ v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
141
+ end
142
+ full_name = distribution_point&.value&.find do |v|
143
+ v.tag_class == :CONTEXT_SPECIFIC && v.tag == 0
144
+ end
145
+ full_name&.value&.find do |v|
146
+ v.tag_class == :CONTEXT_SPECIFIC && v.tag == 6 # uniformResourceIdentifier
147
+ end
148
+ end
149
+
150
+ crl_uris&.map(&:value)
151
+ end
152
+ end
153
+
154
+ module AuthorityInfoAccess
155
+ include Helpers
156
+
157
+ # Get the information and services for the issuer from the certificate's
158
+ # authority information access extension exteension, as described in RFC5280
159
+ # Section 4.2.2.1.
160
+ #
161
+ # Returns an array of strings or nil or raises ASN1::ASN1Error.
162
+ def ca_issuer_uris
163
+ aia_asn1 = parse_aia_asn1
164
+ return nil if aia_asn1.nil?
165
+
166
+ ca_issuer = aia_asn1.value.select do |authority_info_access|
167
+ authority_info_access.value.first.value == "caIssuers"
168
+ end
169
+
170
+ ca_issuer&.map(&:value)&.map(&:last)&.map(&:value)
171
+ end
172
+
173
+ # Get the URIs for OCSP from the certificate's authority information access
174
+ # extension exteension, as described in RFC5280 Section 4.2.2.1.
175
+ #
176
+ # Returns an array of strings or nil or raises ASN1::ASN1Error.
177
+ def ocsp_uris
178
+ aia_asn1 = parse_aia_asn1
179
+ return nil if aia_asn1.nil?
180
+
181
+ ocsp = aia_asn1.value.select do |authority_info_access|
182
+ authority_info_access.value.first.value == "OCSP"
183
+ end
184
+
185
+ ocsp&.map(&:value)&.map(&:last)&.map(&:value)
186
+ end
187
+
188
+ private
189
+
190
+ def parse_aia_asn1
191
+ ext = find_extension("authorityInfoAccess")
192
+ return nil if ext.nil?
193
+
194
+ aia_asn1 = ASN1.decode(ext.value_der)
195
+ if ext.critical? || aia_asn1.tag_class != :UNIVERSAL || aia_asn1.tag != ASN1::SEQUENCE
196
+ raise ASN1::ASN1Error, "invalid extension"
197
+ end
198
+
199
+ aia_asn1
200
+ end
201
+ end
202
+ end
203
+
204
+ class Name
205
+ include OpenSSL::Marshal
206
+
207
+ module RFC2253DN
208
+ Special = ',=+<>#;'
209
+ HexChar = /[0-9a-fA-F]/
210
+ HexPair = /#{HexChar}#{HexChar}/
211
+ HexString = /#{HexPair}+/
212
+ Pair = /\\(?:[#{Special}]|\\|"|#{HexPair})/
213
+ StringChar = /[^\\"#{Special}]/
214
+ QuoteChar = /[^\\"]/
215
+ AttributeType = /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/
216
+ AttributeValue = /
217
+ (?!["#])((?:#{StringChar}|#{Pair})*)|
218
+ \#(#{HexString})|
219
+ "((?:#{QuoteChar}|#{Pair})*)"
220
+ /x
221
+ TypeAndValue = /\A(#{AttributeType})=#{AttributeValue}/
222
+
223
+ module_function
224
+
225
+ def expand_pair(str)
226
+ return nil unless str
227
+ return str.gsub(Pair){
228
+ pair = $&
229
+ case pair.size
230
+ when 2 then pair[1,1]
231
+ when 3 then Integer("0x#{pair[1,2]}").chr
232
+ else raise OpenSSL::X509::NameError, "invalid pair: #{str}"
233
+ end
234
+ }
235
+ end
236
+
237
+ def expand_hexstring(str)
238
+ return nil unless str
239
+ der = str.gsub(HexPair){$&.to_i(16).chr }
240
+ a1 = OpenSSL::ASN1.decode(der)
241
+ return a1.value, a1.tag
242
+ end
243
+
244
+ def expand_value(str1, str2, str3)
245
+ value = expand_pair(str1)
246
+ value, tag = expand_hexstring(str2) unless value
247
+ value = expand_pair(str3) unless value
248
+ return value, tag
249
+ end
250
+
251
+ def scan(dn)
252
+ str = dn
253
+ ary = []
254
+ while true
255
+ if md = TypeAndValue.match(str)
256
+ remain = md.post_match
257
+ type = md[1]
258
+ value, tag = expand_value(md[2], md[3], md[4]) rescue nil
259
+ if value
260
+ type_and_value = [type, value]
261
+ type_and_value.push(tag) if tag
262
+ ary.unshift(type_and_value)
263
+ if remain.length > 2 && remain[0] == ?,
264
+ str = remain[1..-1]
265
+ next
266
+ elsif remain.length > 2 && remain[0] == ?+
267
+ raise OpenSSL::X509::NameError,
268
+ "multi-valued RDN is not supported: #{dn}"
269
+ elsif remain.empty?
270
+ break
271
+ end
272
+ end
273
+ end
274
+ msg_dn = dn[0, dn.length - str.length] + " =>" + str
275
+ raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}"
276
+ end
277
+ return ary
278
+ end
279
+ end
280
+
281
+ class << self
282
+ def parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE)
283
+ ary = OpenSSL::X509::Name::RFC2253DN.scan(str)
284
+ self.new(ary, template)
285
+ end
286
+
287
+ def parse_openssl(str, template=OBJECT_TYPE_TEMPLATE)
288
+ if str.start_with?("/")
289
+ # /A=B/C=D format
290
+ ary = str[1..-1].split("/").map { |i| i.split("=", 2) }
291
+ else
292
+ # Comma-separated
293
+ ary = str.split(",").map { |i| i.strip.split("=", 2) }
294
+ end
295
+ self.new(ary, template)
296
+ end
297
+
298
+ alias parse parse_openssl
299
+ end
300
+
301
+ def pretty_print(q)
302
+ q.object_group(self) {
303
+ q.text ' '
304
+ q.text to_s(OpenSSL::X509::Name::RFC2253)
305
+ }
306
+ end
307
+ end
308
+
309
+ class Attribute
310
+ include OpenSSL::Marshal
311
+
312
+ def ==(other)
313
+ return false unless Attribute === other
314
+ to_der == other.to_der
315
+ end
316
+ end
317
+
318
+ class StoreContext
319
+ def cleanup
320
+ warn "(#{caller.first}) OpenSSL::X509::StoreContext#cleanup is deprecated with no replacement" if $VERBOSE
321
+ end
322
+ end
323
+
324
+ class Certificate
325
+ include OpenSSL::Marshal
326
+ include Extension::SubjectKeyIdentifier
327
+ include Extension::AuthorityKeyIdentifier
328
+ include Extension::CRLDistributionPoints
329
+ include Extension::AuthorityInfoAccess
330
+
331
+ def pretty_print(q)
332
+ q.object_group(self) {
333
+ q.breakable
334
+ q.text 'subject='; q.pp self.subject; q.text ','; q.breakable
335
+ q.text 'issuer='; q.pp self.issuer; q.text ','; q.breakable
336
+ q.text 'serial='; q.pp self.serial; q.text ','; q.breakable
337
+ q.text 'not_before='; q.pp self.not_before; q.text ','; q.breakable
338
+ q.text 'not_after='; q.pp self.not_after
339
+ }
340
+ end
341
+ end
342
+
343
+ class CRL
344
+ include OpenSSL::Marshal
345
+ include Extension::AuthorityKeyIdentifier
346
+
347
+ def ==(other)
348
+ return false unless CRL === other
349
+ to_der == other.to_der
350
+ end
351
+ end
352
+
353
+ class Revoked
354
+ def ==(other)
355
+ return false unless Revoked === other
356
+ to_der == other.to_der
357
+ end
358
+ end
359
+
360
+ class Request
361
+ include OpenSSL::Marshal
362
+
363
+ def ==(other)
364
+ return false unless Request === other
365
+ to_der == other.to_der
366
+ end
367
+ end
368
+ end
369
+ end
data/lib/openssl.rb ADDED
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+ =begin
3
+ = Info
4
+ 'OpenSSL for Ruby 2' project
5
+ Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
6
+ All rights reserved.
7
+
8
+ = Licence
9
+ This program is licensed under the same licence as Ruby.
10
+ (See the file 'LICENCE'.)
11
+ =end
12
+
13
+ require 'openssl.so'
14
+
15
+ require_relative 'openssl/bn'
16
+ require_relative 'openssl/pkey'
17
+ require_relative 'openssl/cipher'
18
+ require_relative 'openssl/config'
19
+ require_relative 'openssl/digest'
20
+ require_relative 'openssl/hmac'
21
+ require_relative 'openssl/x509'
22
+ require_relative 'openssl/ssl'
23
+ require_relative 'openssl/pkcs5'
24
+ require_relative 'openssl/version'
25
+
26
+ module OpenSSL
27
+ # call-seq:
28
+ # OpenSSL.secure_compare(string, string) -> boolean
29
+ #
30
+ # Constant time memory comparison. Inputs are hashed using SHA-256 to mask
31
+ # the length of the secret. Returns +true+ if the strings are identical,
32
+ # +false+ otherwise.
33
+ def self.secure_compare(a, b)
34
+ hashed_a = OpenSSL::Digest.digest('SHA256', a)
35
+ hashed_b = OpenSSL::Digest.digest('SHA256', b)
36
+ OpenSSL.fixed_length_secure_compare(hashed_a, hashed_b) && a == b
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openssl-custom
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Martin Bosslet
8
+ - SHIBATA Hiroshi
9
+ - Zachary Scott
10
+ - Kazuki Yamaguchi
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2022-10-16 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: ipaddr
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 11.2.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 11.2.0
44
+ - !ruby/object:Gem::Dependency
45
+ name: rake-compiler
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: test-unit
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '3.0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '3.0'
72
+ - !ruby/object:Gem::Dependency
73
+ name: rdoc
74
+ requirement: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ description: It wraps the OpenSSL library.
87
+ email:
88
+ - ruby-core@ruby-lang.org
89
+ executables: []
90
+ extensions:
91
+ - ext/openssl/extconf.rb
92
+ extra_rdoc_files:
93
+ - README.md
94
+ - History.md
95
+ - CONTRIBUTING.md
96
+ files:
97
+ - BSDL
98
+ - CONTRIBUTING.md
99
+ - History.md
100
+ - LICENSE.txt
101
+ - README.md
102
+ - ext/openssl/extconf.rb
103
+ - ext/openssl/openssl_missing.c
104
+ - ext/openssl/openssl_missing.h
105
+ - ext/openssl/ossl.c
106
+ - ext/openssl/ossl.h
107
+ - ext/openssl/ossl_asn1.c
108
+ - ext/openssl/ossl_asn1.h
109
+ - ext/openssl/ossl_bio.c
110
+ - ext/openssl/ossl_bio.h
111
+ - ext/openssl/ossl_bn.c
112
+ - ext/openssl/ossl_bn.h
113
+ - ext/openssl/ossl_cipher.c
114
+ - ext/openssl/ossl_cipher.h
115
+ - ext/openssl/ossl_config.c
116
+ - ext/openssl/ossl_config.h
117
+ - ext/openssl/ossl_digest.c
118
+ - ext/openssl/ossl_digest.h
119
+ - ext/openssl/ossl_engine.c
120
+ - ext/openssl/ossl_engine.h
121
+ - ext/openssl/ossl_hmac.c
122
+ - ext/openssl/ossl_hmac.h
123
+ - ext/openssl/ossl_kdf.c
124
+ - ext/openssl/ossl_kdf.h
125
+ - ext/openssl/ossl_ns_spki.c
126
+ - ext/openssl/ossl_ns_spki.h
127
+ - ext/openssl/ossl_ocsp.c
128
+ - ext/openssl/ossl_ocsp.h
129
+ - ext/openssl/ossl_pkcs12.c
130
+ - ext/openssl/ossl_pkcs12.h
131
+ - ext/openssl/ossl_pkcs7.c
132
+ - ext/openssl/ossl_pkcs7.h
133
+ - ext/openssl/ossl_pkey.c
134
+ - ext/openssl/ossl_pkey.h
135
+ - ext/openssl/ossl_pkey_dh.c
136
+ - ext/openssl/ossl_pkey_dsa.c
137
+ - ext/openssl/ossl_pkey_ec.c
138
+ - ext/openssl/ossl_pkey_rsa.c
139
+ - ext/openssl/ossl_rand.c
140
+ - ext/openssl/ossl_rand.h
141
+ - ext/openssl/ossl_ssl.c
142
+ - ext/openssl/ossl_ssl.h
143
+ - ext/openssl/ossl_ssl_session.c
144
+ - ext/openssl/ossl_ts.c
145
+ - ext/openssl/ossl_ts.h
146
+ - ext/openssl/ossl_x509.c
147
+ - ext/openssl/ossl_x509.h
148
+ - ext/openssl/ossl_x509attr.c
149
+ - ext/openssl/ossl_x509cert.c
150
+ - ext/openssl/ossl_x509crl.c
151
+ - ext/openssl/ossl_x509ext.c
152
+ - ext/openssl/ossl_x509name.c
153
+ - ext/openssl/ossl_x509req.c
154
+ - ext/openssl/ossl_x509revoked.c
155
+ - ext/openssl/ossl_x509store.c
156
+ - ext/openssl/ruby_missing.h
157
+ - lib/openssl.rb
158
+ - lib/openssl/bn.rb
159
+ - lib/openssl/buffering.rb
160
+ - lib/openssl/cipher.rb
161
+ - lib/openssl/config.rb
162
+ - lib/openssl/digest.rb
163
+ - lib/openssl/hmac.rb
164
+ - lib/openssl/marshal.rb
165
+ - lib/openssl/pkcs5.rb
166
+ - lib/openssl/pkey.rb
167
+ - lib/openssl/ssl.rb
168
+ - lib/openssl/version.rb
169
+ - lib/openssl/x509.rb
170
+ homepage: https://github.com/ruby/openssl
171
+ licenses:
172
+ - Ruby
173
+ metadata:
174
+ msys2_mingw_dependencies: openssl
175
+ post_install_message:
176
+ rdoc_options:
177
+ - "--main"
178
+ - README.md
179
+ require_paths:
180
+ - lib
181
+ required_ruby_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 2.2.0
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ requirements: []
192
+ rubygems_version: 3.0.9
193
+ signing_key:
194
+ specification_version: 4
195
+ summary: OpenSSL provides SSL, TLS and general purpose cryptography.
196
+ test_files: []