diff --git a/lib/net/http.rb b/lib/net/http.rb index fb8a3cc..e0d35e5 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -26,6 +26,7 @@ #++ require 'net/protocol' +autoload :OpenSSL, 'openssl' require 'uri' module Net #:nodoc: @@ -544,7 +545,33 @@ module Net #:nodoc: # returns true if use SSL/TLS with HTTP. def use_ssl? - false # redefined in net/https + @use_ssl + end + + # Turn on/off SSL. + # This flag must be set before starting session. + # If you change use_ssl value after session started, + # a Net::HTTP object raises IOError. + def use_ssl=(flag) + flag = (flag ? true : false) + if started? and @use_ssl != flag + raise IOError, "use_ssl value changed, but session already started" + end + @use_ssl = flag + end + + SSL_ATTRIBUTES = %w( + ssl_version key cert ca_file ca_path cert_store ciphers + verify_mode verify_callback verify_depth ssl_timeout + ) + attr_accessor(*SSL_ATTRIBUTES) + + # return the X.509 certificates the server presented. + def peer_cert + if not use_ssl? or not @socket + return nil + end + @socket.io.peer_cert end # Opens TCP connection and HTTP session. diff --git a/lib/net/https.rb b/lib/net/https.rb index 636ae1b..9839504 100644 --- a/lib/net/https.rb +++ b/lib/net/https.rb @@ -1,6 +1,6 @@ =begin -= $RCSfile$ -- SSL/TLS enhancement for Net::HTTP. += net/https -- SSL/TLS enhancement for Net::HTTP. == Info 'OpenSSL for Ruby 2' project @@ -11,16 +11,6 @@ This program is licenced under the same licence as Ruby. (See the file 'LICENCE'.) -== Requirements - This program requires Net 1.2.0 or higher version. - You can get it from RAA or Ruby's CVS repository. - -== Version - $Id$ - - 2001-11-06: Contiributed to Ruby/OpenSSL project. - 2004-03-06: Some code is merged in to net/http. - == Example Here is a simple HTTP client: @@ -100,37 +90,3 @@ It can be replaced by the following code: require 'net/http' require 'openssl' - -module Net - class HTTP - remove_method :use_ssl? - def use_ssl? - @use_ssl - end - - # Turn on/off SSL. - # This flag must be set before starting session. - # If you change use_ssl value after session started, - # a Net::HTTP object raises IOError. - def use_ssl=(flag) - flag = (flag ? true : false) - if started? and @use_ssl != flag - raise IOError, "use_ssl value changed, but session already started" - end - @use_ssl = flag - end - - SSL_ATTRIBUTES = %w( - ssl_version key cert ca_file ca_path cert_store ciphers - verify_mode verify_callback verify_depth ssl_timeout - ) - attr_accessor(*SSL_ATTRIBUTES) - - def peer_cert - if not use_ssl? or not @socket - return nil - end - @socket.io.peer_cert - end - end -end