<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.openssl.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.openssl-csr-new.php',
    1 => 'openssl_csr_new',
    2 => 'Erzeugt einen CSR',
  ),
  'up' => 
  array (
    0 => 'ref.openssl.php',
    1 => 'OpenSSL-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'function.openssl-csr-get-subject.php',
    1 => 'openssl_csr_get_subject',
  ),
  'next' => 
  array (
    0 => 'function.openssl-csr-sign.php',
    1 => 'openssl_csr_sign',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/openssl/functions/openssl-csr-new.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.openssl-csr-new" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">openssl_csr_new</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.2.0, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">openssl_csr_new</span> &mdash; <span class="dc-title">Erzeugt einen <abbr title="Certificate Signing Request">CSR</abbr></span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.openssl-csr-new-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>openssl_csr_new</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$distinguished_names</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="attribute"><a href="class.sensitiveparameter.php">#[\SensitiveParameter]</a> </span><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="class.opensslasymmetrickey.php" class="type OpenSSLAsymmetricKey">OpenSSLAsymmetricKey</a></span></span> <code class="parameter reference">&$private_key</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$options</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$extra_attributes</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="class.opensslcertificatesigningrequest.php" class="type OpenSSLCertificateSigningRequest">OpenSSLCertificateSigningRequest</a></span>|<span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>openssl_csr_new()</strong></span> erzeugt einen neuen
   <abbr title="Certificate Signing Request">CSR</abbr> (Certificate Signing Request,
   Zertifikats-Signierungsanfrage) basierend auf den Informationen, die mit
   dem Parameter <code class="parameter">distinguished_names</code> angegeben werden.
  </p>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
 <span class="simpara">
  Die ordnungsgemäße Ausführung dieser Funktion setzt die Installation einer
  gültigen <var class="filename">openssl.cnf</var>-Datei voraus. Mehr Information
  hierzu sind im Abschnitt
  <a href="openssl.installation.php" class="link">Installation</a> zu finden.
 </span>
</p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.openssl-csr-new-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">distinguished_names</code></dt>
     <dd>
      <p class="para">
       Der Distinguished Name oder die Subjekt-Felder, die in das Zertifikat
       aufgenommen werden sollen. <code class="parameter">distinguished_names</code>
       ist ein assoziatives Array, in dem die Schlüssel die Attributnamen der
       Distinguished Names darstellen und die Werte entweder Zeichenketten (für
       einen einzelnen Wert) oder Arrays (wenn mehrere Werte festgelegt werden
       müssen) sein können.
      </p>
     </dd>
    
    
     <dt><code class="parameter">private_key</code></dt>
     <dd>
      <p class="para">
       <code class="parameter">private_key</code> muss auf einen zuvor mit
       <span class="function"><a href="function.openssl-pkey-new.php" class="function">openssl_pkey_new()</a></span> erzeugten (oder anderweitig von
       der openssl_pkey-Familie erhaltenen) privaten Schlüssel oder auf eine
       <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>-Variable gesetzt werden. Wenn der Wert <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> ist, wird ein neuer
       privater Schlüssel basierend auf den übergebenen
       <code class="parameter">options</code> erzeugt und der übergebenen Variablen
       zugewiesen. Der zugehörige öffentliche Teil des Schlüssels wird zum
       Signieren des <abbr title="Certificate Signing Request">CSR</abbr> verwendet.
      </p>
     </dd>
    
    
     <dt><code class="parameter">options</code></dt>
     <dd>
      <p class="para">
       In der Standardeinstellung werden die Informationen für die Anfrage aus
       der <code class="literal">openssl.conf</code> des Systems verwendet; ein Abschnitt
       der Konfigurationsdatei kann durch Setzen des Schlüssels
       <code class="literal">config_section</code> in <code class="parameter">options</code>
       angegeben werden. Außerdem kann eine alternative
       OpenSSL-Konfigurationsdatei angegeben, indem der Wert des Schlüssels
       <code class="literal">config</code> auf den Pfad der zu verwendenden Datei gesetzt
       wird. Die unten in der Tabelle aufgeführten Schlüssel, soweit in
       <code class="parameter">options</code> vorhanden, verhalten sich genau gleich
       wie die entsprechenden Werte in der <code class="literal">openssl.conf</code>.
       <table class="doctable table">
        <caption><strong>Überschreiben der Konfiguration</strong></caption>
        
         <thead>
          <tr>
           <th><code class="parameter">options</code>-Schlüssel</th>
           <th>Typ</th>
           <th><code class="literal">openssl.conf</code>-Entsprechung</th>
           <th>Beschreibung</th>
          </tr>

         </thead>

         <tbody class="tbody">
          <tr>
           <td>digest_alg</td>
           <td><span class="type"><a href="language.types.string.php" class="type string">string</a></span></td>
           <td>default_md</td>
           <td>
            Digest-Methode oder Signaturhash, üblicherweise eins von
            <span class="function"><a href="function.openssl-get-md-methods.php" class="function">openssl_get_md_methods()</a></span>.
           </td>
          </tr>

          <tr>
           <td>x509_extensions</td>
           <td><span class="type"><a href="language.types.string.php" class="type string">string</a></span></td>
           <td>x509_extensions</td>
           <td>
            Bestimmt, welche Erweiterung verwendet werden soll, wenn ein
            x509-Zertifikat erzeugt werden soll.
           </td>
          </tr>

          <tr>
           <td>req_extensions</td>
           <td><span class="type"><a href="language.types.string.php" class="type string">string</a></span></td>
           <td>req_extensions</td>
           <td>
            Bestimmt welche Erweiterung verwendet werden soll, wenn eine
            Zertifikats-Signierungsanfrage (<abbr title="Certificate Signing Request">CSR</abbr>) erzeugt
            werden soll.
           </td>
          </tr>

          <tr>
           <td>private_key_bits</td>
           <td><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></td>
           <td>default_bits</td>
           <td>
            Bestimmt wieviele Bits verwendet werden sollen, um einen privaten
            Schlüssel zu erzeugen.
           </td>
          </tr>

          <tr>
           <td>private_key_type</td>
           <td><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></td>
           <td>keine</td>
           <td>
            Bestimmt den Typ des privaten Schlüssels, der erzeugt werden soll.
            Der Typ kann einer der folgenden sein:
            <strong><code><a href="openssl.key-types.php#constant.openssl-keytype-dsa">OPENSSL_KEYTYPE_DSA</a></code></strong>,
            <strong><code><a href="openssl.key-types.php#constant.openssl-keytype-dh">OPENSSL_KEYTYPE_DH</a></code></strong>,
            <strong><code><a href="openssl.key-types.php#constant.openssl-keytype-rsa">OPENSSL_KEYTYPE_RSA</a></code></strong> oder
            <strong><code><a href="openssl.key-types.php#constant.openssl-keytype-ec">OPENSSL_KEYTYPE_EC</a></code></strong>. Der Standardwert ist
            <strong><code><a href="openssl.key-types.php#constant.openssl-keytype-rsa">OPENSSL_KEYTYPE_RSA</a></code></strong>.
           </td>
          </tr>

          <tr>
           <td>encrypt_key</td>
           <td><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></td>
           <td>encrypt_key</td>
           <td>
            Soll ein exportierter Schlüssel (mit Passphrase) verschlüsselt
            werden?
           </td>
          </tr>

          <tr>
           <td>encrypt_key_cipher</td>
           <td><span class="type"><a href="language.types.integer.php" class="type int">int</a></span></td>
           <td>keine</td>
           <td>
            Eine der <a href="openssl.ciphers.php" class="link">Ziffer-Konstanten</a>.
           </td>
          </tr>

          <tr>
           <td>curve_name</td>
           <td><span class="type"><a href="language.types.string.php" class="type string">string</a></span></td>
           <td>none</td>
           <td>
            Einer der <span class="function"><a href="function.openssl-get-curve-names.php" class="function">openssl_get_curve_names()</a></span>.
           </td>
          </tr>

          <tr>
           <td>config</td>
           <td><span class="type"><a href="language.types.string.php" class="type string">string</a></span></td>
           <td>N/A</td>
           <td>
            Pfad zur eigenen alternativen openssl.conf-Datei.
           </td>
          </tr>

         </tbody>
        
       </table>

      </p>
     </dd>
    
    
     <dt><code class="parameter">extra_attributes</code></dt>
     <dd>
      <p class="para">
       <code class="parameter">extra_attributes</code> wird verwendet, um zusätzliche
       Attribute für den <abbr title="Certificate Signing Request">CSR</abbr> anzugeben. Es handelt sich um
       ein assoziatives Array, dessen Schlüssel in OIDs umgewandelt und als
       <abbr title="Certificate Signing Request">CSR</abbr>-Attribute verwendet werden.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.openssl-csr-new-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Gibt bei Erfolg den <abbr title="Certificate Signing Request">CSR</abbr> zurück; <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> wenn die
   <abbr title="Certificate Signing Request">CSR</abbr>-Erstellung erfolgreich war, aber das Signieren
   fehlgeschlagen ist. Bei einem Fehler wird <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.openssl-csr-new-changelog">
  <h3 class="title">Changelog</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Beschreibung</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>8.4.0</td>
      <td>
       Das assoziative Array <code class="parameter">distinguished_names</code>
       unterstützt nun Arrays als Werte, sodass mehrere Werte für ein einzelnes
       Attribut angegeben werden können.
      </td>
     </tr>

     <tr>
      <td>8.4.0</td>
      <td>
       Der Parameter <code class="parameter">extra_attributes</code> setzt nun korrekt
       die CSR-Attribute, anstatt wie bisher fälschlicherweise den
       Distinguished Name des Subjekts zu ändern.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       Bei Erfolg gibt diese Funktion nun eine
       <span class="classname"><a href="class.opensslcertificatesigningrequest.php" class="classname">OpenSSLCertificateSigningRequest</a></span>-Instanz zurück;
       vorher wurde eine <a href="language.types.resource.php" class="link">Ressource</a> vom Typ <code class="literal">OpenSSL X.509
       CSR</code> zurückgegeben.
      </td>
     </tr>

     <tr>
      <td>8.0.0</td>
      <td>
       <code class="parameter">private_key</code> akzeptiert nun eine
       <span class="classname"><a href="class.opensslasymmetrickey.php" class="classname">OpenSSLAsymmetricKey</a></span>-Instanz; vorher wurde eine
       <a href="language.types.resource.php" class="link">Ressource</a> vom Typ <code class="literal">OpenSSL-Schlüssel</code> akzeptiert.
      </td>
     </tr>

     <tr>
      <td>7.1.0</td>
      <td>
       <code class="parameter">options</code> unterstützt nun auch
       <code class="literal">curve_name</code>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-function.openssl-csr-new-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Erzeugen eines selbstsignierten Zertifikats</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// bei SSL-Zertifikate ist der commonName der zu sichernde Domain-Name<br />// bei S/MIME-Zertifikate ist der commonName der Eigentümer der E-Mail-Adresse<br />// die Felder location und identification beziehen sich auf den Eigentümer der<br />// zu sichernden Domain oder des E-Mail-Eigentümers<br /></span><span style="color: #0000BB">$dn </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"countryName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"GB"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"stateOrProvinceName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"Somerset"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"localityName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"Glastonbury"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"organizationName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"The Brain Room Limited"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"organizationalUnitName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"PHP Documentation Team"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"commonName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"Wez Furlong"</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"emailAddress" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"wez@example.com"<br /></span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Erzeugen eines neuen privaten (und öffentlichen) Schlüsselpaars<br /></span><span style="color: #0000BB">$privkey </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">(array(<br />    </span><span style="color: #DD0000">"private_key_bits" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">2048</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"private_key_type" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">OPENSSL_KEYTYPE_RSA</span><span style="color: #007700">,<br />));<br /><br /></span><span style="color: #FF8000">// Erzeugen einer Zertifikats-Signierungsanfrage<br /></span><span style="color: #0000BB">$csr </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_csr_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$dn</span><span style="color: #007700">, </span><span style="color: #0000BB">$privkey</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'digest_alg' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'sha256'</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Erzeugen eines selbstsignierten Zertifikats, das für die Dauer von 365 Tagen<br />// gültig ist.<br /></span><span style="color: #0000BB">$x509 </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_csr_sign</span><span style="color: #007700">(</span><span style="color: #0000BB">$csr</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">$privkey</span><span style="color: #007700">, </span><span style="color: #0000BB">$days</span><span style="color: #007700">=</span><span style="color: #0000BB">365</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'digest_alg' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'sha256'</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Sichern des privaten Schlüssels, des CSR und des selbstsignierten<br />// Zertifikats für die spätere Verwendung<br /></span><span style="color: #0000BB">openssl_csr_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$csr</span><span style="color: #007700">, </span><span style="color: #0000BB">$csrout</span><span style="color: #007700">) and </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$csrout</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">openssl_x509_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$x509</span><span style="color: #007700">, </span><span style="color: #0000BB">$certout</span><span style="color: #007700">) and </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$certout</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">openssl_pkey_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$privkey</span><span style="color: #007700">, </span><span style="color: #0000BB">$pkeyout</span><span style="color: #007700">, </span><span style="color: #DD0000">"mypassword"</span><span style="color: #007700">) and </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkeyout</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Anzeigen aller aufgetretenen Fehler<br /></span><span style="color: #007700">while ((</span><span style="color: #0000BB">$e </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_error_string</span><span style="color: #007700">()) !== </span><span style="color: #0000BB">false</span><span style="color: #007700">) {<br />    echo </span><span style="color: #0000BB">$e </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>

   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Erzeugen eines selbstsignierten ECC-Zertifikats (von PHP 7.1.0 an)</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$subject </span><span style="color: #007700">= array(<br />    </span><span style="color: #DD0000">"commonName" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">"docs.php.net"</span><span style="color: #007700">,<br />);<br /><br /></span><span style="color: #FF8000">// Erzeugen eines neuen privaten (und öffentlichen) Schlüsselpaars<br /></span><span style="color: #0000BB">$private_key </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">(array(<br />    </span><span style="color: #DD0000">"private_key_type" </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">OPENSSL_KEYTYPE_EC</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">"curve_name" </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'prime256v1'</span><span style="color: #007700">,<br />));<br /><br /></span><span style="color: #FF8000">// Erzeugen einer Zertifikats-Signierungsanfrage<br /></span><span style="color: #0000BB">$csr </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_csr_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$subject</span><span style="color: #007700">, </span><span style="color: #0000BB">$private_key</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'digest_alg' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'sha384'</span><span style="color: #007700">));<br /><br /></span><span style="color: #FF8000">// Erzeugen eines selbstsignierten EC-Zertifikats<br /></span><span style="color: #0000BB">$x509 </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_csr_sign</span><span style="color: #007700">(</span><span style="color: #0000BB">$csr</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">$private_key</span><span style="color: #007700">, </span><span style="color: #0000BB">$days</span><span style="color: #007700">=</span><span style="color: #0000BB">365</span><span style="color: #007700">, array(</span><span style="color: #DD0000">'digest_alg' </span><span style="color: #007700">=&gt; </span><span style="color: #DD0000">'sha384'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">openssl_x509_export_to_file</span><span style="color: #007700">(</span><span style="color: #0000BB">$x509</span><span style="color: #007700">, </span><span style="color: #DD0000">'ecc-cert.pem'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">openssl_pkey_export_to_file</span><span style="color: #007700">(</span><span style="color: #0000BB">$private_key</span><span style="color: #007700">, </span><span style="color: #DD0000">'ecc-private.key'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.openssl-csr-new-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.openssl-csr-sign.php" class="function" rel="rdfs-seeAlso">openssl_csr_sign()</a> - Signiert einen CSR mit einem anderen Zertifikat (oder
   sich selbst) und generiert ein Zertifikat</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>