Attributs CMC

Dans la pratique, la structure d’une requête CMC, illustrée par la syntaxe suivante, est relativement complexe, car elle contient souvent des requêtes imbriquées. Par exemple, une requête 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 requête CMC qui peut, à son tour, contenir davantage de requêtes. Le nombre de niveaux d’imbrication est théoriquement illimité, mais l’autorité de certification est généralement configurée pour limiter la taille d’une demande. Les attributs peuvent être appliqués à la requête de niveau supérieur ou aux requêtes imbriquées. Cela est abordé dans les sections suivantes.

CMCData Structure

Une requête 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 entier, un identificateur d’objet ASN.1 (OID) et un ensemble de valeurs. Les valeurs possibles peuvent être l’une des 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 requête 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. Les attributs qui peuvent être inclus sont répertoriés dans la rubrique Attributs pris en charge .

CmcAddExtensions

Cette structure peut contenir des extensions X.509 version 3 plus des 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 requête 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

Un nonce est des données binaires aléatoires ou pseudo-aléatoires qui peuvent être incluses dans une demande de certificat et une transaction 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 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 l’autorité de certificat ou d’inscription réponde par un message qui termine la transaction. La réponse inclut l’identificateur. Pour plus d’informations, consultez la propriété TransactionId .

RegInfo

Cet attribut peut être utilisé pour contenir toutes 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 .

Attributs pris en charge