diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2018-10-25 10:13:03 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2020-02-19 08:07:07 +0000 |
commit | 8ba680a05568b4ab7d7749f68609a8620fa521f7 (patch) | |
tree | 966fb04a5e5837a7deba48ab35fc819420919db7 /lib | |
parent | 85b5e2338208d61835dd75638434c2ff385f66f0 (diff) | |
download | ruby-openssl-8ba680a05568b4ab7d7749f68609a8620fa521f7.tar.gz |
config: deprecate OpenSSL::Config#add_value and #[]=ky/config-deprecate-modify
OpenSSL::Config is currently implemented in Ruby, but we plan to revert
back to use OpenSSL API, just as it did before r28632 (in ruby_1_8;
r29048 in trunk). It's not clear what was the issue with Windows, but
the CONF library should work on Windows too.
Modifying a CONF object is not possible in OpenSSL API. Actually, it
was possible in previous versions of OpenSSL, but we used their
internal functions that are not exposed in shared libraries anymore.
Accordingly, OpenSSL::Config#add_value and #[]= have to be removed. As
a first step towards the change, let's deprecate those methods.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/openssl/config.rb | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/openssl/config.rb b/lib/openssl/config.rb index ef83c57b..c5432ebb 100644 --- a/lib/openssl/config.rb +++ b/lib/openssl/config.rb @@ -37,7 +37,7 @@ module OpenSSL def parse(string) c = new() parse_config(StringIO.new(string)).each do |section, hash| - c[section] = hash + c.set_section(section, hash) end c end @@ -248,7 +248,7 @@ module OpenSSL if filename File.open(filename.to_s) do |file| Config.parse_config(file).each do |section, hash| - self[section] = hash + set_section(section, hash) end end end @@ -297,6 +297,8 @@ module OpenSSL end ## + # *Deprecated in v2.2.0*. This method will be removed in a future release. + # # Set the target _key_ with a given _value_ under a specific _section_. # # Given the following configurating file being loaded: @@ -351,6 +353,8 @@ module OpenSSL end ## + # *Deprecated in v2.2.0*. This method will be removed in a future release. + # # Sets a specific _section_ name with a Hash _pairs_. # # Given the following configuration being created: @@ -376,9 +380,13 @@ module OpenSSL # def []=(section, pairs) check_modify - @data[section] ||= {} + set_section(section, pairs) + end + + def set_section(section, pairs) # :nodoc: + hash = @data[section] ||= {} pairs.each do |key, value| - self.add_value(section, key, value) + hash[key] = value end end @@ -463,6 +471,8 @@ module OpenSSL end def check_modify + warn "#{caller(2, 1)[0]}: warning: do not modify OpenSSL::Config; this " \ + "method is deprecated and will be removed in a future release." raise TypeError.new("Insecure: can't modify OpenSSL config") if frozen? end |