EVP_SealInit(3) Chiffrement d’enveloppe EVP

Other Alias

EVP_SealUpdate, EVP_SealFinal

SYNOPSIS

#include <openssl/evp.h>

int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
                  unsigned char **ek, int *ekl, unsigned char *iv,
                  EVP_PKEY **pubk, int npubk);
 int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
         int *outl, unsigned char *in, int inl);
 int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
         int *outl);

DESCRIPTION

Les routines d’enveloppe EVP sont des interfaces de haut niveau pour le chiffrement d’enveloppe. Elles produisent une clef aléatoire et un vecteur d'initialisation (si nécessaire) puis les « enveloppent » en utilisant une clef de chiffrement publique. Les données peuvent être chiffrées en utilisant cette clef.

EVP_SealInit() initialise un contexte de chiffrement ctx pour un chiffrement avec l’algorithme type en utilisant une clef secrète et un vecteur d'initialisation. type est normalement fourni par une fonction telle que EVP_des_cbc(). La clef secrète est chiffrée en utilisant une ou plusieurs clefs publiques, permettant aux mêmes données d’être déchiffrées avec n’importe quelle clef privée correspondante. ek est un tableau de tampons où la clef secrète, chiffrée avec la clef publique, sera écrite, chaque tampon étant suffisamment grand pour la clef chiffrée correspondante : ek[i] doit pouvoir contenir EVP_PKEY_size(pubk[i]) octets. La taille réelle de chaque clef chiffrée est écrite dans le tableau ekl. pubk est un tableau de npubk clefs publiques.

Le paramètre iv est un tampon où le vecteur d'initialisation créé est écrit. Il doit pouvoir contenir le vecteur d'initialisation correspondant de l’algorithme de chiffrement, tel qu’il est déterminé par (par exemple) EVP_CIPHER_iv_length(type).

Si l’algorithme de chiffrement ne demande pas de vecteur d'initialisation, alors le paramètre iv est ignoré et peut être NULL.

EVP_SealUpdate() et EVP_SealFinal() ont exactement les mêmes propriétés que les routines EVP_EncryptUpdate() et EVP_EncryptFinal(), comme documentées dans la page de manuel EVP_EncryptInit(3).

VALEURS DE RETOUR

EVP_SealInit() renvoie 0 lors d’une erreur ou npubk en cas de réussite.

EVP_SealUpdate() et EVP_SealFinal() renvoient 1 en cas de réussite et 0 lors d’une erreur.

NOTES

Parce qu’une clef secrète est créée, la graine du générateur de nombre aléatoire doit être enlevée avant l’appel à EVP_SealInit().

La clef publique doit être RSA car c’est le seul algorithme à clef publique d’OpenSSl qui prend en charge l’acheminement de clef.

Le chiffrement d’enveloppe est la méthode habituelle pour le chiffrement à clef publique de grandes quantités de données, cela parce que le chiffrement à clef publique est lent mais le chiffrement symétrique est rapide. Aussi le chiffrement symétrique est utilisé pour la majeure partie du chiffrement et la petite clef symétrique aléatoire utilisée est transférée en utilisant le chiffrement à clef publique.

Il est possible d’appeler EVP_SealInit() deux fois de la même façon que EVP_EncryptInit(). Le premier appel devrait avoir npubk défini à 0 et (après avoir défini tous les paramètres du chiffrement) l’appel devrait être fait avec type défini à NULL.

HISTORIQUE

EVP_SealFinal() ne renvoyait pas de valeur avant OpenSSL 0.9.7.

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.