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 >= 0.9.6 voraus, PHP-4.0.5 und
folgende funktionieren auch mit OpenSSL >= 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
-->