Атрибуты CMC

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

Структура CMCData

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

Атрибуты включаются в запрос сертификата 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

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

TransactID

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

RegInfo

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

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