CMC 属性
实际上,CMC 请求的结构(由以下语法显示)相对复杂,因为它通常包含嵌套请求。 例如,CMC 请求可以在 TaggedRequest 序列中包含零个或一个 PKCS #10 请求,并且它可以在 TaggedContentInfo 序列中包含零条或一条 PKCS #7 消息。 每个嵌套 PKCS #7 消息可以包含 CMC 请求,而 CMC 请求又可以包含更多请求。 嵌套级别的数量理论上不受限制,但证书颁发机构(CA)通常配置为限制请求的大小。 属性可以应用于顶级请求或嵌套请求。 以下各节对此进行了讨论。
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 结构
通过将属性添加到 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 属性。
相关主题