Udostępnij za pośrednictwem


Atrybuty CMC

W praktyce struktura żądania CMC, pokazana przez następującą składnię, jest stosunkowo złożona, ponieważ często zawiera zagnieżdżone żądania. Na przykład żądanie CMC może zawierać zero lub jedno żądanie PKCS #10 w sekwencji TagRequest i może zawierać zero lub jeden komunikat PKCS #7 w TaggedContentInfo sekwencji. Każdy zagnieżdżony komunikat PKCS #7 może zawierać żądanie CMC, które z kolei może zawierać więcej żądań. Liczba poziomów zagnieżdżania jest teoretycznie nieograniczona, ale urząd certyfikacji (CA) jest zwykle skonfigurowany do ograniczania rozmiaru żądania. Atrybuty można zastosować do żądania najwyższego poziomu lub do zagnieżdżonych żądań. Omówiono to w poniższych sekcjach.

CMCData, struktura

Żądanie CMC zawiera sekwencje TaggedAttribute, TaggedRequesti 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, struktura

Atrybuty są uwzględniane w żądaniu certyfikatu CMC przez dodanie ich do kolekcji TaggedAttribute. Każda struktura w kolekcji zawiera identyfikator liczby całkowitej, identyfikator obiektu ASN.1 (OID) i zestaw wartości. Możliwe wartości mogą być następujące.

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

Atrybuty CMCAddAttributes

Jeśli atrybuty w tej strukturze mają zastosowanie do zagnieżdżonego żądania PKCS #10, pole certReferences będzie zawierać BodyPartID identyfikujące żądanie. Jeśli atrybuty mają zastosowanie do zagnieżdżonego żądania CMC, pole pkiDataReference będzie zawierać BodyPartID żądania. Obecnie tylko jedno z tych pól może być niezerowe. Atrybuty, które można uwzględnić, są wymienione w temacie Obsługiwane atrybuty.

Rozszerzenia CmcAddExtensions

Ta struktura może zawierać rozszerzenia X.509 w wersji 3 oraz rozszerzenia zdefiniowane przez firmę Microsoft. Ten atrybut jest definiowany przy użyciu interfejsu IX509AttributeExtensions. Jeśli rozszerzenia mają zastosowanie do zagnieżdżonego żądania PKCS #10, pole certReferences będzie zawierać BodyPartID identyfikujące żądanie. Jeśli rozszerzenia mają zastosowanie do zagnieżdżonego żądania CMC, pole pkiDataReference będzie zawierać BodyPartID żądania. Obecnie tylko jedno z tych pól może być niezerowe.

SenderNonce

Nonce to losowe lub pseudolosowe dane binarne, które mogą być uwzględnione w żądaniu certyfikatu i transakcji odpowiedzi, aby zapewnić, że odpowiedź lub żądanie nie jest powtórzenie poprzedniego komunikatu. Aby uzyskać więcej informacji, zobacz właściwość SenderNonce.

TransactID

Żądanie certyfikatu i transakcja odpowiedzi w obie strony można śledzić przy użyciu identyfikatora. Klient generuje identyfikator transakcji i zachowuje go, dopóki certyfikat lub urząd rejestracji nie odpowie komunikatem, który zakończy transakcję. Odpowiedź zawiera identyfikator. Aby uzyskać więcej informacji, zobacz właściwość TransactionId.

Informacje o reginfo

Ten atrybut może służyć do przechowywania wszelkich informacji rejestracyjnych, które klient wybierze do umieszczenia w żądaniu CMC. Wartość atrybutu to ciąg zawierający połączone pary name-value. Aby uzyskać więcej informacji, zobacz właściwość NameValuePairs.

obsługiwane atrybuty