Provided by: manpages-fr-extra_20151231_all bug

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.