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.
Tematy pokrewne