NOM¶
CMS_decrypt - Déchiffrer le contenu d'une structure CMS envelopedData
SYNOPSIS¶
#include <openssl/cms.h>
int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags);
DESCRIPTION¶
CMS_decrypt() extrait et déchiffre le contenu d'une structure CMS
EnvelopedData.
pkey est la clef privée du destinataire,
cert est le certificat du destinataire,
out est un BIO pour y
écrire le contenu et
flags est un ensemble d'attributs
facultatifs.
Le paramètre
dcont est utilisé dans le rare cas où
le contenu chiffré est détaché. Il sera normalement
défini à NULL.
NOTES¶
OpenSSL_add_all_algorithms() (ou équivalent) devrait être
appelée avant d'utiliser cette fonction, sinon des erreurs à
propos d'algorithmes inconnus vont survenir.
Bien que le certificat des destinataires ne soit pas nécessaire pour
déchiffrer les données, il est nécessaire pour localiser
les (éventuellement nombreux) destinataires appropriés dans la
structure CMS.
Si
cert est défini à NULL, tous les destinataires possibles
sont essayés. Ce cas est cependant problématique. Pour repousser
l’attaque MMA (attaque de Bleichenbacher sur le remplissage
RSA v1.5 de PKCS #1), tous les destinataires sont essayés
qu’ils réussissent ou pas. Si aucun destinataire ne
réussit, alors une clef symétrique aléatoire est
utilisée pour déchiffrer le contenu : il n’en sort
généralement rien d’intéressant et pourrait (mais
ce n’est pas garanti) au final ne renvoyer qu’une erreur de
remplissage. Si
CMS_decrypt() ne renvoie qu’une erreur quand
toutes les clefs chiffrées des destinataires ont échoué
à déchiffrer, un attaquant pourrait utiliser cela dans une
attaque temporelle. Si l’attribut spécial
CMS_DEBUG_DECRYPT est défini, alors le comportement
précédent est modifié et une erreur
est
renvoyée si aucune clef chiffrée de destinataire ne peut
être déchiffrée
sans générer de clef
de chiffrement de contenu aléatoire. Les applications ne devrait
utiliser cet attribut qu’avec d’
extrêmes
précautions, en particulier dans les passerelles
automatisées, car cela peut les laisser ouvertes aux attaques.
Il est possible de déterminer la clef adéquate de destinataire par
d'autres moyens (par exemple en les cherchant dans une base de données)
et de les définir au préalable dans la structure CMS en
utilisant des fonctions d'utilitaires CMS comme
CMS_set1_pkey(). Dans
ce cas,
cert et
pkey devraient tous deux être
définis à NULL.
Pour traiter les types KEKRecipientInfo,
CMS_set1_key() ou
CMS_RecipientInfo_set0_key() et
CMS_ReceipientInfo_decrypt()
devraient être appelées avant
CMS_decrypt() et
cert et
pkey être définis à NULL.
Les attributs suivants peuvent être passés dans le
paramètre
flags.
Si l'attribut
CMS_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.
VALEURS DE RETOUR¶
CMS_decrypt() renvoie
1 en cas de réussite et
0 en
cas d'échec. L'erreur peut être obtenue à l'aide de
ERR_get_error(3).
BOGUES¶
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ée dans
CMS_verify(), s'appliquent aussi à
CMS_decrypt().
VOIR AUSSI¶
ERR_get_error(3),
CMS_encrypt(3)
HISTORIQUE¶
CMS_decrypt() a été ajoutée dans
OpenSSL 0.9.8
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.