Атрибуты 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.
Связанные разделы