Object
![show/hide quicksearch [+]](../images/find.png)
Configuration for the openssl library.
Many system’s installation of openssl library will depend on your system configuration. See the value of OpenSSL::Config::DEFAULT_CONFIG_FILE for the location of the file for your host.
The default system configuration file for openssl
escaped char map
escape with backslash and doubled dq
escape with backslash
Creates an instance of OpenSSL’s configuration class.
This can be used in contexts like OpenSSL::X509::ExtensionFactory.config=
If the optional filename parameter is provided, then it is read in and parsed via parse_config.
This can raise IO exceptions based on the access, or availability of the file. A ConfigError exception may be raised depending on the validity of the data being configured.
 
               # File openssl/lib/openssl/config.rb, line 264
def initialize(filename = nil)
  @data = {}
  if filename
    File.open(filename.to_s) do |file|
      Config.parse_config(file).each do |section, hash|
        set_section(section, hash)
      end
    end
  end
end
             
            Parses a given string as a blob that contains configuration for OpenSSL.
If the source of the IO is a file, then consider using parse_config.
 
               # File openssl/lib/openssl/config.rb, line 37
def parse(string)
  c = new()
  parse_config(StringIO.new(string)).each do |section, hash|
    c.set_section(section, hash)
  end
  c
end
             
            Parses the configuration data read from io, see also parse.
Raises a ConfigError on invalid configuration data.
 
               # File openssl/lib/openssl/config.rb, line 53
def parse_config(io)
  begin
    parse_config_lines(io)
  rescue => error
    raise ConfigError, "error in line #{io.lineno}: " + error.message
  end
end
             
            Get a specific section from the current configuration
Given the following configurating file being loaded:
config = OpenSSL::Config.load('foo.cnf') #=> #<OpenSSL::Config sections=["default"]> puts config.to_s #=> [ default ] # foo=bar
You can get a hash of the specific section like so:
config['default'] #=> {"foo"=>"bar"}
 
               # File openssl/lib/openssl/config.rb, line 360
def [](section)
  @data[section] || {}
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:
config = OpenSSL::Config.new #=> #<OpenSSL::Config sections=[]> config['default'] = {"foo"=>"bar","baz"=>"buz"} #=> {"foo"=>"bar", "baz"=>"buz"} puts config.to_s #=> [ default ] # foo=bar # baz=buz
It’s important to note that this will essentially merge any of the keys in pairs with the existing section. For example:
config['default'] #=> {"foo"=>"bar", "baz"=>"buz"} config['default'] = {"foo" => "changed"} #=> {"foo"=>"changed"} config['default'] #=> {"foo"=>"changed", "baz"=>"buz"}
 
               # File openssl/lib/openssl/config.rb, line 399
def []=(section, pairs)
  check_modify
  set_section(section, pairs)
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:
config = OpenSSL::Config.load('foo.cnf') #=> #<OpenSSL::Config sections=["default"]> puts config.to_s #=> [ default ] # foo=bar
You can set the value of foo under the default section to a new value:
config.add_value('default', 'foo', 'buzz') #=> "buzz" puts config.to_s #=> [ default ] # foo=buzz
 
               # File openssl/lib/openssl/config.rb, line 339
def add_value(section, key, value)
  check_modify
  (@data[section] ||= {})[key] = value
end
             
            For a block.
Receive the section and its pairs for the current configuration.
config.each do |section, key, value| # ... end
 
               # File openssl/lib/openssl/config.rb, line 464
def each
  @data.each do |section, hash|
    hash.each do |key, value|
      yield [section, key, value]
    end
  end
end
             
            Gets the value of key from the given section
Given the following configurating file being loaded:
config = OpenSSL::Config.load('foo.cnf') #=> #<OpenSSL::Config sections=["default"]> puts config.to_s #=> [ default ] # foo=bar
You can get a specific value from the config if you know the section and key like so:
config.get_value('default','foo') #=> "bar"
 
               # File openssl/lib/openssl/config.rb, line 292
def get_value(section, key)
  if section.nil?
    raise TypeError.new('nil not allowed')
  end
  section = 'default' if section.empty?
  get_key_string(section, key)
end
             
            String representation of this configuration object, including the class name and its sections.
 
               # File openssl/lib/openssl/config.rb, line 475
def inspect
  "#<#{self.class.name} sections=#{sections.inspect}>"
end
             
            Get the names of all sections in the current configuration
 
               # File openssl/lib/openssl/config.rb, line 413
def sections
  @data.keys
end
             
            Get the parsable form of the current configuration
Given the following configuration being created:
config = OpenSSL::Config.new #=> #<OpenSSL::Config sections=[]> config['default'] = {"foo"=>"bar","baz"=>"buz"} #=> {"foo"=>"bar", "baz"=>"buz"} puts config.to_s #=> [ default ] # foo=bar # baz=buz
You can parse get the serialized configuration using to_s and then parse it later:
serialized_config = config.to_s # much later... new_config = OpenSSL::Config.parse(serialized_config) #=> #<OpenSSL::Config sections=["default"]> puts new_config #=> [ default ] foo=bar baz=buz
 
               # File openssl/lib/openssl/config.rb, line 443
def to_s
  ary = []
  @data.keys.sort.each do |section|
    ary << "[ #{section} ]\n"
    @data[section].keys.each do |key|
      ary << "#{key}=#{@data[section][key]}\n"
    end
    ary << "\n"
  end
  ary.join
end