Атрибуты CMC

На практике структура запроса CMC, показанная следующим синтаксисом, является относительно сложной, так как часто содержит вложенные запросы. Например, запрос CMC может содержать ноль или один запрос PKCS #10 в последовательности TaggedRequest, и он может содержать ноль или одно сообщение PKCS #7 в последовательности TaggedContentInfo. Каждое вложенное сообщение PKCS #7 может содержать запрос CMC, который, в свою очередь, может содержать дополнительные запросы. Число уровней вложения теоретически неограниченно, но центр сертификации (ЦС) обычно настраивается для ограничения размера запроса. Атрибуты можно применять к запросу верхнего уровня или к вложенным запросам. Это рассматривается в следующих разделах.

Структура CMCData

Запрос CMC содержит последовательности TaggedAttribute, TaggedRequestи структуры 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

Атрибуты включаются в запрос на сертификат CMC, добавив их в коллекцию TaggedAttribute. Каждая структура в коллекции содержит целочисленный идентификатор, идентификатор объекта ASN.1 (OID) и набор значений. Возможные значения могут быть любым из следующих значений.

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

Если атрибуты в этой структуре применяются к вложенным запросу PKCS #10, поле certReferences будет содержать BodyPartID, определяющий запрос. Если атрибуты применяются к вложенным запросам CMC, поле pkiDataReference будет содержать BodyPartID запроса. В настоящее время только одно из этих полей может быть ненулевое. Атрибуты, которые можно включить, перечислены в разделе Поддерживаемые атрибуты.

CmcAddExtensions

Эта структура может содержать расширения X.509 версии 3 и расширения, определенные корпорацией Майкрософт. Этот атрибут определяется с помощью интерфейса IX509AttributeExtensions. Если расширения применяются к вложенной запросу PKCS #10, поле certReferences будет содержать BodyPartID, определяющий запрос. Если расширения применяются к вложенным запросам CMC, поле pkiDataReference будет содержать BodyPartID запроса. В настоящее время только одно из этих полей может быть ненулевое.

SenderNonce

Нецелевое значение — это случайные или псевдослучайные двоичные данные, которые могут быть включены в запрос сертификата и транзакцию ответа, чтобы гарантировать, что ответ или запрос не является повтором предыдущего сообщения. Дополнительные сведения см. в свойстве SenderNonce.

TransactID

Запрос и транзакция ответа на обратный путь можно отслеживать с помощью идентификатора. Клиент создает идентификатор транзакции и сохраняет его до тех пор, пока сертификат или центр регистрации не ответит с сообщением, которое завершает транзакцию. Ответ содержит идентификатор. Дополнительные сведения см. в свойстве TransactionId.

RegInfo

Этот атрибут можно использовать для хранения любых сведений о регистрации, которые клиент выбирает для отправки в запрос CMC. Значение атрибута — это строка, содержащая пары "сцепленное имя-значение". Дополнительные сведения см. в свойстве NameValuePairs.

поддерживаемые атрибуты