Class: OpenSSL::Config (Ruby 2.5.7)
Description: Class : OpenSSL::Config - Ruby 2.5.7

### Home Classes Methods

### In Files

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

### Parent

Object

### Methods

- ::new
- ::parse
- ::parse_config
- #[]
- #[]=
- #add_value
- #each
- #get_value
- #inspect
- #sections
- #to_s

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- IO
- IO::WaitReadable
- IO::WaitWritable
- Integer
- OpenSSL
- OpenSSL::ASN1
- OpenSSL::ASN1::ASN1Data
- OpenSSL::ASN1::ASN1Error
- OpenSSL::ASN1::Constructive
- OpenSSL::ASN1::ObjectId
- OpenSSL::ASN1::Primitive
- OpenSSL::BN
- OpenSSL::BNError
- OpenSSL::Buffering
- OpenSSL::Cipher
- OpenSSL::Cipher::Cipher
- OpenSSL::Cipher::CipherError
- OpenSSL::Config
- OpenSSL::ConfigError
- OpenSSL::Digest
- OpenSSL::Digest::DigestError
- OpenSSL::Engine
- OpenSSL::Engine::EngineError
- OpenSSL::ExtConfig
- OpenSSL::HMAC
- OpenSSL::HMACError
- OpenSSL::KDF
- OpenSSL::KDF::KDFError
- OpenSSL::Netscape
- OpenSSL::Netscape::SPKI
- OpenSSL::Netscape::SPKIError
- OpenSSL::OCSP
- OpenSSL::OCSP::BasicResponse
- OpenSSL::OCSP::CertificateId
- OpenSSL::OCSP::OCSPError
- OpenSSL::OCSP::Request
- OpenSSL::OCSP::Response
- OpenSSL::OCSP::SingleResponse
- OpenSSL::OpenSSLError
- OpenSSL::PKCS12
- OpenSSL::PKCS12::PKCS12Error
- OpenSSL::PKCS5
- OpenSSL::PKCS7
- OpenSSL::PKCS7::PKCS7Error
- OpenSSL::PKCS7::RecipientInfo
- OpenSSL::PKCS7::SignerInfo
- OpenSSL::PKey
- OpenSSL::PKey::DH
- OpenSSL::PKey::DHError
- OpenSSL::PKey::DSA
- OpenSSL::PKey::DSAError
- OpenSSL::PKey::EC
- OpenSSL::PKey::EC::Group
- OpenSSL::PKey::EC::Group::Error
- OpenSSL::PKey::EC::Point
- OpenSSL::PKey::EC::Point::Error
- OpenSSL::PKey::ECError
- OpenSSL::PKey::PKey
- OpenSSL::PKey::PKeyError
- OpenSSL::PKey::RSA
- OpenSSL::PKey::RSAError
- OpenSSL::Random
- OpenSSL::Random::RandomError
- OpenSSL::SSL
- OpenSSL::SSL::SSLContext
- OpenSSL::SSL::SSLError
- OpenSSL::SSL::SSLErrorWaitReadable
- OpenSSL::SSL::SSLErrorWaitWritable
- OpenSSL::SSL::SSLServer
- OpenSSL::SSL::SSLSocket
- OpenSSL::SSL::Session
- OpenSSL::SSL::Session::SessionError
- OpenSSL::SSL::SocketForwarder
- OpenSSL::X509
- OpenSSL::X509::Attribute
- OpenSSL::X509::AttributeError
- OpenSSL::X509::CRL
- OpenSSL::X509::CRLError
- OpenSSL::X509::Certificate
- OpenSSL::X509::CertificateError
- OpenSSL::X509::Extension
- OpenSSL::X509::ExtensionError
- OpenSSL::X509::ExtensionFactory
- OpenSSL::X509::Name
- OpenSSL::X509::Name::RFC2253DN
- OpenSSL::X509::NameError
- OpenSSL::X509::Request
- OpenSSL::X509::RequestError
- OpenSSL::X509::Revoked
- OpenSSL::X509::RevokedError
- OpenSSL::X509::Store
- OpenSSL::X509::StoreContext
- OpenSSL::X509::StoreError

No matching classes.

# 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 247
    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 37
    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 53
    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 341
    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 378
    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 320
    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 439
    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 275
    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 450
    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 388
    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 418
    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