@@ -17,55 +17,55 @@ module OpenSSL
1717 module SSL
1818 class SSLContext
1919 unless const_defined? :DEFAULT_PARAMS # JRuby does it in Java
20- DEFAULT_PARAMS = { # :nodoc:
21- :min_version => OpenSSL ::SSL ::TLS1_VERSION ,
22- :verify_mode => OpenSSL ::SSL ::VERIFY_PEER ,
23- :verify_hostname => true ,
24- :options => -> {
25- opts = OpenSSL ::SSL ::OP_ALL
26- opts &= ~OpenSSL ::SSL ::OP_DONT_INSERT_EMPTY_FRAGMENTS
27- opts |= OpenSSL ::SSL ::OP_NO_COMPRESSION
28- opts
29- } . call
30- }
20+ DEFAULT_PARAMS = { # :nodoc:
21+ :min_version => OpenSSL ::SSL ::TLS1_VERSION ,
22+ :verify_mode => OpenSSL ::SSL ::VERIFY_PEER ,
23+ :verify_hostname => true ,
24+ :options => -> {
25+ opts = OpenSSL ::SSL ::OP_ALL
26+ opts &= ~OpenSSL ::SSL ::OP_DONT_INSERT_EMPTY_FRAGMENTS
27+ opts |= OpenSSL ::SSL ::OP_NO_COMPRESSION
28+ opts
29+ } . call
30+ }
3131
32- if !( OpenSSL ::OPENSSL_VERSION . start_with? ( "OpenSSL" ) &&
33- OpenSSL ::OPENSSL_VERSION_NUMBER >= 0x10100000 )
34- DEFAULT_PARAMS . merge! (
35- ciphers : %w{
36- ECDHE-ECDSA-AES128-GCM-SHA256
37- ECDHE-RSA-AES128-GCM-SHA256
38- ECDHE-ECDSA-AES256-GCM-SHA384
39- ECDHE-RSA-AES256-GCM-SHA384
40- DHE-RSA-AES128-GCM-SHA256
41- DHE-DSS-AES128-GCM-SHA256
42- DHE-RSA-AES256-GCM-SHA384
43- DHE-DSS-AES256-GCM-SHA384
44- ECDHE-ECDSA-AES128-SHA256
45- ECDHE-RSA-AES128-SHA256
46- ECDHE-ECDSA-AES128-SHA
47- ECDHE-RSA-AES128-SHA
48- ECDHE-ECDSA-AES256-SHA384
49- ECDHE-RSA-AES256-SHA384
50- ECDHE-ECDSA-AES256-SHA
51- ECDHE-RSA-AES256-SHA
52- DHE-RSA-AES128-SHA256
53- DHE-RSA-AES256-SHA256
54- DHE-RSA-AES128-SHA
55- DHE-RSA-AES256-SHA
56- DHE-DSS-AES128-SHA256
57- DHE-DSS-AES256-SHA256
58- DHE-DSS-AES128-SHA
59- DHE-DSS-AES256-SHA
60- AES128-GCM-SHA256
61- AES256-GCM-SHA384
62- AES128-SHA256
63- AES256-SHA256
64- AES128-SHA
65- AES256-SHA
66- } . join ( ":" ) ,
67- )
68- end
32+ if !( OpenSSL ::OPENSSL_VERSION . start_with? ( "OpenSSL" ) &&
33+ OpenSSL ::OPENSSL_VERSION_NUMBER >= 0x10100000 )
34+ DEFAULT_PARAMS . merge! (
35+ ciphers : %w{
36+ ECDHE-ECDSA-AES128-GCM-SHA256
37+ ECDHE-RSA-AES128-GCM-SHA256
38+ ECDHE-ECDSA-AES256-GCM-SHA384
39+ ECDHE-RSA-AES256-GCM-SHA384
40+ DHE-RSA-AES128-GCM-SHA256
41+ DHE-DSS-AES128-GCM-SHA256
42+ DHE-RSA-AES256-GCM-SHA384
43+ DHE-DSS-AES256-GCM-SHA384
44+ ECDHE-ECDSA-AES128-SHA256
45+ ECDHE-RSA-AES128-SHA256
46+ ECDHE-ECDSA-AES128-SHA
47+ ECDHE-RSA-AES128-SHA
48+ ECDHE-ECDSA-AES256-SHA384
49+ ECDHE-RSA-AES256-SHA384
50+ ECDHE-ECDSA-AES256-SHA
51+ ECDHE-RSA-AES256-SHA
52+ DHE-RSA-AES128-SHA256
53+ DHE-RSA-AES256-SHA256
54+ DHE-RSA-AES128-SHA
55+ DHE-RSA-AES256-SHA
56+ DHE-DSS-AES128-SHA256
57+ DHE-DSS-AES256-SHA256
58+ DHE-DSS-AES128-SHA
59+ DHE-DSS-AES256-SHA
60+ AES128-GCM-SHA256
61+ AES256-GCM-SHA384
62+ AES128-SHA256
63+ AES256-SHA256
64+ AES128-SHA
65+ AES256-SHA
66+ } . join ( ":" ) ,
67+ )
68+ end
6969 end
7070
7171 if defined? ( OpenSSL ::PKey ::DH )
@@ -111,6 +111,21 @@ class SSLContext
111111 # callback must return an SSLContext for the server name or nil.
112112 attr_accessor :servername_cb
113113
114+ # call-seq:
115+ # SSLContext.new -> ctx
116+ # SSLContext.new(:TLSv1) -> ctx
117+ # SSLContext.new("SSLv23") -> ctx
118+ #
119+ # Creates a new SSL context.
120+ #
121+ # If an argument is given, #ssl_version= is called with the value. Note
122+ # that this form is deprecated. New applications should use #min_version=
123+ # and #max_version= as necessary.
124+ # def initialize(version = nil)
125+ # self.options |= OpenSSL::SSL::OP_ALL
126+ # self.ssl_version = version if version
127+ # end
128+
114129 ##
115130 # call-seq:
116131 # ctx.set_params(params = {}) -> params
0 commit comments