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.
| QUOTE_REGEXP_SQ | = | /\A([^'\\]*(?:\\.[^'\\]*)*)'/ |
escape with backslash |
||
| QUOTE_REGEXP_DQ | = | /\A([^"\\]*(?:""[^"\\]*|\\.[^"\\]*)*)"/ |
escape with backslash and doubled dq |
||
| ESCAPE_MAP | = | { "r" => "\r", "n" => "\n", "b" => "\b", "t" => "\t", } |
escaped char map |
||
| DEFAULT_CONFIG_FILE | = | rb_str_new2(default_config_file) |
The default system configuration file for openssl |
||
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.
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.
Parses the configuration data read from io, see also parse.
Raises a ConfigError on invalid configuration data.
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"}
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"}
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
For a block.
Receive the section and its pairs for the current configuration.
config.each do |section, key, value|
# ...
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"
String representation of this configuration object, including the class name and its sections.
Get the names of all sections in the current configuration
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