Provided by: manpages-fr-extra_20151231_all 

NOM
PKCS7_verify, PKCS7_get0_signers - Vérifier une structure PKCS#7 signedData
SYNOPSIS
#include <openssl/pkcs7.h>
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int
<drapeaux>);
STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int drapeaux);
DESCRIPTION
PKCS7_verify() vérifie une structure PKCS#7 signedData. p7 est la structure PKCS7 à vérifier. certs est
un ensemble de certificats dans lequel chercher le certificat du signataire. store est le répertoire des
certificats de confiance (utilisé pour les vérifications en chaîne). indata contient les données signées
si elles ne sont pas incluses dans p7 (c'est-à-dire si elles sont détachées). Le contenu est écrit dans
out s'il n'est pas NULL.
drapeaux est un jeu d'attributs facultatifs, qui peut être utilisé pour modifier l'opération de
vérification.
PKCS7_get0_signers() récupère les certificats du signataire à partir de p7, Il ne vérifie pas leur
validité ni celle d'aucune signature. Les paramètres certs et drapeaux ont les mêmes significations que
dans PKCS7_verify().
PROCESSUS DE VÉRIFICATION
Normalement, le processus de vérification procède comme suit.
Initialement quelques vérifications d'intégrité sont effectuées sur p7. Le type de p7 doit être
signedData. Il doit y avoir au moins une signature sur les données et, si le contenu est détaché, indata
ne peut pas être NULL.
Une tentative est faite pour localiser tous les certificats du signataire, premièrement en cherchant dans
le paramètre certs (s'il n'est pas NULL) et ensuite en regardant dans tout certificat contenu dans la
structure p7 elle même. Si aucun certificat du signataire ne peut être localisé, l'opération échoue.
Chaque certificat du signataire est vérifié en chaîne en utilisant smimesign et le répertoire de
certificats de confiance. Tout certificat interne au message est utilisé comme une CA non fiable. Si une
chaîne de vérification échoue, un code d'erreur est renvoyé.
Finalement, le contenu signé est lu (et écrit dans out s'il n'est pas NULL) et la signature est vérifiée.
Si toutes les vérifications de signature sont correctes, la fonction est un succès.
Chacun des drapeaux suivants (ou en combinaison) peut être passé dans le paramètre drapeaux pour changer
le comportement par défaut des vérifications. Seul le drapeau PKCS7_NOINTERN a un sens pour
PKCS7_get0_signers().
Si PKCS7_NOINTERN est défini, les certificats contenus dans le message lui-même ne seront pas recherchés
lors de la localisation des certificats du signataire. Cela signifie que tous les certificats du
signataire doivent être dans le paramètre certs.
Si l'attribut PKCS7_TEXT est défini, les en-têtes MIME pour le type text/plain sont supprimés du contenu.
Si le contenu n'est pas de type text/plain, alors une erreur est renvoyée.
Si PKCS7_NOVERIFY est défini, les certificats du signataire ne sont pas vérifiés en chaîne.
Si PKCS7_NOCHAIN est défini, les certificats contenus dans le message ne sont pas utilisés comme
autorités de certification non fiables. Cela veut dire que toute la chaîne de vérification (en dehors du
certificat du signataire) doit être contenu dans le répertoire de confiance.
Si PKCS7_NOSIGS est défini, les signatures des données ne sont pas vérifiées.
NOTES
Une application de PKCS7_NOINTERN est d'accepter uniquement les messages signés par un petit nombre de
certificats. Les certificats acceptés seront passés dans le paramètre certs. Dans ce cas, si le
certificat du signataire n'est pas dans certs, la vérification échouera car le certificat du signataire
ne sera pas trouvé.
Une attention particulière doit être prise lors de la modification du comportement par défaut de la
vérification. Par exemple, définir PKCS7_NOVERIFY|PKCS7_NOSIGS désactivera totalement toute vérification
et tout message signé sera considéré comme valide. Cette combinaison est cependant utile si l'on veut le
contenu de out et que sa validité n'est pas considérée comme importante.
La vérification en chaîne doit probablement être effectuée en utilisant le moment de la signature plutôt
que l’heure actuelle. Cependant, comme le moment de la signature est fourni par le signataire, il ne peut
être fiable sans autres preuves (comme par exemple un horodatage de confiance).
VALEURS DE RETOUR
PKCS7_verify() renvoie 1 en cas de vérification réussie et 0 en cas d'erreur.
PKCS7_get0_signers() renvoie tous les signataires ou NULL en cas d'erreur.
L'erreur peut être obtenue à partir de ERR_get_error(3).
BOGUES
Le répertoire de certificats de confiance n'est pas inspecté pour trouver le certificat du signataire,
cela est dû principalement à l'inadéquation de fonctionnalité de la structure X509_STORE courante.
L'absence de traitement en une seule passe et la nécessité de garder toutes les données en mémoire, comme
c'est mentionné dans PKCS7_sign(), s'appliquent aussi à PKCS7_verify().
VOIR AUSSI
ERR_get_error(3), PKCS7_sign(3)
HISTORIQUE
PKCS7_verify() a été ajoutée dans la version 0.9.5 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.
1.0.2a 1.0.2c 2015-12-31 fr::crypto::PKCS7_verify(3SSL)