HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Ruby27-x64/share/doc/ruby/html/OpenSSL/Config.html
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">

<title>class OpenSSL::Config - RDoc Documentation</title>

<script type="text/javascript">
  var rdoc_rel_prefix = "../";
  var index_rel_prefix = "../";
</script>

<script src="../js/navigation.js" defer></script>
<script src="../js/search.js" defer></script>
<script src="../js/search_index.js" defer></script>
<script src="../js/searcher.js" defer></script>
<script src="../js/darkfish.js" defer></script>

<link href="../css/fonts.css" rel="stylesheet">
<link href="../css/rdoc.css" rel="stylesheet">




<body id="top" role="document" class="class">
<nav role="navigation">
  <div id="project-navigation">
    <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2>
    <a href="../index.html" rel="home">Home</a>
  </h2>

  <div id="table-of-contents-navigation">
    <a href="../table_of_contents.html#pages">Pages</a>
    <a href="../table_of_contents.html#classes">Classes</a>
    <a href="../table_of_contents.html#methods">Methods</a>
  </div>
</div>

    <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

  </div>

  

  <div id="class-metadata">
    
    <div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  
  <p class="link"><a href="../Object.html">Object</a>
  
</div>

    <div id="includes-section" class="nav-section">
  <h3>Included Modules</h3>

  <ul class="link-list">
  
  
    <li><a class="include" href="../Enumerable.html">Enumerable</a>
  
  
  </ul>
</div>

    
    <!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    
    <li ><a href="#method-c-clear_comments">::clear_comments</a>
    
    <li ><a href="#method-c-extract_reference">::extract_reference</a>
    
    <li ><a href="#method-c-get_definition">::get_definition</a>
    
    <li ><a href="#method-c-get_line">::get_line</a>
    
    <li ><a href="#method-c-new">::new</a>
    
    <li ><a href="#method-c-parse">::parse</a>
    
    <li ><a href="#method-c-parse_config">::parse_config</a>
    
    <li ><a href="#method-c-parse_config_lines">::parse_config_lines</a>
    
    <li ><a href="#method-c-unescape_value">::unescape_value</a>
    
    <li ><a href="#method-i-5B-5D">#[]</a>
    
    <li ><a href="#method-i-5B-5D-3D">#[]=</a>
    
    <li ><a href="#method-i-add_value">#add_value</a>
    
    <li ><a href="#method-i-check_modify">#check_modify</a>
    
    <li ><a href="#method-i-each">#each</a>
    
    <li ><a href="#method-i-get_key_string">#get_key_string</a>
    
    <li ><a href="#method-i-get_value">#get_value</a>
    
    <li ><a href="#method-i-initialize_copy">#initialize_copy</a>
    
    <li ><a href="#method-i-inspect">#inspect</a>
    
    <li ><a href="#method-i-sections">#sections</a>
    
    <li ><a href="#method-i-to_s">#to_s</a>
    
  </ul>
</div>

  </div>
</nav>

<main role="main" aria-labelledby="class-OpenSSL::Config">
  <h1 id="class-OpenSSL::Config" class="class">
    class OpenSSL::Config
  </h1>

  <section class="description">
    
<h1 id="class-OpenSSL::Config-label-OpenSSL-3A-3AConfig"><a href="Config.html"><code>OpenSSL::Config</code></a><span><a href="#class-OpenSSL::Config-label-OpenSSL-3A-3AConfig">&para;</a> <a href="#top">&uarr;</a></span></h1>

<p>Configuration for the openssl library.</p>

<p>Many system&#39;s installation of openssl library will depend on your system configuration. See the value of <a href="Config.html#DEFAULT_CONFIG_FILE"><code>OpenSSL::Config::DEFAULT_CONFIG_FILE</code></a> for the location of the file for your host.</p>

<p>See also <a href="http://www.openssl.org/docs/apps/config.html">www.openssl.org/docs/apps/config.html</a></p>

  </section>

  
  <section id="5Buntitled-5D" class="documentation-section">
    

    

    
    <section class="constants-list">
      <header>
        <h3>Constants</h3>
      </header>
      <dl>
      
        <dt id="DEFAULT_CONFIG_FILE">DEFAULT_CONFIG_FILE
        
        <dd><p>The default system configuration file for openssl</p>
        
      
        <dt id="ESCAPE_MAP">ESCAPE_MAP
        
        <dd><p>escaped char map</p>
        
      
        <dt id="QUOTE_REGEXP_DQ">QUOTE_REGEXP_DQ
        
        <dd><p>escape with backslash and doubled dq</p>
        
      
        <dt id="QUOTE_REGEXP_SQ">QUOTE_REGEXP_SQ
        
        <dd><p>escape with backslash</p>
        
      
      </dl>
    </section>
    

    

    
     <section id="public-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Class Methods</h3>
       </header>

    
      <div id="method-c-new" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">new</span><span
            class="method-args">(filename = nil)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Creates an instance of OpenSSL&#39;s configuration class.</p>

<p>This can be used in contexts like <a href="X509/ExtensionFactory.html#attribute-i-config"><code>OpenSSL::X509::ExtensionFactory.config=</code></a></p>

<p>If the optional <em>filename</em> parameter is provided, then it is read in and parsed via parse_config.</p>

<p>This can raise <a href="../IO.html"><code>IO</code></a> exceptions based on the access, or availability of the file. A <a href="ConfigError.html"><code>ConfigError</code></a> exception may be raised depending on the validity of the data being configured.</p>
          
          

          
          <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 265</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">filename</span> = <span class="ruby-keyword">nil</span>)
  <span class="ruby-ivar">@data</span> = {}
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">filename</span>
    <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>.<span class="ruby-identifier">to_s</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
      <span class="ruby-constant">Config</span>.<span class="ruby-identifier">parse_config</span>(<span class="ruby-identifier">file</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">section</span>, <span class="ruby-identifier">hash</span><span class="ruby-operator">|</span>
        <span class="ruby-keyword">self</span>[<span class="ruby-identifier">section</span>] = <span class="ruby-identifier">hash</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-parse" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">parse</span><span
            class="method-args">(string)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Parses a given <em>string</em> as a blob that contains configuration for <a href="../OpenSSL.html"><code>OpenSSL</code></a>.</p>

<p>If the source of the <a href="../IO.html"><code>IO</code></a> is a file, then consider using parse_config.</p>
          
          

          
          <div class="method-source-code" id="parse-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 37</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse</span>(<span class="ruby-identifier">string</span>)
  <span class="ruby-identifier">c</span> = <span class="ruby-identifier">new</span>()
  <span class="ruby-identifier">parse_config</span>(<span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">string</span>)).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">section</span>, <span class="ruby-identifier">hash</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">c</span>[<span class="ruby-identifier">section</span>] = <span class="ruby-identifier">hash</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">c</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-parse_config" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">parse_config</span><span
            class="method-args">(io)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Parses the configuration data read from <em>io</em>, see also parse.</p>

<p>Raises a <a href="ConfigError.html"><code>ConfigError</code></a> on invalid configuration data.</p>
          
          

          
          <div class="method-source-code" id="parse_config-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 53</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse_config</span>(<span class="ruby-identifier">io</span>)
  <span class="ruby-keyword">begin</span>
    <span class="ruby-identifier">parse_config_lines</span>(<span class="ruby-identifier">io</span>)
  <span class="ruby-keyword">rescue</span> <span class="ruby-constant">ConfigError</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-identifier">e</span>
    <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>.<span class="ruby-identifier">replace</span>(<span class="ruby-node">&quot;error in line #{io.lineno}: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>)
    <span class="ruby-identifier">raise</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="private-class-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Private Class Methods</h3>
       </header>

    
      <div id="method-c-clear_comments" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">clear_comments</span><span
            class="method-args">(line)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="clear_comments-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 193</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_comments</span>(<span class="ruby-identifier">line</span>)
  <span class="ruby-comment"># FCOMMENT</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/\A([\t\n\f ]*);.*\z/</span>)
    <span class="ruby-keyword">return</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>]
  <span class="ruby-keyword">end</span>
  <span class="ruby-comment"># COMMENT</span>
  <span class="ruby-identifier">scanned</span> = []
  <span class="ruby-keyword">while</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/[#&#39;&quot;\\]/</span>)
    <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
    <span class="ruby-identifier">c</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>]
    <span class="ruby-identifier">line</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
    <span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;#&#39;</span>
      <span class="ruby-identifier">line</span> = <span class="ruby-keyword">nil</span>
      <span class="ruby-keyword">break</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;&#39;&quot;</span>, <span class="ruby-string">&#39;&quot;&#39;</span>
      <span class="ruby-identifier">regexp</span> = (<span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;&#39;&quot;</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">QUOTE_REGEXP_SQ</span> <span class="ruby-operator">:</span> <span class="ruby-constant">QUOTE_REGEXP_DQ</span>
      <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">regexp</span>)
        <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>]
        <span class="ruby-identifier">line</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>
        <span class="ruby-identifier">line</span> = <span class="ruby-keyword">nil</span>
        <span class="ruby-keyword">break</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;\\&quot;</span>
      <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
      <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>, <span class="ruby-value">1</span>)
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-string">&#39;must not reaced&#39;</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">line</span>
  <span class="ruby-identifier">scanned</span>.<span class="ruby-identifier">join</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-extract_reference" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">extract_reference</span><span
            class="method-args">(value)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="extract_reference-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 178</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">extract_reference</span>(<span class="ruby-identifier">value</span>)
  <span class="ruby-identifier">rest</span> = <span class="ruby-string">&#39;&#39;</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/\(([^)]*)\)|\{([^}]*)\}/</span>)
    <span class="ruby-identifier">value</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">2</span>]
    <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
  <span class="ruby-keyword">elsif</span> [<span class="ruby-value">?(</span>, <span class="ruby-value">?{</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">value</span>[<span class="ruby-value">0</span>])
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConfigError</span>, <span class="ruby-string">&quot;no close brace&quot;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/[a-zA-Z0-9_]*(?:::[a-zA-Z0-9_]*)?/</span>)
    <span class="ruby-keyword">return</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">rest</span>
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">raise</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-get_definition" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">get_definition</span><span
            class="method-args">(io_stack)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="get_definition-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 230</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_definition</span>(<span class="ruby-identifier">io_stack</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span> = <span class="ruby-identifier">get_line</span>(<span class="ruby-identifier">io_stack</span>)
    <span class="ruby-keyword">while</span> <span class="ruby-regexp">/[^\\]\\\z/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">line</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">extra</span> = <span class="ruby-identifier">get_line</span>(<span class="ruby-identifier">io_stack</span>)
        <span class="ruby-identifier">line</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">extra</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-keyword">break</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">return</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-get_line" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">get_line</span><span
            class="method-args">(io_stack)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="get_line-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 243</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_line</span>(<span class="ruby-identifier">io_stack</span>)
  <span class="ruby-keyword">while</span> <span class="ruby-identifier">io</span> = <span class="ruby-identifier">io_stack</span>.<span class="ruby-identifier">last</span>
    <span class="ruby-keyword">if</span> <span class="ruby-identifier">line</span> = <span class="ruby-identifier">io</span>.<span class="ruby-identifier">gets</span>
      <span class="ruby-keyword">return</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/[\r\n]*/</span>, <span class="ruby-string">&#39;&#39;</span>)
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">io_stack</span>.<span class="ruby-identifier">pop</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-parse_config_lines" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">parse_config_lines</span><span
            class="method-args">(io)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="parse_config_lines-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 77</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">parse_config_lines</span>(<span class="ruby-identifier">io</span>)
  <span class="ruby-identifier">section</span> = <span class="ruby-string">&#39;default&#39;</span>
  <span class="ruby-identifier">data</span> = {<span class="ruby-identifier">section</span> <span class="ruby-operator">=&gt;</span> {}}
  <span class="ruby-identifier">io_stack</span> = [<span class="ruby-identifier">io</span>]
  <span class="ruby-keyword">while</span> <span class="ruby-identifier">definition</span> = <span class="ruby-identifier">get_definition</span>(<span class="ruby-identifier">io_stack</span>)
    <span class="ruby-identifier">definition</span> = <span class="ruby-identifier">clear_comments</span>(<span class="ruby-identifier">definition</span>)
    <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">definition</span>.<span class="ruby-identifier">empty?</span>
    <span class="ruby-keyword">case</span> <span class="ruby-identifier">definition</span>
    <span class="ruby-keyword">when</span> <span class="ruby-regexp">/\A\[/</span>
      <span class="ruby-keyword">if</span> <span class="ruby-regexp">/\[([^\]]*)\]/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">definition</span>
        <span class="ruby-identifier">section</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">strip</span>
        <span class="ruby-identifier">data</span>[<span class="ruby-identifier">section</span>] <span class="ruby-operator">||=</span> {}
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConfigError</span>, <span class="ruby-string">&quot;missing close square bracket&quot;</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-regexp">/\A\.include (\s*=\s*)?(.+)\z/</span>
      <span class="ruby-identifier">path</span> = <span class="ruby-node">$2</span>
      <span class="ruby-keyword">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">path</span>)
        <span class="ruby-identifier">files</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-string">&quot;*.{cnf,conf}&quot;</span>), <span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">FNM_EXTGLOB</span>)
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">files</span> = [<span class="ruby-identifier">path</span>]
      <span class="ruby-keyword">end</span>

      <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">filename</span><span class="ruby-operator">|</span>
        <span class="ruby-keyword">begin</span>
          <span class="ruby-identifier">io_stack</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">filename</span>))
        <span class="ruby-keyword">rescue</span>
          <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConfigError</span>, <span class="ruby-string">&quot;could not include file &#39;%s&#39;&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">filename</span>
        <span class="ruby-keyword">end</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-regexp">/\A([^:\s]*)(?:::([^:\s]*))?\s*=(.*)\z/</span>
      <span class="ruby-keyword">if</span> <span class="ruby-node">$2</span>
        <span class="ruby-identifier">section</span> = <span class="ruby-node">$1</span>
        <span class="ruby-identifier">key</span> = <span class="ruby-node">$2</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">key</span> = <span class="ruby-node">$1</span>
      <span class="ruby-keyword">end</span>
      <span class="ruby-identifier">value</span> = <span class="ruby-identifier">unescape_value</span>(<span class="ruby-identifier">data</span>, <span class="ruby-identifier">section</span>, <span class="ruby-node">$3</span>)
      (<span class="ruby-identifier">data</span>[<span class="ruby-identifier">section</span>] <span class="ruby-operator">||=</span> {})[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">strip</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConfigError</span>, <span class="ruby-string">&quot;missing equal sign&quot;</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">data</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-c-unescape_value" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">unescape_value</span><span
            class="method-args">(data, section, value)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="unescape_value-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 135</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">unescape_value</span>(<span class="ruby-identifier">data</span>, <span class="ruby-identifier">section</span>, <span class="ruby-identifier">value</span>)
  <span class="ruby-identifier">scanned</span> = []
  <span class="ruby-keyword">while</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">match</span>(<span class="ruby-regexp">/[&#39;&quot;\\$]/</span>)
    <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">pre_match</span>
    <span class="ruby-identifier">c</span> = <span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>]
    <span class="ruby-identifier">value</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
    <span class="ruby-keyword">case</span> <span class="ruby-identifier">c</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;&#39;&quot;</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">match</span>(<span class="ruby-constant">QUOTE_REGEXP_SQ</span>)
        <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\\(.)/</span>, <span class="ruby-string">&#39;\\1&#39;</span>)
        <span class="ruby-identifier">value</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-keyword">break</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&#39;&quot;&#39;</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">m</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">match</span>(<span class="ruby-constant">QUOTE_REGEXP_DQ</span>)
        <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/&quot;&quot;/</span>, <span class="ruby-string">&#39;&#39;</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\\(.)/</span>, <span class="ruby-string">&#39;\\1&#39;</span>)
        <span class="ruby-identifier">value</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">post_match</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-keyword">break</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;\\&quot;</span>
      <span class="ruby-identifier">c</span> = <span class="ruby-identifier">value</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>, <span class="ruby-value">1</span>)
      <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-constant">ESCAPE_MAP</span>[<span class="ruby-identifier">c</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span>)
    <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;$&quot;</span>
      <span class="ruby-identifier">ref</span>, <span class="ruby-identifier">value</span> = <span class="ruby-identifier">extract_reference</span>(<span class="ruby-identifier">value</span>)
      <span class="ruby-identifier">refsec</span> = <span class="ruby-identifier">section</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">index</span>(<span class="ruby-string">&#39;::&#39;</span>)
        <span class="ruby-identifier">refsec</span>, <span class="ruby-identifier">ref</span> = <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">&#39;::&#39;</span>, <span class="ruby-value">2</span>)
      <span class="ruby-keyword">end</span>
      <span class="ruby-keyword">if</span> <span class="ruby-identifier">v</span> = <span class="ruby-identifier">get_key_string</span>(<span class="ruby-identifier">data</span>, <span class="ruby-identifier">refsec</span>, <span class="ruby-identifier">ref</span>)
        <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">v</span>
      <span class="ruby-keyword">else</span>
        <span class="ruby-identifier">raise</span> <span class="ruby-constant">ConfigError</span>, <span class="ruby-string">&quot;variable has no value&quot;</span>
      <span class="ruby-keyword">end</span>
    <span class="ruby-keyword">else</span>
      <span class="ruby-identifier">raise</span> <span class="ruby-string">&#39;must not reaced&#39;</span>
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">scanned</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">value</span>
  <span class="ruby-identifier">scanned</span>.<span class="ruby-identifier">join</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Public Instance Methods</h3>
       </header>

    
      <div id="method-i-5B-5D" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">[]</span><span
            class="method-args">(section)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Get a specific <em>section</em> from the current configuration</p>

<p>Given the following configurating file being loaded:</p>

<pre class="ruby"><span class="ruby-identifier">config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">load</span>(<span class="ruby-string">&#39;foo.cnf&#39;</span>)
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[&quot;default&quot;]&gt;</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=bar</span>
</pre>

<p>You can get a hash of the specific section like so:</p>

<pre class="ruby"><span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>]
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;bar&quot;}</span>
</pre>
          
          

          
          <div class="method-source-code" id="5B-5D-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 359</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">section</span>)
  <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">section</span>] <span class="ruby-operator">||</span> {}
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-5B-5D-3D" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">[]=</span><span
            class="method-args">(section, pairs)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Sets a specific <em>section</em> name with a <a href="../Hash.html"><code>Hash</code></a> <em>pairs</em>.</p>

<p>Given the following configuration being created:</p>

<pre class="ruby"><span class="ruby-identifier">config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">new</span>
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[]&gt;</span>
<span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>] = {<span class="ruby-string">&quot;foo&quot;</span><span class="ruby-operator">=&gt;</span><span class="ruby-string">&quot;bar&quot;</span>,<span class="ruby-string">&quot;baz&quot;</span><span class="ruby-operator">=&gt;</span><span class="ruby-string">&quot;buz&quot;</span>}
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;bar&quot;, &quot;baz&quot;=&gt;&quot;buz&quot;}</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=bar</span>
  <span class="ruby-comment">#   baz=buz</span>
</pre>

<p>It&#39;s important to note that this will essentially merge any of the keys in <em>pairs</em> with the existing <em>section</em>. For example:</p>

<pre class="ruby"><span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>]
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;bar&quot;, &quot;baz&quot;=&gt;&quot;buz&quot;}</span>
<span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>] = {<span class="ruby-string">&quot;foo&quot;</span> <span class="ruby-operator">=&gt;</span> <span class="ruby-string">&quot;changed&quot;</span>}
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;changed&quot;}</span>
<span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>]
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;changed&quot;, &quot;baz&quot;=&gt;&quot;buz&quot;}</span>
</pre>
          
          

          
          <div class="method-source-code" id="5B-5D-3D-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 396</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]=</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">pairs</span>)
  <span class="ruby-identifier">check_modify</span>
  <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">section</span>] <span class="ruby-operator">||=</span> {}
  <span class="ruby-identifier">pairs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
    <span class="ruby-keyword">self</span>.<span class="ruby-identifier">add_value</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-add_value" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">add_value</span><span
            class="method-args">(section, key, value)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p><a href="../Set.html"><code>Set</code></a> the target <em>key</em> with a given <em>value</em> under a specific <em>section</em>.</p>

<p>Given the following configurating file being loaded:</p>

<pre class="ruby"><span class="ruby-identifier">config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">load</span>(<span class="ruby-string">&#39;foo.cnf&#39;</span>)
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[&quot;default&quot;]&gt;</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=bar</span>
</pre>

<p>You can set the value of <em>foo</em> under the <em>default</em> section to a new value:</p>

<pre class="ruby"><span class="ruby-identifier">config</span>.<span class="ruby-identifier">add_value</span>(<span class="ruby-string">&#39;default&#39;</span>, <span class="ruby-string">&#39;foo&#39;</span>, <span class="ruby-string">&#39;buzz&#39;</span>)
  <span class="ruby-comment">#=&gt; &quot;buzz&quot;</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=buzz</span>
</pre>
          
          

          
          <div class="method-source-code" id="add_value-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 338</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">add_value</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
  <span class="ruby-identifier">check_modify</span>
  (<span class="ruby-ivar">@data</span>[<span class="ruby-identifier">section</span>] <span class="ruby-operator">||=</span> {})[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-each" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">each</span><span
            class="method-args">() { |section, key, value| ... }</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>For a block.</p>

<p>Receive the section and its pairs for the current configuration.</p>

<pre class="ruby"><span class="ruby-identifier">config</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
  <span class="ruby-comment"># ...</span>
<span class="ruby-keyword">end</span>
</pre>
          
          

          
          <div class="method-source-code" id="each-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 457</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">each</span>
  <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">section</span>, <span class="ruby-identifier">hash</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
      <span class="ruby-keyword">yield</span> [<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>]
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-get_value" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">get_value</span><span
            class="method-args">(section, key)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Gets the value of <em>key</em> from the given <em>section</em></p>

<p>Given the following configurating file being loaded:</p>

<pre class="ruby"><span class="ruby-identifier">config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">load</span>(<span class="ruby-string">&#39;foo.cnf&#39;</span>)
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[&quot;default&quot;]&gt;</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=bar</span>
</pre>

<p>You can get a specific value from the config if you know the <em>section</em> and <em>key</em> like so:</p>

<pre class="ruby"><span class="ruby-identifier">config</span>.<span class="ruby-identifier">get_value</span>(<span class="ruby-string">&#39;default&#39;</span>,<span class="ruby-string">&#39;foo&#39;</span>)
  <span class="ruby-comment">#=&gt; &quot;bar&quot;</span>
</pre>
          
          

          
          <div class="method-source-code" id="get_value-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 293</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_value</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">section</span>.<span class="ruby-identifier">nil?</span>
    <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&#39;nil not allowed&#39;</span>)
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">section</span> = <span class="ruby-string">&#39;default&#39;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">section</span>.<span class="ruby-identifier">empty?</span>
  <span class="ruby-identifier">get_key_string</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-inspect" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">inspect</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p><a href="../String.html"><code>String</code></a> representation of this configuration object, including the class name and its sections.</p>
          
          

          
          <div class="method-source-code" id="inspect-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 468</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>
  <span class="ruby-node">&quot;#&lt;#{self.class.name} sections=#{sections.inspect}&gt;&quot;</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-sections" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">sections</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Get the names of all sections in the current configuration</p>
          
          

          
          <div class="method-source-code" id="sections-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 406</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sections</span>
  <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">keys</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-to_s" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">to_s</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          <p>Get the parsable form of the current configuration</p>

<p>Given the following configuration being created:</p>

<pre class="ruby"><span class="ruby-identifier">config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">new</span>
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[]&gt;</span>
<span class="ruby-identifier">config</span>[<span class="ruby-string">&#39;default&#39;</span>] = {<span class="ruby-string">&quot;foo&quot;</span><span class="ruby-operator">=&gt;</span><span class="ruby-string">&quot;bar&quot;</span>,<span class="ruby-string">&quot;baz&quot;</span><span class="ruby-operator">=&gt;</span><span class="ruby-string">&quot;buz&quot;</span>}
  <span class="ruby-comment">#=&gt; {&quot;foo&quot;=&gt;&quot;bar&quot;, &quot;baz&quot;=&gt;&quot;buz&quot;}</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
  <span class="ruby-comment">#   foo=bar</span>
  <span class="ruby-comment">#   baz=buz</span>
</pre>

<p>You can parse get the serialized configuration using <a href="Config.html#method-i-to_s"><code>to_s</code></a> and then parse it later:</p>

<pre class="ruby"><span class="ruby-identifier">serialized_config</span> = <span class="ruby-identifier">config</span>.<span class="ruby-identifier">to_s</span>
<span class="ruby-comment"># much later...</span>
<span class="ruby-identifier">new_config</span> = <span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">Config</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">serialized_config</span>)
  <span class="ruby-comment">#=&gt; #&lt;OpenSSL::Config sections=[&quot;default&quot;]&gt;</span>
<span class="ruby-identifier">puts</span> <span class="ruby-identifier">new_config</span>
  <span class="ruby-comment">#=&gt; [ default ]</span>
      <span class="ruby-identifier">foo</span>=<span class="ruby-identifier">bar</span>
      <span class="ruby-identifier">baz</span>=<span class="ruby-identifier">buz</span>
</pre>
          
          

          
          <div class="method-source-code" id="to_s-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 436</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_s</span>
  <span class="ruby-identifier">ary</span> = []
  <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">section</span><span class="ruby-operator">|</span>
    <span class="ruby-identifier">ary</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;[ #{section} ]\n&quot;</span>
    <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">section</span>].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
      <span class="ruby-identifier">ary</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{key}=#{@data[section][key]}\n&quot;</span>
    <span class="ruby-keyword">end</span>
    <span class="ruby-identifier">ary</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;\n&quot;</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">ary</span>.<span class="ruby-identifier">join</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
     <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
       <header>
         <h3>Private Instance Methods</h3>
       </header>

    
      <div id="method-i-check_modify" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">check_modify</span><span
            class="method-args">()</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="check_modify-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 484</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">check_modify</span>
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;Insecure: can&#39;t modify OpenSSL config&quot;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">frozen?</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-get_key_string" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">get_key_string</span><span
            class="method-args">(section, key)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="get_key_string-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 488</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">get_key_string</span>(<span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>)
  <span class="ruby-constant">Config</span>.<span class="ruby-identifier">get_key_string</span>(<span class="ruby-ivar">@data</span>, <span class="ruby-identifier">section</span>, <span class="ruby-identifier">key</span>)
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
      <div id="method-i-initialize_copy" class="method-detail ">
        
        <div class="method-heading">
          <span class="method-name">initialize_copy</span><span
            class="method-args">(other)</span>
          
          <span class="method-click-advice">click to toggle source</span>
          
        </div>
        

        <div class="method-description">
          
          
          
          

          
          <div class="method-source-code" id="initialize_copy-source">
            <pre><span class="ruby-comment"># File ext/openssl/lib/openssl/config.rb, line 480</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize_copy</span>(<span class="ruby-identifier">other</span>)
  <span class="ruby-ivar">@data</span> = <span class="ruby-identifier">other</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">dup</span>
<span class="ruby-keyword">end</span></pre>
          </div>
          
        </div>

        

        
      </div>

    
    </section>
  
  </section>

</main>


<footer id="validator-badges" role="contentinfo">
  <p><a href="https://validator.w3.org/check/referer">Validate</a>
  <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>