NOM¶
PKCS7_sign - Créer une structure PKCS#7 signedData
SYNOPSIS¶
#include <openssl/pkcs7.h>
PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, int flags);
DESCRIPTION¶
PKCS7_sign() crée et renvoie une structure PKCS#7 signedData.
signcert est le certificat utilisé pour signer,
pkey est la
clef privée correspondante.
certs est un ensemble
supplémentaire et facultatif de certificats à inclure dans la
structure PKCS#7 (par exemple les autorités de certification
intermédiaires dans la chaîne).
Les données à signer sont lues à partir du BIO
data.
flags est un jeu facultatif d'attributs.
NOTES¶
N'importe lequel des attributs suivants (disjoints) peut être passé
dans le paramètre
flags.
De nombreux clients S/MIME s'attendent à ce que le contenu signé
inclue 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 à 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 à la structure PKCS7,
sauf si
PKCS7_DETACHED est défini, auquel cas elles sont omises.
C'est utilisé pour les signatures détachées PKCS7 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 algorithme 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
data. 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 clefs RSA et DSA.
Dans OpenSSL 1.0.0, les paramètres
certs,
signcert et
pkey 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 OpenSSL 1.0.0, si
signcert et
pkey sont NULL, alors une
structure PKCS#7 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).
VOIR AUSSI¶
ERR_get_error(3),
PKCS7_verify(3)
HISTORIQUE¶
PKCS7_sign() a été ajoutée dans OpenSSL 0.9.5
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.