Поделиться через


Атрибуты 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.

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