betz            Sun Nov 25 09:00:49 2001 EDT

  Added files:                 
    /phpdoc/de/functions        openssl.xml 
  Log:
  finished log lasting translation
  

Index: phpdoc/de/functions/openssl.xml
+++ phpdoc/de/functions/openssl.xml
 <reference id="ref.openssl">
  <title>OpenSSL Funktionen</title>
  <titleabbrev>OpenSSL</titleabbrev>
  <partintro>
       &warn.experimental;
  <sect1 id="openssl.intro">
  <title>Einf�hrung</title>
  <para>
   Dieses Modul nutzt die Funktionen von
   <ulink url="&url.openssl;">OpenSSL</ulink> zur Erzeugung und
   �berpr�fung von Signaturen und zum versiegeln (verschl�sseln) und
   �ffnen (entschl�sseln) von Daten.
   PHP-4.0.4pl1 setzt OpenSSL &gt;= 0.9.6 voraus, PHP-4.0.5 und
   folgende funktionieren auch mit OpenSSL &gt;= 0.9.5.
  </para>
   <note>
   <para>Bitte beachten Sie, dass diese Extension immer noch als
   experimentell einzustufen ist!</para>
  </note>
  <para>
   OpenSSL bietet viele M�glichkeiten die dieses Modul zum jetzigen
   Zeitpunkt nicht unterst�tzt. Einige dieser M�glichkeiten werden
   vielleicht in zuk�nftigen Versionen zur Verf�gung stehen.
  </para>
  </sect1>
  <sect1 id="openssl.certparams">
  <title>Schl�ssel/Zertifikat Parameter</title>
  <para>
   Ziemlich viele der OpenSSL Funktionen ben�tigen einen Schl�ssel-
   oder einen Zertifikatparameter. PHP 4.0.5 und fr�here Versionen
   m�ssen eine Schl�ssel- oder Zertifikatsresource nutzen, die von
   einer der openssl_get_xxx Funktionen zur�ckgegeben wird. Sp�tere
   Versionen k�nnen eine der folgenden Methoden benutzen:
   <itemizedlist>
    <listitem>
     <para>
      Zertifikate
      <orderedlist>
       <listitem><simpara>Eine X.509 Resource die von
       openssl_x509_read zur�ckgegeben wird.</simpara></listitem>
       <listitem><simpara>Eine Zeichenkette mit dem Format
       <filename>file://pfad/zu/cert.pem</filename>; die angegebene
       Datei muss ein PEM verschl�sseltes Zertifikat enthalten.
       </simpara></listitem>
       <listitem><simpara>Eine Zeichenkette die den Inhalt eines
       Zertifikats enth�lt, PEM verschl�sselt.
       </simpara></listitem>
      </orderedlist>
     </para>
    </listitem>
    <listitem>
     <para>
      �ffentliche/Private Schl�ssel
      <orderedlist>
       <listitem><simpara>Eine Schl�sselresource die von
       <function>openssl_get_publickey</function> oder
       <function>openssl_get_privatekey</function> zur�ckgegeben
       wird.</simpara>
       </listitem>
       <listitem><simpara>Nur f�r �ffentliche Schl�ssel: eine X.509
       Resource.</simpara></listitem>
       <listitem><simpara>Eine Zeichenkette mit dem Format
       <filename>file://pfad/zu/datei.pem</filename> - die angegebene
       Datei muss ein PEM verschl�sseltes Zertifikat/privaten
       Schl�ssel enthalten (kann auch beides enthalten).
       </simpara></listitem>
       <listitem><simpara>Eine Zeichenkette die den Inhalt eines
       Zertifikats/Schl�ssels enth�lt, PEM verschl�sselt.</simpara>
       </listitem>
       <listitem><simpara>F�r private Schl�ssel k�nnen Sie auch die
       Syntax verwenden <emphasis>array($key, $passphrase)</emphasis>.
       $key repr�sentiert einen Schl�ssel, den Sie entweder mit der
       Notation file:// oder dem textlichen Inhalt wie oben angeben.
       $passphrase ist eine Zeichenfolge, die die Passphrase f�r den
       privaten Schl�ssel enth�lt.
       </simpara></listitem>
      </orderedlist>
     </para>
    </listitem>
   </itemizedlist>
  </para>
  </sect1>
  <sect1 id="openssl.cert.verification">
  <title>Zertifikat Nachweis</title>
  <para>
   Wenn Sie eine Funktion aufrufen, die eine Signatur/Zertifikat
   �berpr�ft, ist der Parameter <emphasis>cainfo</emphasis> ein Array,
   das Datei- und Verzeichnisnamen enth�lt, die auf vertrauensw�rdige
   CA Dateien verweisen. Falls Sie ein Verzeichnis angeben, muss dies ein
   korrekt geformtes gehashedes Verzeichnis sein, in der Art, wie es der Befehl
   <command>openssl</command> verwenden w�rde.
  </para>
  </sect1>
  <sect1 id="openssl.pkcs7.flags">
   <title>PKCS7 Kennzeichen/Konstanten</title>
   <para>
    Die S/MIME Funktionen nutzen Kennzeichen die sich dadurch auszeichnen, dass
    sie ein Bitfeld benutzen, das einen oder mehrere der folgenden Werte
    enthalten kann:

    <table>
     <title>PKCS7 KONSTANTEN</title>
      <tgroup cols="2">
       <thead>
        <row>
         <entry>Konstante</entry>
         <entry>Beschreibung</entry>
        </row>
       </thead>
       <tbody>
        <row>
         <entry>PKCS7_TEXT</entry>
         <entry>F�gt den text/plain Inhaltstyp Header einer
         verschl�sselten/signierten Nachricht hinzu.
         Wenn Sie entschl�sseln oder �berpr�fen, werden diese Header
         von der Ausgabe entfernt - wenn die entschl�sselte oder
         gepr�fte Nachricht nicht dem MIME Typ text/plain entspricht,
         tritt ein Fehler auf.</entry>
        </row>
        <row>
         <entry>PKCS7_BINARY</entry>
         <entry>Normalerweise wird die Nachricht in ein "kanonisches"
         Format konvertiert, das effektiv CR und LF als Zeilende benutzt:
         wie von der S/MIME Spezifikation gefordert.
         Wird diese Option angegeben, findet keine Konvertierung statt.
         Das kann sich als n�tzlich erweisen, wenn Sie mit bin�ren Daten
         umgehen, die nicht dem MIME Format entprechen.
         </entry>
        </row>
        <row>
         <entry>PKCS7_NOINTERN</entry>
         <entry>Wenn Sie eine Nachricht �berpr�fen, werden in der Nachricht
         enthaltene Zertifikate (falls es welche gibt) nach dem 
         unterzeichnenden Zertifikat durchsucht. Mit dieser Option werden
         nur Zertifikate benutzt, die mit dem Parameter 
         <parameter>extracerts</parameter> in der Funktion 
         <function>openssl_pkcs7_verify</function> angegeben wurden.
         Die mitgelieferten Zertifikate k�nnen aber dennoch als nicht
         vertrauensw�rdige CAs benutzt werden.
         </entry>
        </row>
        <row>
         <entry>PKCS7_NOVERIFY</entry>
         <entry>Keine �berpr�fung des signierenden Zertifikats
         einer signierten Nachricht.</entry>
        </row>
        <row>
         <entry>PKCS7_NOCHAIN</entry>
         <entry>Keine Verkn�pfung der �berpr�fung des Zertifikats mit den
         Zertifikaten des Unterzeichners: das bedeutet, die Zertifikate in
         der signierten Nachricht werden nicht als unvertrauensw�rdige CAs
         benutzt.
         </entry>
        </row>
        <row>
         <entry>PKCS7_NOCERTS</entry>
         <entry>Beim Signieren einer Nachricht wird normalerweise das
         Zertifikat des Unterzeichnenden mit in die Nachricht
         aufgenommen - mit dieser Option wird das Zertifikat nicht
         mit aufgenommen. Diese Option verringert die Gr��e der signierten
         Nachricht, aber der �berpr�fende muss eine lokale Kopie des
         Zertifikats vom Unterzeichnenden besitzen (zum Beispiel durch Angabe
         des Parameters <parameter>extracerts</parameter> in der Funktion
         <function>openssl_pkcs7_verify</function>).
         </entry>
        </row>
        <row>
         <entry>PKCS7_NOATTR</entry>
         <entry>Beim Signieren einer Nachricht wird normalerweise eine Reihe
         von Attributen mit angeh�ngt. Diese enthalten die Zeit der Signierung
         und die unterst�tzen symmetrischen Algorithmen. Mit dieser Option werden
         diese Attribute nicht mit aufgenommen.
         </entry>
        </row>
        <row>
         <entry>PKCS7_DETACHED</entry>
         <entry>Beim Signieren einer Nachricht wird Klartext-Signierung
         verwendet mit MIME Typ multipart/signed. Das ist der Standard,
         wenn Sie keinen optionalen Parameter <parameter>flags</parameter>
         an die Funktion <function>openssl_pkcs7_sign</function> �bergeben.
         Wenn Sie diese Option ausschalten wird die Nachricht mit einer 
         undurchsichtigen Signatur unterzeichnet. Dieses Verhalten ist robuster
         gegen�ber der �bersetzung durch Mail-Relays, kann aber nicht mit
         Mailprogrammen gelesen werden, die nicht den S/Mime Standard
         unterst�tzen.
         </entry>
        </row>
        <row>
         <entry>PKCS7_NOSIGS</entry>
         <entry>Kein Versuch und keine �berpr�fung der Signaturen einer
         Nachricht.
         </entry>
        </row>
       </tbody>
      </tgroup>
     </table>
   </para>
   <note>
     <para>Diese Konstanten wurden in 4.0.6 hinzugef�gt.</para>
    </note>


  </sect1>
  </partintro>
  <refentry id="function.openssl-error-string">
   <refnamediv>
    <refname>openssl_error_string</refname>
    <refpurpose>Liefert eine OpenSSL Fehlermeldung</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>mixed <function>openssl_error_string</function>
      </funcdef>
      <void/>
     </funcprototype>
    </funcsynopsis>
   &warn.experimental.func;
    <para>
     Liefert einen Fehlertext, oder &false;, wenn es keine weiteren
     Fehler gibt.
     
    </para>
    <para>
     Die Funktion <function>openssl_error_string</function> liefert den letzten
     Fehler der OpenSSL Bibliothek. Die Fehlermeldungen werden auf einem Stack
     abgelegt. Diese Funktion sollte also mehrmals aufgerufen werden, um alle
     Informationen zu erhalten.
    </para>
    <para>
     <emphasis>Die Parameter/R�ckgabewerte dieser Funktion k�nnen sich
      �ndern, bevor diese in einer Release Version von PHP zur Verf�gung stehen.
     </emphasis>
    </para>
    <para>
     <example>
      <title><function>openssl_error_string</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: Sie haben eine openssl-Funktion aufgerufen, die einen Fehler
// verursacht hat.
while($msg = openssl_error_string())
    echo $msg . "<br>";
]]>
      </programlisting>
     </example>
    </para>
    <note>
     <para>
      Diese Funktion wurde in 4.0.6 hinzugef�gt.
     </para>
    </note>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-free-key">
   <refnamediv>
    <refname>openssl_free_key</refname>
    <refpurpose>Freigabe einer Schl�sselressource</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>void <function>openssl_free_key</function></funcdef>
      <paramdef>resource <parameter>key_identifier</parameter>
      </paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     Die Funktion <function>openssl_free_key</function> l�scht den Schl�ssel mit dem
     angegebenen Parameter <parameter>key_identifier</parameter> aus
     dem Speicher.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-get-privatekey">
   <refnamediv>
    <refname>openssl_get_privatekey</refname>
    <refpurpose>Bereitet einen PEM formatierten privaten Schl�ssel zum
    Gebrauch vor</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>resource <function>openssl_get_privatekey</function>
      </funcdef>
      <paramdef>mixed <parameter>key</parameter></paramdef>
      <paramdef>string <parameter><optional>passphrase</optional>
      </parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewert: im Erfolgsfall eine positive Schl�ssel-Resource-Kennung,
     &false; im Fehlerfall.
    </para>
    <para>
     Die Funktion <function>openssl_get_privatekey</function> analysiert
     den PEM formatierten privaten Schl�ssel der mit dem Parameter
     <parameter>key</parameter> angegeben wurde und bereitet ihn
     f�r den Gebrauch durch andere Funktionen vor.
     Der optionale Parameter <parameter>passphrase</parameter> muss
     angegeben werden, falls der Schl�ssel selbst verschl�sselt ist
     (gesch�tzt durch eine Passphrase).
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-get-publickey">
   <refnamediv>
    <refname>openssl_get_publickey</refname>
    <refpurpose>Extrahiert einen �ffentlichen Schl�ssel aus einem
    Zertifikat und bereitet ihn f�r den Gebrauch vor</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>resource <function>openssl_get_publickey</function>
      </funcdef>
      <paramdef>mixed <parameter>certificate</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewert: im Erfolgsfall eine positive Schl�ssel-Resource-Kennung,
     &false; im Fehlerfall.
    </para>
    <para>
     Die Funktion <function>openssl_get_publickey</function> extrahiert den
     �ffentlichen Schl�ssel aus einem X.509 Zertifikat, angegeben
     durch den Parameter <parameter>certificate</parameter>, und bereitet
     ihn f�r den Gebrauch durch andere Funktionen vor.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-open">
   <refnamediv>
    <refname>openssl_open</refname>
    <refpurpose>�ffnet versiegelte Daten</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>bool <function>openssl_open</function></funcdef>
      <paramdef>string <parameter>sealed_data</parameter></paramdef>
      <paramdef>string <parameter>open_data</parameter></paramdef>
      <paramdef>string <parameter>env_key</parameter></paramdef>
      <paramdef>mixed <parameter>priv_key_id</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewert: &true; im Erfolgsfall, &false; im Fehlerfall. Im
     Erfolgsfall werden die ge�ffneten Daten im Parameter <parameter>
     open_data</parameter> zur�ckgegeben.
    </para>
    <para>
     Die Funktion <function>openssl_open</function> �ffnet (entschl�sselt)
     <parameter>sealed_data</parameter> unter Verwendung des privaten
     Schl�sssels, der mit der Schl�sselkennung
     <parameter>priv_key_id</parameter> und dem Umschlag Schl�ssel
     <parameter>env_key</parameter> verkn�pft ist und f�llt <parameter>
     open_data</parameter> mit den entschl�sselten Daten.
     Der Umschlag Schl�ssel wird bei der Versiegelung erzeugt und kann
     ausschlieslich f�r einen bestimmten privaten Schl�ssel verwendet werden.
     Mehr Informationen erhalten Sie unter der <function>openssl_seal</function> 
Funktion.
    </para>
    <para>
     <example>
      <title><function>openssl_open</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: $sealed und $env_key enthalten versiegelte Daten
// und unseren Umschlag Schl�ssel; beide haben wir von dem sie 
// Versiegelnden erhalten

// privaten Schl�ssel aus einer Datei holen und vorbereiten
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

// entschl�sseln der Daten und speichern in $open
if (openssl_open($sealed, $open, $env_key, $pkeyid))
    echo "Das sind die ge�ffneten Daten: ", $open;
else
    echo "�ffnen der Daten nicht m�glich!";

// l�schen des privaten Schl�ssels aus dem Speicher
openssl_free_key($pkeyid);
]]>
      </programlisting>
     </example>
    </para>
    <simpara>
     Siehe auch <function>openssl_seal</function>.
    </simpara>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-seal">
   <refnamediv>
    <refname>openssl_seal</refname>
    <refpurpose>Versiegelt (verschl�sselt) Daten</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>int <function>openssl_seal</function></funcdef>
      <paramdef>string <parameter>data</parameter></paramdef>
      <paramdef>string <parameter>sealed_data</parameter></paramdef>
      <paramdef>array <parameter>env_keys</parameter></paramdef>
      <paramdef>array <parameter>pub_key_ids</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewert: im Erolgsfall die L�nge der versiegelten Daten,
     &false; bei einem Fehler.
     War der Aufruf der Funktion erfolgreich, sind die versiegelten Daten
     in <parameter>sealed_data</parameter> enthalten und der Umschlag
     Schl�ssel steht in <parameter>env_keys</parameter> zur Verf�gung.
    </para>
    <para>
     Die Funktion <function>openssl_seal</function> versiegelt (verschl�sselt)
     <parameter>data</parameter> unter Verwendung von RC4 mit einem zuf�llig
     erzeugten geheimen Schl�ssel. Dieser Schl�ssel wird mit jedem �ffentlichen
     Schl�ssel verschl�sselt, der mit der Kennung in
     <parameter> pub_key_ids</parameter> verkn�pft ist. Jeder verschl�sselte
     Schl�ssel wird in <parameter>env_keys</parameter>zur�ckgegeben.Das
     bedeutet, dass Sie versiegelte Daten an mehrere Empf�nger versenden k�nnen
     (unter der Vorraussetzung, dass Sie irgendwann die �ffentlichen Schl�ssel
     der Empf�nger erhalten haben. Jeder Empf�nger muss sowohl die versiegelten
     Daten als auch den entsprechenden Umschlag Schl�ssel erhalten, der mit
     dem �ffentlichen Schl�ssel des Empf�ngers versiegelt wurde.
    </para>
    <para>
     <example>
      <title><function>openssl_seal</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: $data enth�lt die zu versiegelnden Daten

// holen und vorbereiten der �ffentlichen Schl�ssel unserer Empf�nger
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);

// Wiederholung f�r den zweiten Empf�nger
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);

// versiegeln der Nachricht, nur Besitzer von $pk1 und $pk2 k�nnen 
// mit Schl�sseln $sealed entschl�sseln,
// entsprechendes gilt f�r $ekeys[0] und $ekeys[1].
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));

// L�schen der Schl�ssel aus dem Speicher
openssl_free_key($pk1);
openssl_free_key($pk2);
]]>
      </programlisting>
     </example>
    </para>
    <simpara>
     Siehe auch <function>openssl_open</function>.
    </simpara>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-sign">
   <refnamediv>
    <refname>openssl_sign</refname>
    <refpurpose>Erzeugen einer Unterschrift</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>bool <function>openssl_sign</function></funcdef>
      <paramdef>string <parameter>data</parameter></paramdef>
      <paramdef>string <parameter>signature</parameter></paramdef>
      <paramdef>mixed <parameter>priv_key_id</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewert: &true; im Erfolgsfall, &false; im Fehlerfall.
     Ist der Aufruf der Funktion erfolgreich, steht die Signatur
     im Parameter <parameter>signature</parameter> zur Verf�gung.
    </para>
    <para>
     Die Funktion <function>openssl_sign</function> errechnet eine
     Unterschrift f�r die im Parameter <parameter>data</parameter>
     angegebenen Daten. F�r das hashing der Daten wird SHA1 benutzt und
     anschliessend wird mit dem privaten Schl�ssel verschl�sselt,
     angegeben mit <parameter>priv_key_id</parameter>. Beachten Sie, dass
     die Daten selbst nicht verschl�sselt werden.
    </para>
    <para>
     <example>
      <title><function>openssl_sign</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: $data enth�lt die Daten, die signiert werden sollen.

// holen und vorbereiten des privaten Schl�ssels aus einer Datei.
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

// errechnen der Unterschrift
openssl_sign($data, $signature, $pkeyid);

// L�schen des Schl�ssels aus dem Speicher
openssl_free_key($pkeyid);
]]>
      </programlisting>
     </example>
    </para>
    <simpara>
     Siehe auch <function>openssl_verify</function>.
    </simpara>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-verify">
   <refnamediv>
    <refname>openssl_verify</refname>
    <refpurpose>�berpr�ft eine Unterschrift</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>int <function>openssl_verify</function></funcdef>
      <paramdef>string <parameter>data</parameter></paramdef>
      <paramdef>string <parameter>signature</parameter></paramdef>
      <paramdef>mixed <parameter>pub_key_id</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     R�ckgabewerte: Bei korrekter Unterschrift wird 1 zur�ckgegeben,
     ist die Unterschrift nicht korrekt wird 0 zur�ckgegeben. Tritt ein 
     Fehler auf wird -1 zur�ckgegeben.
    </para>
    <para>
     Die Funktion <function>openssl_verify</function> �berpr�ft
     die Korrektheit der Unterschrift <parameter>signature</parameter>
     f�r die angegebenen Daten <parameter>data</parameter> mit Hilfe des
     �ffentlichen Schl�ssels, verkn�pft �ber den Parameter
     <parameter>pub_key_id</parameter>. Das muss der passende
     �ffentliche zum privaten Schl�ssel sein, der f�r die Unterschrift
     benutzt wurde.
    </para>

    <para>
     <example>
      <title><function>openssl_verify</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: $data und $signature enthalten die Daten und die Unterschrift

// holen und vorbereiten des �ffentlichen Schl�ssels aus dem Zertifikat
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);

// feststellen, ob die Unterschrift ok ist oder nicht 
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1)
    echo "gut";
elseif ($ok == 0)
    echo "schlecht";
else
    echo "Mist, Fehler beim �berpr�fen der Unterschrift;

// L�schen des Schl�ssels aus dem Speicher
openssl_free_key($pubkeyid);
]]>
      </programlisting>
     </example>
    </para>
    <simpara>
     Siehe auch <function>openssl_sign</function>.
    </simpara>
   </refsect1>
  </refentry>

  <refentry id="function.openssl-pkcs7-decrypt">
   <refnamediv>
    <refname>openssl_pkcs7_decrypt</refname>
    <refpurpose>Entschl�ssen einer S/MIME verschl�sselten Nachricht
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>bool <function>openssl_pkcs7_decrypt</function>
      </funcdef>
      <paramdef>string <parameter>infilename</parameter></paramdef>
      <paramdef>string <parameter>outfilename</parameter></paramdef>
      <paramdef>mixed <parameter>recipcert</parameter></paramdef>
      <paramdef>mixed <parameter>recipkey</parameter></paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     Die Funktion <function>openssl_pkcs7_decrypt</function> entschl�sselt
     die mit S/MIME verschl�sselte Nachricht, die sich in der
     Datei befindet, die mit dem Paramter <parameter>infilename</parameter>
     angegeben wurde. Benutzt wird daf�r das Zertifikat, angegeben durch
     <parameter>recipcert</parameter>, und der damit verkn�pfte
     private Schl�ssel, angegeben durch <parameter>recipkey</parameter>.
    </para>
    <para>Die entschl�sselte Nachricht wird in die Datei geschrieben, die mit
     dem Parameter <parameter>outfilename</parameter> angegeben wurde.
    </para>
    <para>
     <example>
      <title><function>openssl_pkcs7_decrypt</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Annahme: $cert enth�lt Ihr pers�nliches Zertifikat und
// $key Ihr privates Schl�sselpaar. Sie erhalten eine S/MIME Nachricht.

$infilename = "encrypted.msg";  // diese Datei enth�lt ihre verschl�sselte Nachricht
$outfilename = "decrypted.msg"; // stellen Sie sicher, dass Sie Schreibrechte haben!

if (openssl_pkcs7_decrypt($infilename, $outfilename, $cert, $key))
    echo "entschl�sselt!";
else
    echo "entschl�sseln fehlgeschlagen!";
]]>
      </programlisting>
     </example>
    </para>
    <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>

   </refsect1>
  </refentry>

  <refentry id="function.openssl-pkcs7-encrypt">
   <refnamediv>
    <refname>openssl_pkcs7_encrypt</refname>
    <refpurpose>Verschl�sseln einer S/MIME Nachricht</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
    <funcsynopsis>
     <funcprototype>
      <funcdef>bool <function>openssl_pkcs7_encrypt</function>
      </funcdef>
      <paramdef>string <parameter>infilename</parameter></paramdef>
      <paramdef>string <parameter>outfilename</parameter></paramdef>
      <paramdef>mixed <parameter>recipcerts</parameter></paramdef>
      <paramdef>array <parameter>headers</parameter></paramdef>
      <paramdef>long <parameter><optional>flags</optional></parameter>
      </paramdef>
     </funcprototype>
    </funcsynopsis>
&warn.experimental.func;
    <para>
     Die Funktion <function>openssl_pkcs7_encrypt</function> verschl�sselt die
     Inhalte der Datei, angegeben durch den Pararmeter
     <parameter>infilename</parameter>. Die Verschl�sselung benutzt
     eine RC2 40 Bit Chiffre, so dass diese Inhalte nur von den
     beabsichtigten Empf�ngern gelesen werden k�nnen, die mit dem Parameter
     <parameter>recipcerts</parameter> angegeben wurden. Der Parameter
     <parameter>recipcerts</parameter> kann ein einzelnes X.509 Zertifikat
     oder ein Array von X.509 Zertifikaten enthalten.
     Der Parameter <parameter>headers</parameter> ist ein Array aus Headern
     die den Daten vorangestellt wird, nachdem diese verschl�sselt wurden.
     Das Array <parameter>headers</parameter> kann entweder ein assoziatives
     Array sein, mit Indizes aus den Headernamen, oder ein indiziertes Array,
     wobei jedes Element eine einzelne Header-Zeile enth�lt.
     Um den Verschl�sselungsprozess zu beeinflussen, k�nnen Sie den Paramter
     <parameter>flags</parameter> benutzen - siehe
     <link linkend="openssl.pkcs7.flags"> PKCS7 Konstanten</link>.
    </para>
    <para>
     <example>
      <title><function>openssl_pkcs7_encrypt</function>
      Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Die Nachricht die Sie verschl�sselt an Ihren Geheimagenten,
// bekannt als Nachtfalke, schicken wollen.
// Sein Zertifikat liegt Ihnen in der Datei nighthawk.pem vor.
$data = <<<EOD
Nachtfalke,

Streng geheim, nur f�r Ihre Augen bestimmt!

Der Feind kommt n�her! Treffen Sie mich im Cafe um 8.30 abends.
Sie erhalten Ihren gef�lschten Ausweis!

HQ
EOD;
// speichern der Nachricht in einer Datei
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// verschl�sseln
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", "nighthawk.pem",
    array("To" => "[EMAIL PROTECTED]", // keyed syntax
          "From: HQ <[EMAIL PROTECTED]>", // indexed syntax
          "Subject" => "Eyes only")))
{
    // Nachricht verschl�sselt - ab damit!
    exec(ini_get("sendmail_path") . " < enc.txt");
}
]]>
      </programlisting>
     </example>
    </para>
  <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


   </refsect1>
  </refentry>

 <refentry id="function.openssl-pkcs7-sign">
  <refnamediv>
   <refname>openssl_pkcs7_sign</refname>
   <refpurpose>Unterzeichnen einer S/MIME Nachricht</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>bool <function>openssl_pkcs7_sign</function></funcdef>
     <paramdef>string <parameter>infilename</parameter></paramdef>
     <paramdef>string <parameter>outfilename</parameter></paramdef>
     <paramdef>mixed <parameter>signcert</parameter></paramdef>
     <paramdef>mixed <parameter>privkey</parameter></paramdef>
     <paramdef>array <parameter>headers</parameter></paramdef>
     <paramdef>long
     <parameter><optional>flags</optional></parameter></paramdef>
     <paramdef>string
     <parameter><optional>extracertsfilename</optional></parameter>
     </paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Die Funktion <function>openssl_pkcs7_sign</function> unterzeichnet die
    Inhalte der Datei, angegeben durch den Pararmeter
    <parameter>infilename</parameter>. Beim Unterzeichnen wird das Zertifikat,
    angegeben durch <parameter>signcert</parameter>, und der dazu geh�rige
    private Schl�ssel, angegeben durch <parameter>privkey</parameter>, benutzt.
   </para>
   <para>
    Der Parameter <parameter>headers</parameter> ist ein Array aus Headern
    die den Daten vorangestellt werden, nachdem diese unterzeichnet wurden
    (F�r mehr Informationen �ber das Format dieses Parameters schauen Sie 
    bei der Funktion <function>openssl_pkcs7_encrypt</function> nach).
   </para>
   <para>
    Der Parameter <parameter>flags</parameter> kann zur �nderung der Ausgabe
    benutzt werden - siehe
    <link linkend="openssl.pkcs7.flags">PKCS7 Konstanten</link> - falls
    nicht angegeben ist die Vorgabe PKCS7_DETACHED.
   </para>
   <para>
    Der Parameter <parameter>extracertsfilename</parameter> gibt den Namen
    einer Datei an, die ein B�ndel von extra Zertifikaten enth�lt, die in
    die Unterschrift mit eingef�gt werden. Das kann zum Beispiel als Hilfe
    f�r einen Empf�nger dienen, das von Ihnen benutze Zertifikat zu �berpr�fen.
   </para>
    <para>
     <example>
      <title><function>openssl_pkcs7_sign</function> Beispiel</title>
      <programlisting role="php">
<![CDATA[
// Die Nachricht die Sie unterschreiben m�chten, damit der Empf�nger sicher sein,
// dass diese Nachricht von Ihnen stammt.

$data = <<<EOD

Sie haben meine Erlaubnis 20,000.- DM f�r Essen auszugeben.

Der CEO
EOD;
// Nachricht in einer Datei speichern
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// encrypt it
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
    array("mycert.pem", "mypassphrase"),
    array("To" => "[EMAIL PROTECTED]", // keyed syntax
          "From: HQ <[EMAIL PROTECTED]>", // indexed syntax
          "Subject" => "Eyes only"))
{
    // Nachricht unterschrieben - abschicken!
    exec(ini_get("sendmail_path") . " < signed.txt");
}
]]>
      </programlisting>
     </example>
    </para>
  <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


  </refsect1>
 </refentry>

 <refentry id="function.openssl-pkcs7-verify">
  <refnamediv>
   <refname>openssl_pkcs7_verify</refname>
   <refpurpose>�berpr�ft die Unterschrift einer mit S/MIME 
    unterschriebenen Nachricht
   </refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>bool <function>openssl_pkcs7_verify</function></funcdef>
     <paramdef>string <parameter>filename</parameter></paramdef>
     <paramdef>int <parameter>flags</parameter></paramdef>
     <paramdef>string <parameter><optional>outfilename</optional>
     </parameter></paramdef>
     <paramdef>array <parameter><optional>cainfo</optional>
     </parameter></paramdef>
     <paramdef>string <parameter><optional>extracerts</optional>
     </parameter></paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Die Funktion <function>openssl_pkcs7_verify</function> liest die
    S/MIME Nachricht, die in der Datei <parameter>filename</parameter>
    enthalten ist und untersucht die digitale Unterschrift.
    Ist die Unterschrift �berpr�ft wird &true; zur�ckgegeben, falls die
    Unterschrift nicht korrekt ist &false; (die Nachricht wurde mit dem
    Zertifikat vermischt oder das unterzeichnende Zertifikat ist ung�ltig).
    Tritt ein Fehler auf wird -1 zur�ckgegeben.
   </para>
   <para>
    Mit dem Parameter <parameter>flags</parameter> k�nnenn Sie die Art und
    Weise beeinflussen, wie die Unterschrift �berpr�ft wird - f�r mehr 
    Informationen siehe
    <link linkend="openssl.pkcs7.flags">PKCS7 Konstanten</link>.
   </para>
   <para>
    Wird der Parameter <parameter>outfilename</parameter> angegeben, sollte
    dies eine Zeichenkette sein, die den Namen einer Datei enth�lt,
    in der das Zertifikat der unterzeichnenden Person im PEM Format
    gespeichert wird.
   </para>
   <para>
    Wird der Parameter <parameter>cainfo</parameter> angegeben, sollten
    Informationen �ber die vertrauensw�rdigen CA Zertifikate enthalten sein ,
    die f�r den �berpr�fungsprozess benutzt werden - f�r mehr Informationen
    zu diesem Parameter sollten Sie unter
    <link linkend="openssl.cert.verification">Zertifikat Nachweis</link>
    nachschauen.
   </para>
   <para>
    Wird der Parameter <parameter>extracerts</parameter> angegeben, ist es der
    Name einer Datei, die ein B�ndel von Zertifikaten enth�lt, die als
    nicht vertrauensw�rdige CAs genutzt werden.
   </para>
  <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


  </refsect1>
 </refentry>

 <refentry id="function.openssl-x509-checkpurpose">
  <refnamediv>
   <refname>openssl_x509_checkpurpose</refname>
   <refpurpose>�berpr�ft ob ein Zertifikat f�r einen bestimmten Zweck benutzt
    werden kann
   </refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>bool <function>openssl_x509_checkpurpose</function>
     </funcdef>
     <paramdef>mixed <parameter>x509cert</parameter></paramdef>
     <paramdef>int <parameter>purpose</parameter></paramdef>
     <paramdef>array <parameter>cainfo</parameter></paramdef>
     <paramdef>string
     <parameter><optional>untrustedfile</optional></parameter>
     </paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Kann das Zertifikat f�r den beabsichtigten Zweck benutzt werden, gibt
    diese Funktion &true; zur�ck; falls nicht &false;, bei einem Fehler -1.
   </para>
   <para>
    Die Funktion <function>openssl_x509_checkpurpose</function> untersucht
    das mit dem Parameter <parameter>x509cert</parameter> angegebene
    Zertifikat darauf, ob es f�r den mit <parameter>purpose</parameter>
    angegebenen Zweck benutzt werden kann.
   </para>
   <para>
    Der Parameter <parameter>cainfo</parameter> sollte ein Array aus
    vertrauensw�rdigen CA Dateien/Verzeichnissen enthalten.
    Dieses Array ist genauer beschrieben unter
    <link linkend="openssl.cert.verification">Zertifikat Nachweis</link>.
   </para>
   <para>
    Der Parameter <parameter>untrustedfile</parameter>, falls angegeben,
    ist der Name einer PEM verschl�sselten Datei, die Zertifikate enth�lt,
    die dazu benutzt werden k�nnen, das Zertifikat zu �berpr�fen, obwohl
    kein Vertrauen zu diesen Zertifikaten besteht, die aus dieser
    Datei stammen.
   </para>
   <para>
    <table>
     <title><function>openssl_x509_checkpurpose</function>
     Zweck</title>
     <tgroup cols="2">
      <thead>
       <row>
        <entry>Konstante</entry>
        <entry>Beschreibung</entry>
       </row>
      </thead>
      <tbody>
       <row>
        <entry>X509_PURPOSE_SSL_CLIENT</entry>
        <entry>Client-Seite einer SSL Verbindung?
        </entry>
       </row>
       <row>
        <entry>X509_PURPOSE_SSL_SERVER</entry>
        <entry>Server-Seite einer SSL Verbindung?
        </entry>
       </row>
       <row>
        <entry>X509_PURPOSE_NS_SSL_SERVER</entry>
        <entry>Netscape SSL Server?
        </entry>
       </row>
       <row>
        <entry>X509_PURPOSE_SMIME_SIGN</entry>
        <entry>Unterschreiben einer S/MIME Email?
        </entry>
       </row>
       <row>
        <entry>X509_PURPOSE_SMIME_ENCRYPT</entry>
        <entry>Verschl�sseln einer S/MIME Email?</entry>
       </row>
       <row>
        <entry>X509_PURPOSE_CRL_SIGN</entry>
        <entry>Unterschreiben einer Zertifikats-Widerrufliste(CRL)?
        </entry>
       </row>
       <row>
        <entry>X509_PURPOSE_ANY</entry>
        <entry>Beliebige/alle Zwecke?</entry>
       </row>
      </tbody>
     </tgroup>
    </table>
    Diese Optionen sind keine Bitfelder - Sie k�nnen nur eine einzige angeben!
   </para>
   <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


  </refsect1>
 </refentry>

 <refentry id="function.openssl-x509-free">
  <refnamediv>
   <refname>openssl_x509_free</refname>
   <refpurpose>Freigabe einer Zertifikats Resource</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>void <function>openssl_x509_free</function></funcdef>
     <paramdef>resource <parameter>x509cert</parameter></paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Die Funktion <function>openssl_x509_free</function> l�scht den
    Speicherbereich, der von einem Zertifikat, angegeben
    durch den Parameter <parameter>x509cert</parameter>, belegt wurde.
   </para>
  <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


  </refsect1>
 </refentry>

 <refentry id="function.openssl-x509-parse">
  <refnamediv>
   <refname>openssl_x509_parse</refname>
   <refpurpose>Analyse eines X509 Zertifikats und R�ckgabe der Information
    in einem Array
   </refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>array <function>openssl_x509_parse</function></funcdef>
     <paramdef>mixed <parameter>x509cert</parameter></paramdef>
     <paramdef>bool
     <parameter><optional>shortnames</optional></parameter></paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Die Funktion <function>openssl_x509_parse</function> liefert Informationen
    �ber das angegebene Zertifikat <parameter>x509cert</parameter>. Die
    Informationen sind: Name des Gegenstands, Name des Herausgebers,
    Zweck, Zeitangaben, wie g�ltig seit... g�ltig bis, usw.
    Der Parameter <parameter>shortnames</parameter> kontrolliert wie die Daten
    im Array indiziert werden - wenn <parameter>shortnames</parameter> &true;
    ist (Standard), werden die Felder in Kurzform indiziert, ansonsten werden
    lange Namen verwendet - z.B.: CN ist die Kurzform von commonName.
   </para>
   <para><emphasis> Die Struktur der zur�ckgegeben Daten ist bis jetzt
    (absichtlich) nicht dokumentiert, da es noch vorbehaltliche �nderungen
    geben wird
    </emphasis>
   </para>
   <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
   </note>


  </refsect1>
 </refentry>

 <refentry id="function.openssl-x509-read">
  <refnamediv>
   <refname>openssl_x509_read</refname>
   <refpurpose>Analysiert ein X.509 Zertitifikat und gibt eine
   Resource-Kennung zur�ck</refpurpose>
  </refnamediv>
  <refsect1>
   <title>Beschreibung</title>
   <funcsynopsis>
    <funcprototype>
     <funcdef>resource <function>openssl_x509_read</function>
     </funcdef>
     <paramdef>mixed <parameter>x509certdata</parameter></paramdef>
    </funcprototype>
   </funcsynopsis>
&warn.experimental.func;
   <para>
    Die Funktion <function>openssl_x509_read</function> analysiert das Zertifikat
    das mit dem Parameter <parameter>x509certdata</parameter>
    angegeben wurde und gibt eine Resource-Kennung zur�ck.
   </para>
  <note>
     <para>Diese Funktion wurde in 4.0.6 hinzugef�gt.</para>
    </note>


  </refsect1>
 </refentry>



</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

Reply via email to