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