EVP_PKEY_decrypt(3) Déchiffrer en utilisant un

Other Alias

EVP_PKEY_decrypt_init

SYNOPSIS

#include <openssl/evp.h>

int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
 int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
                        unsigned char *out, size_t *outlen,

                        const unsigned char *in, size_t inlen);

DESCRIPTION

La fonction EVP_PKEY_decrypt_init() initialise un contexte d'algorithme à clef publique en utilisant la clef pkey pour une opération de déchiffrement.

La fonction EVP_PKEY_decrypt() réalise une opération de déchiffrement à clef publique en utilisant ctx. Les données à déchiffrer sont indiquées en utilisant les paramètres in et inlen. Si out est NULL, alors la taille maximale du tampon de sortie est écrite dans le paramètre outlen. Si out n'est pas NULL, alors, avant l'appel, le paramètre outlen devrait contenir la taille du tampon out ; si l'appel réussit, les données déchiffrées sont écrites dans out et la quantité de données écrites dans outlen.

NOTES

Après l'appel de EVP_PKEY_decrypt_init(), des opérations de contrôle spécifiques à l'algorithme peuvent être réalisées pour définir n'importe quels paramètres appropriés à l'opération.

La fonction EVP_PKEY_decrypt() peut être appelée plus d'une fois sur le même contexte si plusieurs opérations sont réalisées en utilisant les mêmes paramètres.

VALEURS DE RETOUR

EVP_PKEY_decrypt_init() et EVP_PKEY_decrypt() renvoient 1 en cas de réussite et 0 ou une valeur négative en cas d'échec. En particulier, une valeur de retour de -2 indique que l'opération n'est pas permise par l'algorithme à clef publique.

EXEMPLE

Déchiffrer des données en utilisant OAEP (pour les clefs RSA) :

 #include <openssl/evp.h>
 #include <openssl/rsa.h>
 EVP_PKEY_CTX *ctx;
 unsigned char *out, *in;
 size_t outlen, inlen; 
 EVP_PKEY *key;
 /* Remarque : key, in et inlen sont supposées
  * déjà définies, avec key une clef privée RSA
  */
 ctx = EVP_PKEY_CTX_new(key);
 if (!ctx)
        /* Une erreur est survenue */
 if (EVP_PKEY_decrypt_init(ctx) <= 0)
        /* Erreur */
 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_OAEP_PADDING) <= 0)
        /* Erreur */
 /* Déterminer la taille du tampon */
 if (EVP_PKEY_decrypt(ctx, NULL, &outlen, in, inlen) <= 0)
        /* Error */
 out = OPENSSL_malloc(outlen);
 if (!out)
        /* échec malloc */
 
 if (EVP_PKEY_decrypt(ctx, out, &outlen, in, inlen) <= 0)
        /* Erreur */
 /* Les données déchiffrées sont outlen octets écrits dans le
  * tampon out
  */

HISTORIQUE

Ces fonctions ont été ajoutées pour la première fois dans OpenSSL 1.0.0.

TRADUCTION

La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.