cynic Mon Feb 5 04:43:38 2001 EDT Added files: /phpdoc/cs/functions openssl.xml Log: should be completely translated
Index: phpdoc/cs/functions/openssl.xml +++ phpdoc/cs/functions/openssl.xml <reference id="ref.openssl"> <title>OpenSSL funkce</title> <titleabbrev>OpenSSL</titleabbrev> <partintro> <para> Tato extenze využívá funkce <ulink url="&url.openssl;">OpenSSL</ulink> pro tvorbu a ověřování podpisů a pečetění (kódování) a otvírání (dekódování) dat. K práci s touto extenzí potřebujete OpenSSL >= 0.9.6. </para> <para> OpenSSL nabízí mnoho vlastností, které tato extenze v současnosti nepodporuje. Některé z nich mohou být v budoucnu přidány. </para> </partintro> <refentry id="function.openssl-free-key"> <refnamediv> <refname>openssl_free_key</refname> <refpurpose>Uvolnit prostředky klíče</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>void <function>openssl_free_key</function></funcdef> <paramdef>int <parameter>key_identifier</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <function>openssl_free_key</function> uvolní klíč asociovaný s předaným <parameter>key_identifier</parameter> z paměti. </para> </refsect1> </refentry> <refentry id="function.openssl-get-privatekey"> <refnamediv> <refname>openssl_get_privatekey</refname> <refpurpose>Připravit soukromý PEM klíč k použití</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>int <function>openssl_get_privatekey</function></funcdef> <paramdef>string <parameter>key</parameter></paramdef> <paramdef>string <parameter><optional>passphrase</optional></parameter></paramdef> </funcprototype> </funcsynopsis> <para>Pri úspěchu vrací klíč, při chybě <literal>false</literal>. </para> <para> <function>openssl_get_privatekey</function> rozparsuje sourkomý PEM klíč <parameter>key</parameter> a připraví ho k použití v dalších funkcích. Volitelný argument <parameter>passphrase</parameter> musí být předán, pokud je tento klíč zakódován (chráněn heslem). </para> </refsect1> </refentry> <refentry id="function.openssl-get-publickey"> <refnamediv> <refname>openssl_get_publickey</refname> <refpurpose> Získat z certifikátu veřejný klíč a připravit ho k použití </refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>int <function>openssl_get_publickey</function></funcdef> <paramdef>string <parameter>certificate</parameter></paramdef> </funcprototype> </funcsynopsis> <para> Při úspěchu vrací identifikátor klíče, při chybě <literal>false</literal>. </para> <para> <function>openssl_get_publickey</function> z X.509 certifikátu <parameter>certificate</parameter> vyextrahuje veřejný klíč a připraví ho k použití v dalších funkcích. </para> </refsect1> </refentry> <refentry id="function.openssl-open"> <refnamediv> <refname>openssl_open</refname> <refpurpose>Otevřít zapečetěná data</refpurpose> </refnamediv> <refsect1> <title>Popis</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>int <parameter>priv_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> <para> Při úspěchu vrací <literal>true</literal>, při chybě <literal>false</literal>. Úspěšně otevřená data se umístí do argumentu <parameter>open_data</parameter>. </para> <para> <function>openssl_open</function> otevře (dekóduje) <parameter>sealed_data</parameter> pomocí soukromého klíče asociovaného s identifikátorem <parameter>priv_key_id</parameter> a obálkou <parameter>env_key</parameter>. Tato obálka se generuje při pečetění dat a je použitelná pouze s jedním utčitým soukromým klíčem. Více informací viz <function>openssl_seal</function>. </para> <para> <example> <title>Ukázka <function>openssl_open</function></title> <programlisting role="php"> // $sealed a $env_key obsahují zapečetěná data a obálku // obojí nám bylo dáno tím, kdo data zapečetil // získat ze souboru soukromý klíč a připravit ho $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); // dekódovat data a uložit je v $open if (openssl_open($sealed, $open, $env_key, $pkeyid)) echo "tady jsou otevřená data: ", $open; else echo "nepodařilo se otevřít data"; // uvolnit klíč z paměti openssl_free_key($pkeyid); </programlisting> </example> </para> <simpara> Viz také <function>openssl_seal</function>. </simpara> </refsect1> </refentry> <refentry id="function.openssl-seal"> <refnamediv> <refname>openssl_seal</refname> <refpurpose>Zapečetit (zakódovat) data</refpurpose> </refnamediv> <refsect1> <title>Popis</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> <para> Při úspěchu vrací délku zapečetěných dat, při chybě <literal>false</literal>. Úspěšně zapečetěná data se umístí do argumentu <parameter>sealed_data</parameter>, a obálka do <parameter>env_keys</parameter>. </para> <para> <function>openssl_seal</function> zapečetí (zakóduje) <parameter>data</parameter> pomocí RC4 s náhodně generovaným tajným klíčem. Tento klíč se zakóduje všemi veřejnými klíči asociovanými s identifikátory v <parameter>pub_key_ids</parameter> a zakódované klíče se vrátí v <parameter>env_keys</parameter>. To znamená, že lze poslat zapečetěná data více příjemcům (za předpokladu, že máme jejích veřejné klíče). Každý z příjemců musí obdržet zapečetěná data a obálku, která byla zakódována jeho veřejným klíčem. </para> <para> <example> <title>Ukázka <function>openssl_seal</function></title> <programlisting role="php"> // $data obsahuje data určená k zapečetění // získat veřejné klíče našich příjemců a připravit je $fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk1 = openssl_get_publickey($cert); // opakovat prodruhého příjemce $fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pk2 = openssl_get_publickey($cert); // zapečetit zprávu, pouze majitelé $pk1 a $pk2 mohou dekódovat $sealed pomocí // $ekeys[0] a $ekeys[1]. openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2)); // uvolnit klíče z paměti openssl_free_key($pk1); openssl_free_key($pk2); </programlisting> </example> </para> <simpara> Viz také <function>openssl_open</function>. </simpara> </refsect1> </refentry> <refentry id="function.openssl-sign"> <refnamediv> <refname>openssl_sign</refname> <refpurpose>Generate signature</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>bool <function>openssl_sign</function></funcdef> <paramdef>string <parameter>data</parameter></paramdef> <paramdef>string <parameter>signature</parameter></paramdef> <paramdef>int <parameter>priv_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> <para> Při úspěchu vrací <literal>true</literal>, při chybě <literal>false</literal>. Úspěšně vytvořený podpis se umístí v <parameter>signature</parameter>. </para> <para> <function>openssl_sign</function> vypočítá podpis pro daná specified <parameter>data</parameter> pomocí SHA1 hashe a následně jej zakóduje soukromým klíčem asociovaným s <parameter>priv_key_id</parameter>. Pozn.: samotná data nejsou kódována. </para> <para> <example> <title><function>openssl_sign</function> example</title> <programlisting role="php"> // $data obsahuje data určená k podpisu // získat ze souboru soukromý klíč a připravit ho $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); // vytvořit podpis openssl_sign($data, $signature, $pkeyid); // uvolnit klíč z paměti openssl_free_key($pkeyid); </programlisting> </example> </para> <simpara> Viz také <function>openssl_verify</function>. </simpara> </refsect1> </refentry> <refentry id="function.openssl-verify"> <refnamediv> <refname>openssl_verify</refname> <refpurpose>Ověřit podpis</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <funcsynopsis> <funcprototype> <funcdef>int <function>openssl_verify</function></funcdef> <paramdef>string <parameter>data</parameter></paramdef> <paramdef>string <parameter>signature</parameter></paramdef> <paramdef>int <parameter>pub_key_id</parameter></paramdef> </funcprototype> </funcsynopsis> <para> Vrací 1, pokud je podpis správný, 0, pokud je nesprávný, a -1 při chybě. </para> <para> <function>openssl_verify</function> ověřuje, zda je <parameter>signature</parameter> správný pro <parameter>data</parameter> pomocí veřejného klíče asociovaného s <parameter>pub_key_id</parameter>. Musí to být veřejný klíč odpovídající soukromému klíči použitému k podpisu. </para> <para> <example> <title>Ukázka <function>openssl_verify</function></title> <programlisting role="php"> // $data a $signature obsahují data a podpis // získat z certifikátu veřejný klíč a připravit ho $fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r"); $cert = fread($fp, 8192); fclose($fp); $pubkeyid = openssl_get_publickey($cert); // zjistit, jestli je podpis v pořádku $ok = openssl_verify($data, $signature, $pubkeyid); if ($ok == 1) echo "dobře"; elseif ($ok == 0) echo "špatně"; else echo "nejhůř, při kontrole podpisu došlo k chybě"; // uvolnit klíč z paměti openssl_free_key($pubkeyid); </programlisting> </example> </para> <simpara> Viz také <function>openssl_sign</function>. </simpara> </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: -->