CMC 属性

实际上,CMC 请求的结构(如以下语法所示)相对复杂,因为它通常包含嵌套请求。 例如,CMC 请求可以在 TaggedRequest 序列中包含零个或一个 PKCS #10 请求,并且可以在 TaggedContentInfo 序列中包含零条或一条 PKCS #7 消息。 每个嵌套的 PKCS #7 消息可以包含一个 CMC 请求,后者又可以包含更多请求。 嵌套级别的数量理论上是无限制的,但证书颁发机构 (CA) 通常配置为限制请求的大小。 属性可以应用于顶级请求或嵌套请求。 以下部分对此进行了讨论。

CMCData 结构

CMC 请求包含 TagedAttributeTagedRequestTagedContentInfo 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

TagedAttribute 结构

通过将属性添加到 TaggedAttribute 集合,将属性包含在 CMC 证书请求中。 集合中的每个结构都包含一个整数 ID、一个 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 扩展以及 Microsoft 定义的扩展。 此属性是使用 IX509AttributeExtensions 接口定义的。 如果扩展适用于嵌套 PKCS #10 请求,则 certReferences 字段将包含用于标识请求的 BodyPartID 。 如果扩展适用于嵌套 CMC 请求, 则 pkiDataReference 字段将包含请求的 BodyPartID 。 目前,这些字段中只能有一个为非零字段。

SenderNonce

nonce 是随机或伪随机二进制数据,可以包含在证书请求和响应事务中,以帮助确保响应或请求不会重复上一条消息。 有关详细信息,请参阅 SenderNonce 属性。

TransactID

可以使用标识符跟踪往返证书请求和响应事务。 客户端生成事务 ID 并保留该 ID,直到证书或注册机构使用完成事务的消息做出响应。 响应包括 标识符。 有关详细信息,请参阅 TransactionId 属性。

RegInfo

此属性可用于包含客户端选择放入 CMC 请求的任何注册信息。 属性值是包含串联的名称-值对的字符串。 有关详细信息,请参阅 NameValuePairs 属性。

支持的属性