fr::crypto::EVP_PKEY_CTX_ctrl(3SSL)

NOM
EVP_PKEY_ctrl, EVP_PKEY_ctrl_str - Opérations de contrôle spécifiques à l’algorithme

SYNOPSIS
#include <openssl/evp.h>

int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
                 int cmd, int p1, void *p2);
 int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
                        const char *value);

int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);

#include <openssl/rsa.h>

int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);

int EVP_PKEY_CTX_set_rsa_padding(EVP_PKEY_CTX *ctx, int pad);
 int EVP_PKEY_CTX_set_rsa_pss_saltlen(EVP_PKEY_CTX *ctx, int len);
 int EVP_PKEY_CTX_set_rsa_rsa_keygen_bits(EVP_PKEY_CTX *ctx, int mbits);
 int EVP_PKEY_CTX_set_rsa_keygen_pubexp(EVP_PKEY_CTX *ctx, BIGNUM *pubexp);

#include <openssl/dsa.h>
 int EVP_PKEY_CTX_set_dsa_paramgen_bits(EVP_PKEY_CTX *ctx, int nbits);

#include <openssl/dh.h>
 int EVP_PKEY_CTX_set_dh_paramgen_prime_len(EVP_PKEY_CTX *ctx, int len);
 int EVP_PKEY_CTX_set_dh_paramgen_generator(EVP_PKEY_CTX *ctx, int gen);

#include <openssl/ec.h>
 int EVP_PKEY_CTX_set_ec_paramgen_curve_nid(EVP_PKEY_CTX *ctx, int nid);

DESCRIPTION
La fonction EVP_PKEY_CTX_ctrl() envoie une opération de contrôle au contexte ctx. Le type de clef utilisé doit correspondre à keytype s’il n’est pas -1. Le paramètre optype est un masque indiquant les opérations de contrôle qui peuvent être appliquées. La commande de contrôle est indiquée dans cmd et tous les arguments supplémentaires dans p1 et p2.

Les applications n’appelleront normalement pas EVP_PKEY_CTX_ctrl() directement mais appelleront plutôt une des macros spécifiques à l’algorithme ci-dessous.

La fonction EVP_PKEY_ctrl_str() permet à une application d’envoyer une opération de contrôle spécifique à l’algorithme vers un contexte ctx sous forme de chaîne. C’est dans le but d’être utilisé pour des options indiquées sur la ligne de commande ou dans des fichiers texte. Les commandes permises sont documentées dans les pages des lignes de commande de l’utilitaire openssl, pour l’option -pkeyopt prise en charge par les commandes pkeyutl, genpkey et req.

Toutes les « fonctions » restantes sont implémentées comme des macros.

La macro EVP_PKEY_CTX_set_signature_md() définit le type d’algorithme de message utilisé dans une signature. Il peut être utilisé avec n’importe quel algorithme à clef publique permettant les opérations de signature.

La macro EVP_PKEY_CTX_set_rsa_padding() définit le mode de remplissage RSA pour ctx. Le paramètre pad peut prendre la valeur RSA_PKCS1_PADDING pour un remplissage PKCS#1, RSA_SSLV23_PADDING pour un remplissage SSLv23, RSA_NO_PADDING pour une absence de remplissage, RSA_PKCS1_OAEP_PADDING pour un remplissage OAEP (chiffrement et déchiffrement seulement), RSA_X931_PADDING pour un remplissage X9.31 (opérations de signature seulement) et RSA_PKCS1_PSS_PADDING (signature et vérification seulement).

Deux modes de remplissage RSA se comportent différemment si EVP_PKEY_CTX_set_signature_md() est utilisée. Si cette macro est appelée pour un remplissage PKCS#1, le tampon de texte en clair est une véritable valeur d’algorithme de signature encapsulée dans une structure DigestInfo d’après PKCS#1 lors de la signature et cette structure est attendue (et supprimée) lors de la vérification. Si ce contrôle n’est pas utilisé avec RSA et un remplissage PKCS#1, alors les données fournies sont utilisées directement et non encapsulées. Dans le cas de remplissage X9.31 pour RSA, l’octet identifiant l’algorithme est ajouté ou vérifié et supprimé si ce contrôle est appelé. S’il n’est pas appelé, alors le premier octet du tampon de texte en clair est supposé être l’octet identifiant l’algorithme.

La macro EVP_PKEY_CTX_set_rsa_pss_saltlen() définit la taille de sel PSS RSA à len ; comme son nom l’indique, ce n’est utile que pour le remplissage PSS. Deux valeurs spéciales sont permises : -1 définit la taille de sel à la taille de signature. Lors d’une signature, -2 définit la taille de sel à la valeur maximale permise. Lors de la vérification, -2 force la taille de sel à être déterminée automatiquement à partir de la structure de bloc PSS. Si cette macro n’est pas appelée, une valeur de taille de sel -2 est utilisée par défaut.

La macro EVP_PKEY_CTX_set_rsa_rsa_keygen_bits() définit la taille de clef RSA pour la génération de clef RSA à bits. Si elle n’est pas indiquée, 1024 bits est utilisé.

La macro EVP_PKEY_CTX_set_rsa_keygen_pubexp() définit la valeur d’exposant public pour la génération de clef RSA à pubexp ; actuellement, ce devrait être un entier impair. Le pointeur pubexp est utilisé en interne par cette fonction, et ne devrait donc pas être modifié ni libéré après l’appel. Si cette macro n’est pas appelée, alors 65537 est utilisé.

La macro EVP_PKEY_CTX_set_dsa_paramgen_bits() définit le nombre de bits utilisés pour la génération de paramètres DSA à bits. En absence d’indication, 1024 est utilisé.

La macro EVP_PKEY_CTX_set_dh_paramgen_prime_len() définit la taille du paramètre p de nombre premier pour la génération de paramètres DH. Si cette macro n’est pas appelée, alors 1024 est utilisé.

La macro EVP_PKEY_CTX_set_dh_paramgen_generator() définit le générateur DH à gen pour la génération de paramètres DH. En absence d’indication, 2 est utilisé.

La macro EVP_PKEY_CTX_set_ec_paramgen_curve_nid() définit la courbe EC pour la génération de paramètres EC à nid. Pour la génération de paramètres EC, cette macro doit être appelée sinon une erreur survient parce qu’il n’y a pas de courbe par défaut.

VALEURS DE RETOUR
EVP_PKEY_CTX_ctrl() et ses macros renvoient une valeur positive en cas de réussite et 0 ou une valeur négative en cas d’échec. En particulier, une valeur de -2 indique que l’opération n’est pas prise en charge par l’algorithme à clef publique.

VOIR AUSSI
EVP_PKEY_CTX_new(3), EVP_PKEY_encrypt(3), EVP_PKEY_decrypt(3), BEVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_PKEY_derive(3) EVP_PKEY_keygen(3)

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.