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