CMC 扩展
通过将扩展添加到以下 ASN.1 语法示例中所示 的 TaggedAttributes 结构,将扩展包含在 CMC 请求中。 有关详细信息,请参阅 属性 主题。
CmcData ::= SEQUENCE
{
controlSequence ControlSequence,
reqSequence ReqSequence,
cmsSequence CmsSequence,
otherMsgSequence OtherMsgSequence
}
ControlSequence ::= SEQUENCE OF TaggedAttribute
TaggedAttribute ::= SEQUENCE
{
bodyPartID BodyPartID,
type EncodedObjectID,
values AttributeSetValue
}
BodyPartID ::= INTEGER (0..4294967295)
EncodedObjectID ::= OBJECT IDENTIFIER
AttributeSetValue ::= SET OF ANY
TaggedAttributes 集合中的每个结构都包含一个整数 ID、一个 ASN.1 对象标识符 (OID) ,以及一组值。 通过将 CmcAddExtensions 结构添加到 值 字段,将扩展合并到请求中。 以下示例中显示了 ASN.1 结构语法。 对象标识符 XCN_OID_CMC_ADD_EXTENSIONS (1.3.6.1.5.5.7.7.8) 。
CmcAddExtensions ::= SEQUENCE
{
pkiDataReference BodyPartID,
certReferences BodyPartIDSequence,
extensions Extensions
}
Extensions ::= SEQUENCE OF Extension
Extension ::= SEQUENCE
{
extnId EncodedObjectID,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTETSTRING
}
以下过程讨论如何使用证书注册 API 向 CMC 证书请求添加扩展。
使用证书注册 API 向 CMC 证书请求添加扩展
- 使用派生自 IX509Extension 接口的任何可用接口创建扩展,或者直接使用 IX509Extension 对象创建自定义扩展。
- 调用 IX509CertificateRequestCmc 对象上的 X509Extensions 属性以检索 IX509Extensions 集合。
- 将步骤 1 中创建的扩展添加到 IX509Extensions 集合。
- 调用 “注册” 以自动执行以下操作:
- 从 IX509CertificateRequestCmc 对象检索 ICryptAttributes 对象。
- 使用步骤 2 中检索到的 IX509Extensions 集合创建和初始化 IX509AttributeExtensions 对象。
- 创建 IX509Attributes 集合,并向其添加 IX509AttributeExtensions 对象。
- 使用 IX509Attributes 集合初始化 ICryptAttribute 对象。
- 将 ICryptAttribute 对象添加到 ICryptAttributes 集合。
相关主题