SYNOPSIS
#include <openssl/evp.h>DESCRIPTION
La bibliothèque fournit une interface haut niveau aux fonctions cryptographiques.EVP_Seal... et EVP_Open... fournissent le chiffrement et le déchiffrement à clef publique pour implémenter des « enveloppes » numériques.
Les fonctions EVP_DigestSign... et EVP_DigestVerify... mettent en œuvre des signatures numériques et des codes d’authentification de message (). Aussi les fonctions anciennes EVP_Sign... et EVP_Verify... sont à considérer.
Le chiffrement symétrique est disponible avec les fonctions EVP_Encrypt.... Les fonctions EVP_Digest... fournissent les signatures de message.
Les fonctions ... fournissent une interface haut niveau pour les algorithmes asymétriques. Pour créer un nouveau , consulter EVP_PKEY_new(3)|EVP_PKEY_new(3)>. peut être associé avec une clef privée d’un algorithme particulier en utilisant les fonctions décrites dans les pages EVP_PKEY_set1_RSA)(3), ou de nouvelles clefs peuvent être créées en utilisant EVP_PKEY_keygen(3). Des peuvent être comparées en utilisant EVP_PKEY_cmp(3), ou affichées avec EVP_PKEY_print_private(3).
Les fonctions prennent en charge toutes les opérations d’algorithme asymétrique :
- Pour l’accord de clef, consultez EVP_PKEY_derive(3).
- Pour une signature ou une vérification, consultez EVP_PKEY_sign(3), EVP_PKEY_verify(3) et EVP_PKEY_verify_recover(3). Cependant, ces fonctions ne réalisent pas un condensat des données à signer. Par conséquent les fonctions EVP_DigestSign... sont à utiliser.
- Pour le chiffrement et le déchiffrement, consultez EVP_PKEY_encrypt(3) et EVP_PKEY_decrypt(3) respectivement. Cependant, ces fonctions réalisent uniquement un chiffrement et un déchiffrement. Comme le chiffrement par clef publique est une opération coûteuse, habituellement le message chiffré est enveloppé dans une « enveloppe numérique » en utilisant les fonctions EVP_Seal... et EVP_Open....
La fonction EVP_BytesToKey(3) fournit une prise en charge limitée pour un chiffrement du mot de passe. Un choix méticuleux des paramètres fournit une prise en charge compatible avec pour PKCS#5. Cependant, les nouvelles applications ne devraient pas normalement utiliser cela (en préférant, par exemple, de PCKS#5).
Les algorithmes sont chargés avec OpenSSL_add_all_algorithms(3).
Tous les algorithmes symétriques (pour le chiffrement), les algorithmes de signature et les algorithmes asymétriques (algorithmes à clef publique) peuvent être remplacés par les modules fournissant des implémentations alternatives. Si des implémentations d'algorithmes de chiffrement ou de signature sont enregistrées par défaut, alors les diverses fonctions utiliseront automatiquement ces implémentations de préférence pour les intégrer aux implémentations logicielles. Pour plus de renseignements, consultez la page de manuel engine(3).
Bien que des fonctions bas niveau spécifiques aux algorithmes existent pour plusieurs algorithmes, leur utilisation n'est pas recommandée. Elles ne peuvent pas être utilisées avec un et les versions d' des nouveaux algorithmes ne sont pas accessibles en utilisant les fonctions bas niveau. De plus, cela rend le code plus difficile à adapter aux nouveaux algorithmes, certaines options ne sont pas proprement prises en charge au bas niveau, et certaines opérations sont plus efficaces en utilisant l'interface haut niveau.
