La requête est effectuée par un demandeur auprès du Certificate Authority (CA) qui a besoin d'authentifier un tiers.
La norme utilisée utilisée est Abstract Syntax Notation One (ASN.1) de l'International Telecommunication Union (ITU) compilée en Basic Encoding Rules (BER).
-- Les types suivants sont supposes deja definis.
-- ==============================================
-- AlgorithmIdentifier - Identifiant d'un algorithme - X.509.
-- Attribute - Type definissant une propriete d'un certificat ou d'une entree de l'annuaire - X.501.
-- Certificate - Certificat de base i.e. association entre Distinguished Name (DN) de l'annuaire et une cle publique - X.509.
-- CertificateSerialNumber - Identification unique de l'association precedente - X.509.
-- CertificateRevocationList - Liste des certificats revoques - Rfc 1422.
-- desCBC - Type des parametres de DES en CBC.
-- ExtendedCertificate - Certificat de base complete par une liste de proprietes lisibles par un tiers - PKCS#6.
-- md2 - Identifiant de l'algorithme md2.
-- md5 - Identifiant de l'algorithme md5.
-- Name - Entree de l'annuaire - X.500.
-- rsaEncryption - Identifiant de l'algorithme Rsa.
CertificateRevocationLists ::= SET OF CertificateRevocationList
-- Liste des certificats a revoquer.
ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage. Par exemple DES.
DigestAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme de signature. Par exemple MD2 ou MD5.
DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage parametre par un algorithme de signature. Par exemple RSA.
ExtendedCertificateOrCertificate ::= CHOICE
-- Certificat de base ou etendu.
{
certificate Certificate,
-- Certificat de base au format X.509.
extendedCertificate [0] IMPLICIT ExtendedCertificate
-- Certificat de base avec les proprietes lisibles par un tiers au format Pkcs#6.
}
ExtendedCertificatesAndCertificates ::= SET OF ExtendedCertificateOrCertificate
-- Chaine des certificats menant recursivement du certificat cible a celui du Certificat Authority (CA).
IssuerAndSerialNumber ::= SEQUENCE
-- Identifiant du certificat.
{
issuer Name,
-- Distinguished Name (DN) i.e. identifiant dans l'annuaire du propritaire du certificat.
serialNumber CertificateSerialNumber
-- Numero unique du certificat genere par le Certificate Authority (CA).
}
KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage parametre par une cle. Par exemple RSA.
Version ::= INTEGER
ContentInfo ::= SEQUENCE
-- Definition du contenu d'un flux Pkcs#7.
{
contentType ContentType,
-- Type du contenu : data, signedData, envelopedData, signedAndEnvelopedData, digestedData ou encryptedData.
content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL
-- Corps du contenu : Data, SignedData, EnvelopedData, SignedAndEnvelopedData, DigestedData ou EncryptedData.
}
ContentType ::= OBJECT IDENTIFIER
-- Type de contenu : data, signedData, envelopedData, signedAndEnvelopedData, digestedData ou encryptedData.
SignedData ::= SEQUENCE
-- Definition du contenu du type 'signedData' - donnees et signature pour authentification. Il est signe par zero, un ou plusieurs signataires.
-- Chaque signature est cryptee avec la cle privee du signataire. La cle publique pour decryptage avant verification de la signature peut etre transmise.
-- Ce contenu est aussi utilise pour diffuser les cles publiques revoquees.
{
version Version,
-- Toujours 1.
digestAlgorithms DigestAlgorithmIdentifiers,
-- Algorithmes de signature avec leurs parametres qui ont ete appliques par les signataires.
-- Cette information est redondante avec celle dans l'information de chaque signataire.
contentInfo ContentInfo,
-- Contenu qui a ete pour partie signe - Tous les attributs ne sont pas tous signes par tout les signataires.
certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-- Liste des certificats de base ou etendus contenant les cles publiques des signataires.
crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-- Liste des identifiants des certificats de base ou etendus revoques. Pour le second usage seulement.
signerInfos SignerInfos
-- Liste d'informations sur les signataires.
}
DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-- Identifiants des algorithmes de signature.
SignerInfos ::= SET OF SignerInfo
-- Informations sur un signataire.
SignerInfo ::= SEQUENCE
-- Information elementaire sur un signataire.
{
version Version,
-- Toujours 1.
issuerAndSerialNumber IssuerAndSerialNumber,
-- Identifiant du l'emetteur i.e. signataire dans l'annuaire et de son certificat.
digestAlgorithm DigestAlgorithmIdentifier,
-- Algorithme de signature utilise et ses parametres.
authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
-- Liste des attributs signes par le signataire. Pour chaque attribut, il y a au moins son type et son message-digest.
digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
-- Identifiant de l'algorithme de cryptage et ses parametres employes par le signataire.
encryptedDigest EncryptedDigest,
-- Resultat du cryptage de la signature du signataire avec l'algorithme precedent.
unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
-- Liste des attributs signes par le signataire. Pour chaque attribut, il y a au moins son type et son message-digest. Confere Pkcs#9.
}
EncryptedDigest ::= OCTET STRING
DigestInfo ::= SEQUENCE
-- Contenu qui doit etre crypte avec la cle privee du signataire.
{
-- Identifiant de l'algorithme de signature.
digestAlgorithm DigestAlgorithmIdentifier,
-- Signature du message avant cryptage.
digest Digest
}
Digest ::= OCTET STRING
EnvelopedData ::= SEQUENCE
-- Definition du contenu du type 'envelopedData' - recipients i.e. parametres des algorithmes de securite.
{
version Version,
-- Toujours 0.
recipientInfos RecipientInfos,
-- Liste des informations sur les recipients.
encryptedContentInfo EncryptedContentInfo
-- Information sur le contenu crypte.
}
RecipientInfos ::= SET OF RecipientInfo
-- Liste des informations sur les recipients.
EncryptedContentInfo ::= SEQUENCE
-- Information sur un contenu crypte.
{
contentType ContentType,
-- Type du contenu.
contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
-- Identifiant de l'algorithme du cryptage et ses parametres.
encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
-- Resultat du cryptage avec l'algorithme precedent. Si absent, la valeur est fournie par ailleurs.
-- Liste d'informations sur les signataires.
}
EncryptedContent ::= OCTET STRING
RecipientInfo ::= SEQUENCE
-- Definition d'un recipient.
{
version Version,
-- Toujours 0.
issuerAndSerialNumber IssuerAndSerialNumber,
-- Identifiant de l'emetteur dans l'annuaire et de son certificat.
keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
-- Identifiant de l'algorithme servant a crypter la cle generee avec la cle publique fournie en parametre.
encryptedKey EncryptedKey
-- Resultat de l'algorithme precedent.
}
EncryptedKey ::= OCTET STRING
SignedAndEnvelopedData ::= SEQUENCE
-- Definition du contenu du type 'signedAndEnvelopedData' - recipients i.e. parametres des algorithmes de securite et signature pour authentification.
{
version Version,
-- Toujours 1.
recipientInfos RecipientInfos,
-- Liste des informations sur les recipients.
digestAlgorithms DigestAlgorithmIdentifiers,
-- Liste des identifiants des algorithmes de signature avec leurs parametres.
encryptedContentInfo EncryptedContentInfo,
-- Information sur le contenu crypte.
certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-- Liste des certificats de base ou etendus contenant les cles publiques des signataires.
crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-- Liste des identifiants des certificats de base ou etendus revoques. Pour le second usage seulement.
signerInfos SignerInfos
}
DigestedData ::= SEQUENCE
-- Definition du contenu du type 'digestedData' - donnees avec signature pour verification.
{
version Version,
-- Toujours 0.
digestAlgorithm DigestAlgorithmIdentifier,
-- Identifiant de l'algorithme de signature et ses parametres.
contentInfo ContentInfo,
-- Information sur le contenu a signer pour verification.
digest Digest
-- Resultat de l'algorithme precedent.
}
Digest ::= OCTET STRING
EncryptedData ::= SEQUENCE
-- Definition du contenu du type 'encryptedData' - donnees avec cryptage.
{
version Version,
-- Toujours 0.
encryptedContentInfo EncryptedContentInfo
-- Information sur le contenu a crypter.
}
pkcs-7 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) 7 }
data OBJECT IDENTIFIER ::= { pkcs-7 1 }
signedData OBJECT IDENTIFIER ::= { pkcs-7 2 }
envelopedData OBJECT IDENTIFIER ::= { pkcs-7 3 }
signedAndEnvelopedData OBJECT IDENTIFIER ::= { pkcs-7 4 }
digestedData OBJECT IDENTIFIER ::= { pkcs-7 5 }
encryptedData OBJECT IDENTIFIER ::= { pkcs-7 6 }