PKCS7_sign(3) Créer une structure PKCS#7 signedData

SYNOPSIS

#include <openssl/pkcs7.h>

PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *clé_privée, STACK_OF(X509) *certs, BIO *données, int drapeaux);

DESCRIPTION

PKCS7_sign() crée et renvoie une structure PKCS#7 signedData. signcert est le certificat utilisé pour signer, clé_privée est la clé privée correspondante. certs est un ensemble supplémentaire et facultatif de certificats à inclure dans la structure PKCS7 (par exemple, les autorités de certification intermédiaires dans la chaîne).

Les données à signer sont lues à partir du BIO données.

drapeaux est un jeu facultatif d'attributs.

NOTES

N'importe lequel des attributs suivants (disjoints) peut être passé dans le paramètre drapeaux.

De nombreux clients S/MIME s'attendent à ce que le contenu signé inclut des en-tête MIME valables. Si l'attribut PKCS7_TEXT est défini, les données sont précédées des en-têtes MIME pour le type text/plain.

Si PKCS7_NOCERTS est défini, le certificat du signataire ne sera pas inclus dans la structure PKCS7, le certificat du signataire doit tout de même être fourni dans le paramètre signcert. Cela peut réduire la taille de la signature si le certificat du signataire peut être obtenu par d'autres moyens : par exemple un message précédemment signé.

Les données en cours de signature sont incluses dans la structure PKCS7, sauf si PKCS7_DETACHED est défini, auquel cas elles sont omises. C'est utilisé pour les signatures détachées PKCS#7 qui sont utilisées dans les messages signés en texte S/MIME par exemple.

Normalement, le contenu fourni est traduit en format canonique MIME (comme exigé par les spécifications S/MIME) ; si PKCS7_BINARY est défini, aucune traduction n'est effectuée. Cette option devrait être utilisée si les données fournies sont en format binaire, sinon la traduction va les corrompre.

La structure signedData contient plusieurs PKCS#7 autenticatedAttributes, y compris l'heure de signature, le type de contenu PKCS#7 et la liste d'algorithmes de signature pris en charge dans un attribut SMIMECapabilities. Si PKCS7_NOATTR est défini, alors aucun authenticatedAttributes ne sera utilisé. Si PKCS7_NOSMIMECAP est défini, alors seules les SMIMECapabilities sont omises.

S'il existe, l'attribut SMIMECapabilities indique la prise en charge des algorithmes suivants : DES triple, RC2 128 bits, RC2 64 bits, DES et RC2 40 bits. Si un de ces algorithmes est désactivé, alors il ne sera pas inclus.

Si l'attribut PKCS7_STREAM est défini, alors la structure PKCS7 renvoyée est simplement initialisée, prête à réaliser l'opération de signature. La signature n'est cependant pas réalisée et les données à signer ne sont pas lues à partir du paramètre données. La signature est reportée jusqu'après l'écriture des données. De cette façon, les données peuvent être signées en une seule passe.

Si l'attribut PKCS7_PARTIAL est défini, une structure PKCS7 partielle est produite, à laquelle des signataires et des capacités supplémentaires peuvent être ajoutés avant la finalisation.

NOTES

Si l'attribut PKCS7_STREAM est défini, la structure PKCS7 renvoyée n'est pas terminée, et afficher son contenu par l'intermédiaire d'une fonction qui ne finalise pas correctement la structure PKCS7 produira des résultats imprévisibles.

Plusieurs fonctions, y compris SMIME_write_PKCS7(), i2d_PKCS7_bio_stream() et PEM_write_bio_PKCS7_stream(), finalisent la structure. Sinon, la finalisation peut être réalisée en obtenant directement le BIO de flux ASN1 avec BIO_new_PKCS7().

Si un signataire est indiqué, il utilisera l'algorithme de signature par défaut pour l'algorithme de signature. C'est SHA1 à la fois pour les clés RSA et DSA.

Dans la version 1.0.0 d'OpenSSL, les paramètres certs, signcert et clé_privée peuvent tous être NULL si l'attribut PKCS7_PARTIAL est défini. Au moins un signataire peut être ajouté en utilisant la fonction PKCS7_sign_add_signer(). PKCS7_final() doit aussi être appelée pour finaliser la structure si le flux n'est pas activé. Des algorithmes de signatures alternatifs peuvent aussi être indiqués en utilisant cette méthode.

Dans la version 1.0.0 d'OpenSSL, si signcert et clé_privée sont NULL, alors une structure PKCS7 de certificats seulement est produite.

Avant la version 1.0.0 d'OpenSSL, les paramètres signcert et pkey ne doivent pas être NULL.

BOGUES

Certains attributs avancés comme les contre-signatures ne sont pas pris en charge.

VALEURS DE RETOUR

PKCS7_sign() renvoie soit une structure PKCS7 valable, soit NULL en cas d'erreur. L'erreur peut être obtenue à l'aide de ERR_get_error(3).

HISTORIQUE

PKCS7_sign() a été ajoutée dans la version 0.9.5 d'OpenSSL

L'attribut PKCS7_PARTIAL a été ajouté dans la version 1.0.0 d'OpenSSL.

L'attribut PKCS7_STREAM a été ajouté dans la version 1.0.0 d'OpenSSL.

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.