fr::ssl::SSL_CTX_set_custom_cli_ext(3SSL)

NOM
SSL_CTX_add_client_custom_ext, SSL_CTX_add_server_custom_ext - Gestion personnalisée d’extension TLS

SYNOPSIS
#include <openssl/ssl.h>

int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                        custom_ext_add_cb add_cb,
                        custom_ext_free_cb free_cb, void *add_arg,
                        custom_ext_parse_cb parse_cb,
                    void *parse_arg);

int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
                        custom_ext_add_cb add_cb,
                        custom_ext_free_cb free_cb, void *add_arg,
                        custom_ext_parse_cb parse_cb,
                    void *parse_arg);

int SSL_extension_supported(unsigned int ext_type);

typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
                   const unsigned char **out,
                   size_t *outlen, int *al,
                   void *add_arg);

typedef void (*custom_ext_free_cb)(SSL *s, unsigned intB ext_type,
                     const unsigned char *out,
                     void *add_arg);

typedef int (*custom_ext_parse_cb)(SSL *s, unsigned intB ext_type,
                     const unsigned char *in,
                     size_t inlen, int *al,
                     void *parse_arg);

DESCRIPTION
SSL_CTX_add_client_custom_ext() ajoute une extension personnalisée pour un client TLS avec une extension de type ext_type et les rappels add_cb, free_cb et parse_cb.

SSL_CTX_add_server_custom_ext() ajoute une extension personnalisée pour un serveur TLS avec une extension de type ext_type et les rappels add_cb, free_cb et parse_cb.

Dans les deux cas, le type d’extension ne doit pas être géré en interne par OpenSSL, sinon une erreur se produit.

SSL_extension_supported() renvoie 1 si l’extension ext_type est gérée en interne par OpenSSL ou autrement 0.

FONCTIONS DE RAPPEL D’EXTENSION
Le rappel add_cb est demandé pour envoyer des données d’extension personnalisée à inclure dans ClientHello pour un client TLS ou ServerHello pour un serveur TLS. Le paramètre ext_type est défini au type d’extension qui sera ajouté et le paramètre add_arg à la valeur définie lorsque le gestionnaire d’extension a été ajouté.

Si l’application veut inclure l’extension ext_type, elle doit définir *out aux données d’extension, définir *outlen à la longueur des données d’extension et renvoyer 1.

Si le rappel add_cb ne veut pas inclure l’extension, il doit renvoyer 0.

Si le rappel add_cb renvoie -1, une erreur fatale d’initiation de connexion s’est produite avec un message d’alerte TLS indiqué dans *al.

Pour les clients (mais pas les serveurs), si add_cb est défini à NULL, une extension de longueur zéro est ajoutée pour ext_type.

Pour les clients, chaque add_cb enregistré est toujours appelé pour savoir si l’application veut ajouter une extension à ClientHello.

Pour les serveurs, chaque add_cb enregistré est appelé une fois, si et seulement si l’extension correspondante a été intégrée dans ClientHello, pour savoir si l’application veut ajouter l’extension à ServerHello. C’est-à-dire, sans extension correspondante dans ClientHello, add_cb n’est pas appelé.

Si une extension est ajoutée (c’est-à-dire, add_cb renvoie 1), free_cb est appelé (s’il est défini) avec la valeur de out définie par le rappel d’ajout. Il peut être utilisé pour libérer n’importe quelles données d’extension variables définies par add_cb. Puisque out est constant (pour permettre l’utilisation de données constantes dans add_cb), les applications peuvent nécessiter de rejeter cette constance pour libérer les données.

Le rappel parse_cb reçoit des données pour des extensions TLS. Pour les clients TLS les données d’extension proviennent de ServerHello et pour les serveurs TLS de ClientHello.

Les données d’extension consistent en inlen octets dans le tampon in pour l’extension extension_type.

Si parse_cb juge les données d’extension valables, il doit renvoyer 1. S’il renvoie 0 ou une valeur négative, une erreur fatale d’initiation de connexion se produit avec un message d’alerte indiqué dans *al.

Le tampon in est un tampon interne temporaire qui ne sera plus valable après le renvoi du rappel.

NOTES
Les paramètres add_arg et parse_arg peuvent être définis à des valeurs arbitraires transmises aux rappels correspondants. Ils peuvent, par exemple, servir au stockage des données d’extension reçues dans une structure appropriée ou à transmettre les données d’extension à ajouter ou libérer lors de l’ajout de l’extension.

Le paramètre ext_type correspond au champ extension_type de la RFC 5246 (entre autres). Ce n’est pas un identifiant (NID).

Si la même extension personnalisée est reçue plusieurs fois, une alerte decode_error fatale est envoyée et l’initiation de connexion échoue. Si une extension personnalisée est reçue dans ServerHello qui n’avait pas été envoyée dans ClientHello, une alerte unsupported_extension est envoyée et l’initiation de connexion avorte. Le rappel add_cb de ServerHello est seulement appelé si l’extension correspondante a été reçue dans ClientHello. Cela est conforme aux spécifications TLS. Ce comportement assure que chaque rappel est fait au plus une fois et qu’une application ne puisse envoyer une extension non sollicitée.

VALEURS DE RETOUR
SSL_CTX_add_client_custom_ext() et SSL_CTX_add_server_custom_ext() renvoient 1 pour un succès et 0 pour un échec. Un échec peut se produire si un essai est fait d’ajouter plus d’une fois le même ext_type, si un essai est fait d’utiliser un type d’extension utilisé en interne par OpenSSL ou si une erreur interne se produit (par exemple un échec d’allocation mémoire).

SSL_extension_supported() renvoie 1 si l’extension ext_type est gérée en interne par OpenSSL ou autrement 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.