Index: phpdoc/fr/functions/openssl.xml
+++ phpdoc/fr/functions/openssl.xml
OpenSSLOpenSSL
Cette extension utilise les fonctions de
OpenSSL pour générer et vérifier
les signatures, ainsi que pour sceller (crypter) et ouvrir (décrypter)
les données. Vous avez besoin de OpenSSL >= 0.9.6 pour utiliser
ce module.
OpenSSL offre de nombreuses fonctionnalités qui ne sont pas
encore supportées par ce module. Elle seront ajoutées ultérieurement.
openssl_free_keyLibère les ressourcesDescriptionvoid openssl_free_keyint key_identifieropenssl_free_key libère les ressources
associées à key_identifier.
openssl_get_privatekeyPrépare une clé privée au format PEMDescriptionint openssl_get_privatekeystring keystring passphraseopenssl_get_privatekey retourne un identifiant
de clé positif, ou FALSE en cas d'erreur.
openssl_get_privatekey analyse la clé privée
key, au format PEM, et la prépare pour
à être utilisée par d'autres fonctions. Le paramètre optionnel
passphrase doit être utilisé si
la clé est cryptée (protégée par un mot de passe).
openssl_get_publickeyExtrait une clé publique d'un certificatDescriptionint openssl_get_publickeystring certificateopenssl_get_publickey retourne un identifiant
de clé positif, ou FALSE en cas d'erreur.
openssl_get_publickey extrait la clé publique
du certificat certificate (format X.509), et la
prépare à être utilisée ultérieurement.
openssl_openOuvre des données scelléesDescriptionbool openssl_openstring sealed_datastring open_datastring env_keyint priv_key_idopenssl_open TRUE en cas de succès, et FALSE sinon.
En cas de succès, les données décryptées sont placées dans
open_data.
openssl_open ouvre (décrypte) les données
sealed_data en utilisant la clé prviée
priv_key_id et la clé d'enveloppe
env_key. La clé d'enveloppe est générée
lorsque les données sont scellées, et ne peut être utilisée qu'avec
la clé privée spécifique. Reportez vous à openssl_seal
pour plus d'informations.
Exemple avec openssl_open
<?php
// On suppose que $sealed et $env_key contiennent les données scellées
// et la clé d'enveloppe, fournies par l'expéditeur
// lecture de la clé privée dans un fichier
$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);
// décryptage des données : elles sont placées dans $open
if (openssl_open($sealed, $open, $env_key, $pkeyid))
echo "Voici les données décryptées : ", $open;
else
echo "Impossible de décrypter les données";
// libération des ressources
openssl_free_key($pkeyid);
?>
Voir aussi openssl_seal.
openssl_sealScelle des donnéesDescriptionint openssl_sealstring datastring sealed_dataarray env_keysarray pub_key_idsopenssl_seal retourne la longueur des données
scellées en cas de succès, et FALSE sinon. En cas de succès, les données
scellées sont placées dans le paramètre sealed_data,
et les clés d'enveloppe dans env_keys.
openssl_seal scelle (encrypte) les données
data en utilisant l'algorithme RC4 avec une clé
secrètre générée aléatoirement. La clé est encryptée avec chaque
clé publique associée à pub_key_ids
et chaque clé ainsi encryptée est retournée dans
env_keys. Cela signifique que vous pouvez
envoyez des données scellées à plusieurs destinataires (en supposant
que chacun ait recu la clé publique). Chaque destinataire doit recevoir
les données encryptées et la clé d'enveloppe, qui a été encryptée
avec la clé publique du destinataire.
Exemple avec openssl_seal
<?php
// On suppose que $data contient les données à sceller
// lecture de la clé publique pour chaque destinataire
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// pour le deuxième destinataire
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// scelle le message : seuls, les possessuers de $pk1 et $pk2 peuvent décrypter
// le message $sealed avec les clés $ekeys[0] et $ekeys[1] (respectivement).
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));
// libère les clés de la mémoire
openssl_free_key($pk1);
openssl_free_key($pk2);
?>
Voir aussi openssl_open.
openssl_signSigne les donnéesDescriptionbool openssl_signstring datastring signatureint priv_key_idopenssl_sign retourne TRUE en cas de succès, et
FALSE sinon. En cas de succès, la signature est placée dans
signature.
openssl_sign calcule la signature des données
data en utilisant l'algorithme SHA1 (hashing)
suivi du cryptage avec la clé privée priv_key_id.
Notez que les données elles-mêmes ne sont pas encryptées.
Exemple avec openssl_sign
<?php
// On suppose que $data contient les données à signer
// lecture de la clé publique pour chaque destinataire
$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);
// calcule de la signature
openssl_sign($data, $signature, $pkeyid);
// libère les clés de la mémoire
openssl_free_key($pkeyid);
?>
Voir aussi openssl_verify.
openssl_verifyVérifie une signatureDescriptionint openssl_verifystring datastring signatureint pub_key_idopenssl_verify retourne 1 si la signature est
correcte, 0 si la signature est incorrecte, et -1 en cas d'erreur.
openssl_verify vérifie que la signature
signature est correcte pour les données
data, et avecd la clé publique
pub_key_id. Cette clé doit être la clé
publique correspondant à la clé privée utilisée lors de la signature.
Exemple avec openssl_verify
<?php
// On suppose que $data et $signature contiennent les données à signer et
// la signature
// lecture de la clé publique depuis le certificat
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
// indique si la signature est correcte
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1)
echo "Signature valide";
elseif ($ok == 0)
echo "Signature erronnée";
else
echo "Erreur de vérification de la signature";
// libère les clés de la mémoire
openssl_free_key($pubkeyid);
?>
Voir aussi openssl_sign.