NOM¶
PKCS7_sign - 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).
VOIR AUSSI¶
ERR_get_error(3),
PKCS7_verify(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.