EVP_DigestSignInit(3) Fonctions

Other Alias

EVP_DigestSignUpdate, EVP_DigestSignFinal

SYNOPSIS

#include <openssl/evp.h>

int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
                        const EVP_MD *typeENGINE *e, EVP_PKEY *pkey);

 int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
 int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen);

DESCRIPTION

Les routines de signature EVP constituent une interface de haut niveau pour les signatures numériques.

EVP_DigestSignInit() définit de contexte de signature ctx à utiliser avec le type d’empreinte numérique à partir de l’ENGINE impl et la clef privée pkey. ctx doit être initialisé avec EVP_MD_CTX_init() avant l’appel de cette fonction. Si <pctx> n’est pas NULL, EVP_PKEY_CTX de cette opération de signature sera écrit dans *pctx : cela peut être utilisé pour définir des options alternatives de signature.

EVP_DigestSignUpdate() calcule un hachage de cnt octets de données vers d dans le contexte de signature ctx. Cette fonction peut être appelée plusieurs fois dans le même ctx pour tenir compte de données additionnelles. Cette fonction est actuellement implémentée en utilisant une macro.

EVP_DigestSignFinal() signe les données dans ctx et place l’empreinte numérique dans sig. Si sig est NULL, alors la taille maximale du tampon de sortie est écrite dans le paramètre siglen. Si sig n’est pas NULL, alors avant l’appel, le paramètre siglen doit contenir la taille du tampon sig ; si l’appel est réussi, l’empreinte numérique est écrite dans sig et le total de données écrites dans siglen.

VALEURS DE RETOUR

EVP_DigestSignInit(), EVP_DigestSignUpdate() et EVP_DigestSignaFinal() renvoient 1 en cas de succès ou une valeur négative en cas d’échec. En particulier, une valeur de retour de -2 signifie que l’opération n’est pas permise par l’algorithme de clef publique.

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.

Dans les versions précédentes d’OpenSSL, un lien existait entre les empreintes numériques et les algorithmes de clef publique. Cela signifiait que les « clones » d’algorithmes de hachage tels que EVP_dss1() devaient être utilisés pour les empreintes numériques SHA1 et DSA. Cela n’est plus nécessaire et l’utilisation de clone est maintenant déconseillée.

Pour quelques sortes de clefs et de paramètres, la graine du générateur de nombre aléatoire doit être fournie ou l’opération échouera.

L’appel à EVP_DigestSignFinal() de manière interne fait une copie du contexte de signature. Cela signifie que des appels à EVP_DigestSignUpdate() et EVP_DigestSignFinal() peuvent être faits en cas 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.

L’utilisation de EVP_PKEY_size() avec ces fonctions est déconseillée car quelques opérations de signature peuvent avoir une taille d’empreinte numérique dépendant de paramètres. Par conséquent, EVP_PKEY_size() devrait renvoyer une valeur donnant la taille maximale possible d’empreinte numérique pour n’importe quelles définitions des paramètres.

HISTORIQUE

EVP_DigestSignInit(), EVP_DigestSignUpdate() et EVP_DigestSignFinal() ont été ajoutées pour la première fois à 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.