Attributs CMC
Dans la pratique, la structure d’une demande CMC, indiquée par la syntaxe suivante, est relativement complexe, car elle contient souvent des requêtes imbriquées. Par exemple, une demande CMC peut contenir zéro ou une demande PKCS # 10 dans une séquence TaggedRequest , et elle peut contenir zéro ou un message PKCS # 7 dans une séquence TaggedContentInfo . Chaque # message PKCS 7 imbriqué peut contenir une demande CMC qui peut, à son tour, contenir plus de demandes. Le nombre de niveaux d’imbrication est théoriquement illimité, mais l’autorité de certification (CA) est généralement configurée pour limiter la taille d’une demande. Les attributs peuvent être appliqués à la demande de niveau supérieur ou aux requêtes imbriquées. Ce sujet est abordé dans les sections suivantes.
CMCData, structure
Une demande CMC contient des séquences de structures TaggedAttribute, TaggedRequest et TaggedContentInfo ASN. 1.
CmcData ::= SEQUENCE
{
controlSequence ControlSequence,
reqSequence ReqSequence,
cmsSequence CmsSequence,
otherMsgSequence OtherMsgSequence
}
ControlSequence ::= SEQUENCE OF TaggedAttribute
ReqSequence ::= SEQUENCE OF TaggedRequest
CmsSequence ::= SEQUENCE OF TaggedContentInfo
TaggedAttribute ::= SEQUENCE
{
bodyPartID BodyPartID,
type EncodedObjectID,
values AttributeSetValue
}
TaggedRequest ::= CHOICE
{
tcr [0] IMPLICIT TaggedCertificationRequest
}
TaggedContentInfo ::= SEQUENCE
{
bodyPartID BodyPartID,
contentInfo ANY
}
BodyPartID ::= INTEGER (0..4294967295)
EncodedObjectID ::= OBJECT IDENTIFIER
AttributeSetValue ::= SET OF ANY
TaggedAttribute, structure
Les attributs sont inclus dans une demande de certificat CMC en les ajoutant à la collection TaggedAttribute . Chaque structure de la collection contient un ID d’entier, un identificateur d’objet (OID) ASN. 1 et un ensemble de valeurs. Les valeurs possibles sont les suivantes :
CmcAddAttributes ::= SEQUENCE
{
pkiDataReference BodyPartID,
certReferences BodyPartIDSequence,
attributes Attributes
}
Attributes ::= SET OF Attribute
Attribute ::= SEQUENCE
{
type EncodedObjectID,
values AttributeSetValue
}
CmcAddExtensions ::= SEQUENCE
{
pkiDataReference BodyPartID,
certReferences BodyPartIDSequence,
extensions Extensions
}
Extensions ::= SEQUENCE OF Extension
Extension ::= SEQUENCE
{
extnId EncodedObjectID,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTETSTRING
}
SenderNonce ::= OCTET STRING
TransactID ::= OCTET STRING
RegInfo ::= OCTET STRING
CMCAddAttributes
Si les attributs de cette structure s’appliquent à une requête PKCS 10 imbriquée # , le champ certReferences contient le BodyPartID qui identifie la demande. Si les attributs s’appliquent à une demande CMC imbriquée, le champ pkiDataReference contient le BodyPartID de la requête. Actuellement, un seul de ces champs peut être différent de zéro. Les attributs qui peuvent être inclus sont répertoriés dans la rubrique attributs pris en charge .
CmcAddExtensions
Cette structure peut contenir les extensions X. 509 version 3 et les extensions définies par Microsoft. Cet attribut est défini à l’aide de l’interface IX509AttributeExtensions . Si les extensions s’appliquent à une requête PKCS 10 imbriquée # , le champ certReferences contient le BodyPartID qui identifie la demande. Si les extensions s’appliquent à une demande CMC imbriquée, le champ pkiDataReference contient le BodyPartID de la demande. Actuellement, un seul de ces champs peut être différent de zéro.
SenderNonce
Une valeur à usage unique est une donnée binaire aléatoire ou Pseudo-aléatoire qui peut être incluse dans une transaction de demande de certificat et de réponse pour garantir que la réponse ou la demande n’est pas une répétition d’un message précédent. Pour plus d’informations, consultez la propriété SenderNonce .
TransactID
Une demande de certificat d’aller-retour et une transaction de réponse peuvent être suivies à l’aide d’un identificateur. Le client génère un ID de transaction et le conserve jusqu’à ce que le certificat ou l’autorité d’inscription réponde avec un message qui termine la transaction. La réponse comprend l’identificateur. Pour plus d’informations, consultez la propriété TransactionId .
RegInfo
Cet attribut peut être utilisé pour contenir les informations d’inscription que le client choisit de placer dans la demande CMC. La valeur de l’attribut est une chaîne qui contient des paires nom-valeur concaténées. Pour plus d’informations, consultez la propriété NameValuePairs .