Freigeben über


CMC-Attribute

In der Praxis ist die Struktur einer CMC-Anforderung, die durch die folgende Syntax dargestellt wird, relativ komplex, da sie häufig geschachtelte Anforderungen enthält. Beispielsweise kann eine CMC-Anforderung null oder eine PKCS #10-Anforderung in einer TaggedRequest-Sequenz enthalten und null oder eine PKCS #7-Meldungen in einer TaggedContentInfo-Sequenz enthalten. Jede geschachtelte PKCS #7-Nachricht kann eine CMC-Anforderung enthalten, die wiederum weitere Anforderungen enthalten kann. Die Anzahl der Schachtelungsebenen ist theoretisch unbegrenzt, aber die Zertifizierungsstelle ist in der Regel so konfiguriert, dass die Größe einer Anforderung begrenzt wird. Attribute können auf die Anforderung der obersten Ebene oder auf die geschachtelten Anforderungen angewendet werden. Dies wird in den folgenden Abschnitten erläutert.

CMCData-Struktur

Eine CMC-Anforderung enthält Sequenzen der ASN.1-Strukturen TaggedAttribute, TaggedRequest und TaggedContentInfo .

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-Struktur

Attribute werden in einer CMC-Zertifikatanforderung enthalten, indem sie der TaggedAttribute-Auflistung hinzugefügt werden. Jede Struktur in der Auflistung enthält eine ganzzahlige ID, einen ASN.1-Objektbezeichner (OID) und einen Satz von Werten. Die möglichen Werte können einer der folgenden sein.

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

Wenn die Attribute in dieser Struktur für eine geschachtelte PKCS #10-Anforderung gelten, enthält das Feld certReferences die BodyPartID , die die Anforderung identifiziert. Wenn die Attribute für eine geschachtelte CMC-Anforderung gelten, enthält das Feld pkiDataReference die BodyPartID der Anforderung. Derzeit kann nur eines dieser Felder nichtzero sein. Die Attribute, die eingeschlossen werden können, sind im Thema Unterstützte Attribute aufgeführt.

CmcAddExtensions

Diese Struktur kann X.509 Version 3-Erweiterungen plus von Microsoft definierte Erweiterungen enthalten. Dieses Attribut wird mithilfe der IX509AttributeExtensions-Schnittstelle definiert. Wenn die Erweiterungen für eine geschachtelte PKCS #10-Anforderung gelten, enthält das Feld certReferences die BodyPartID , die die Anforderung identifiziert. Wenn die Erweiterungen für eine geschachtelte CMC-Anforderung gelten, enthält das Feld pkiDataReference die BodyPartID der Anforderung. Derzeit kann nur eines dieser Felder nichtzero sein.

SenderNonce

Eine Nonce sind zufällige oder pseudo-zufällige Binärdaten, die in eine Zertifikatanforderungs- und Antworttransaktion einbezogen werden können, um sicherzustellen, dass die Antwort oder Anforderung keine Wiederholung einer vorherigen Nachricht ist. Weitere Informationen finden Sie in der SenderNonce-Eigenschaft .

TransactID

Eine Roundtrip-Zertifikatanforderung und -antworttransaktion können mithilfe eines Bezeichners nachverfolgt werden. Der Client generiert eine Transaktions-ID und behält sie bei, bis das Zertifikat oder die Registrierungsstelle mit einer Nachricht antwortet, die die Transaktion abgeschlossen hat. Die Antwort enthält den Bezeichner. Weitere Informationen finden Sie in der TransactionId-Eigenschaft .

RegInfo

Dieses Attribut kann verwendet werden, um alle Registrierungsinformationen zu enthalten, die der Client in die CMC-Anforderung eingibt. Der Attributwert ist eine Zeichenfolge, die verkettete Name-Wert-Paare enthält. Weitere Informationen finden Sie in der NameValuePairs-Eigenschaft .

Unterstützte Attribute