In Files

  • openssl/lib/openssl/config.rb
  • openssl/ossl.c

Parent

Included Modules

Class/Module Index [+]

Quicksearch

OpenSSL::Config

OpenSSL::Config ↑

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.

See also www.openssl.org/docs/apps/config.html

Constants

DEFAULT_CONFIG_FILE

The default system configuration file for openssl

ESCAPE_MAP

escaped char map

QUOTE_REGEXP_DQ

escape with backslash and doubled dq

QUOTE_REGEXP_SQ

escape with backslash

Public Class Methods

new(filename = nil) click to toggle source

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 245
def initialize(filename = nil)
  @data = {}
  if filename
    File.open(filename.to_s) do |file|
      Config.parse_config(file).each do |section, hash|
        self[section] = hash
      end
    end
  end
end
            
parse(string) click to toggle source

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 35
def parse(string)
  c = new()
  parse_config(StringIO.new(string)).each do |section, hash|
    c[section] = hash
  end
  c
end
            
parse_config(io) click to toggle source

Parses the configuration data read from io, see also parse.

Raises a ConfigError on invalid configuration data.

 
               # File openssl/lib/openssl/config.rb, line 51
def parse_config(io)
  begin
    parse_config_lines(io)
  rescue ConfigError => e
    e.message.replace("error in line #{io.lineno}: " + e.message)
    raise
  end
end
            

Public Instance Methods

[](section) click to toggle source

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 339
def [](section)
  @data[section] || {}
end
            
[]=(section, pairs) click to toggle source

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 376
def []=(section, pairs)
  check_modify
  @data[section] ||= {}
  pairs.each do |key, value|
    self.add_value(section, key, value)
  end
end
            
add_value(section, key, value) click to toggle source

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 318
def add_value(section, key, value)
  check_modify
  (@data[section] ||= {})[key] = value
end
            
each() click to toggle source

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 437
def each
  @data.each do |section, hash|
    hash.each do |key, value|
      yield [section, key, value]
    end
  end
end
            
get_value(section, key) click to toggle source

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 273
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
            
inspect() click to toggle source

String representation of this configuration object, including the class name and its sections.

 
               # File openssl/lib/openssl/config.rb, line 448
def inspect
  "#<#{self.class.name} sections=#{sections.inspect}>"
end
            
sections() click to toggle source

Get the names of all sections in the current configuration

 
               # File openssl/lib/openssl/config.rb, line 386
def sections
  @data.keys
end
            
to_s() click to toggle source

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 416
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
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.