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).
PKCS-10 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-10(10) modules(1) pkcs-10(1)}
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- EXPORTS All --
-- All types and values defined in this module are exported for use in other ASN.1 modules.
IMPORTS
informationFramework, authenticationFramework FROM UsefulDefinitions
{joint-iso-itu-t(2) ds(5) module(1) usefulDefinitions(0) 3}
ATTRIBUTE, Name FROM InformationFramework informationFramework
ALGORITHM FROM AuthenticationFramework authenticationFramework;
-- Certificate requests
CertificationRequestInfo ::= SEQUENCE
-- Informations sur une requete sur un certificat.
{
version INTEGER { v1(0) } (v1,...),
-- Toujours 0.
subject Name,
-- Distinguished Name (DN) i.e. identite du proprietaire du certificat dans l'annuaire.
subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
-- Algorithme a utiliser pour le cryptage du certificat. Par exemple PKCS#1.rsaEncryption.
attributes [0] Attributes{{ CRIAttributes }}
-- Liste d'attributs caracterisant le proprietaire du certificat. Par exemple un mot de passe.
}
SubjectPublicKeyInfo {ALGORITHM: IOSet} ::= SEQUENCE
{
algorithm AlgorithmIdentifier {{IOSet}},
subjectPublicKey BIT STRING
}
PKInfoAlgorithms ALGORITHM ::= { ... -- add any locally defined algorithms here -- }
Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}
CRIAttributes ATTRIBUTE ::= { ... -- add any locally defined attributes here -- }
Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE
{
type ATTRIBUTE.&id({IOSet}),
values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})
}
CertificationRequest ::= SEQUENCE
-- Requete sur un certificat.
{
certificationRequestInfo CertificationRequestInfo,
-- Informations caracterisant la requete sur un certificat.
signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
-- Identifiant de l'algorithme et ses parametres pour la signature des informations de la requete. Par exemple Pkcs#1.md5WithRSAEncryption.
signature BIT STRING
-- Resultat de l'algorithme precedent.
}
AlgorithmIdentifier {ALGORITHM:IOSet } ::= SEQUENCE
{
algorithm ALGORITHM.&id({IOSet}),
-- Identifiant de l'algorithme.
parameters ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL
-- Parametres de l'algorithme.
}
SignatureAlgorithms ALGORITHM ::= { ... -- add any locally defined algorithms here -- }
END