table of contents
fr::crypto::EVP_SignInit(3SSL) | OpenSSL | fr::crypto::EVP_SignInit(3SSL) |
NOM¶
EVP_SignInit, EVP_SignUpdate, EVP_SignFinal - Fonctions de signature EVP
SYNOPSIS¶
#include <openssl/evp.h>
int EVP_SignInit_ex(EVP_MD_CTX *ctx, const
EVP_MD *type, ENGINE *impl);
int EVP_SignUpdate(EVP_MD_CTX *ctx, const void
*d, unsigned int cnt);
int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char
*sig,unsigned int *s, EVP_PKEY
*pkey);
void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
int EVP_PKEY_size(EVP_PKEY *pkey);
DESCRIPTION¶
Les routines de signature EVP constituent une interface de haut niveau pour les signatures numériques.
EVP_SignInit_ex() configure le contexte de signature ctx pour utiliser l’algorithme de hachage type à partir de l’ENGINE impl. ctx doit être initialisé avec EVP_MD_CTX_init() avant d’appeler cette fonction.
EVP_SignUpdate() produit un hachage de cnt octets de d dans le contexte de signature ctx. Cette fonction peut être appelée plusieurs fois sur le même contexte pour incorporer des données supplémentaires.
EVP_SignFinal() signe les données dans le ctx en utilisant la clef privée pkey et met la signature dans sig. sig doit être au moins de taille EVP_PKEY_size(pkey) octets. s est un paramètre OUT, et n’est pas utilisé comme un paramètre IN. Le nombre d’octets de données écrits (par exemple la longueur de la signature) sera écrit en nombre entier à s, au plus EVP_PKEY_size(pkey) octets seront écrits.
EVP_SignInit() initialise un contexte de signature ctx pour utiliser l’implémentation par défaut de l’algorithme de hachage type.
EVP_PKEY_size() renvoie la taille maximale de signature en octet. La signature réelle renvoyée par EVP_SignFinal() peut être plus petite.
VALEURS DE RETOUR¶
EVP_SignInit_ex(), EVP_SignUpdate() et EVP_SignFinal() renvoient 1 en cas de réussite et 0 en cas d'échec.
EVP_PKEY_size() renvoie la taille maximale de la signature en octet.
Les codes d'erreur peuvent être obtenus par ERR_get_error(3).
NOTES¶
L’interface EVP pour les signatures numériques devrait presque toujours être utilisée de préférence à des interfaces de bas niveaux. Cela est ainsi parce que le code devient évident pour l’algorithme utilisé et bien plus souple.
En raison du lien entre les algorithmes de hachage de message et les algorithmes à clef publique, l’algorithme de hachage adéquat doit être utilisé avec le bon type de clef publique. Une liste d’algorithmes et leurs algorithmes à clef publique associés est incluse dans EVP_DigestInit(3).
Lors de la signature avec les clefs privées DSA, le générateur de nombre aléatoire doit être égrainé sinon l’opération échouera. Le générateur n’a nul besoin de graine pour les signatures RSA.
L’appel à EVP_SignFinal(), de manière interne, réalise une copie du contexte du hachage. Cela signifie que des appels à EVP_SignUpdate() et EVP_SignFinal() peuvent être faits ultérieurement pour un hachage et une signature de données additionnelles.
Puisqu’une seule copie est réalisée, le contexte de l’empreinte numérique doit être nettoyé après utilisation en appelant EVP_MD_CTX_cleanup() ou une fuite de mémoire se produira.
BOGUES¶
De vieilles versions de cette documentation affirment faussement que des appels à EVP_SignUpdate() ne peuvent être réalisés après l’appel à EVP_SignFinal().
Puisque la clef privée est fournie dans l’appel à EVP_SignFinal(), aucune erreur en rapport avec la clef privée (par exemple une association impropre de clef et d’algorithme de hachage) ne sera signalée avant que de grandes quantités potentielles ne soient fournies par EVP_SignUpdate().
Changer les paramètres de signature n’est pas possible avec ces fonctions.
Ces deux bogues sont corrigés dans la nouvelle fonction EVP_SignDigest*().
VOIR AUSSI¶
EVP_VerifyInit(3), EVP_DigestInit(3), err(3), evp(3), hmac(3), md2(3), md5(3), mdc2(3), <ripemd(3)|ripemd(3)>, sha(3), dgst(1)
HISTORIQUE¶
EVP_SignInit(), EVP_SignUpdate() et EVP_SignFinal() sont disponibles dans toutes les versions de SSLeay et OpenSSL.
EVP_SignInit_ex() a été ajoutée dans 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.
2015-12-31 | 1.0.2a 1.0.2c |