IX509CertificateRequestCertificate2::InitializeFromTemplate 方法 (certenroll.h)
InitializeFromTemplate 方法使用模板初始化证书请求。
语法
HRESULT InitializeFromTemplate(
[in] X509CertificateEnrollmentContext context,
[in] IX509EnrollmentPolicyServer *pPolicyServer,
[in] IX509CertificateTemplate *pTemplate
);
参数
[in] context
一个 X509CertificateEnrollmentContext 枚举值,该值指定请求的证书是面向最终用户、计算机还是代表计算机操作的管理员。 这可以是以下值之一。
值 | 含义 |
---|---|
|
正在为最终用户请求证书。 |
|
正在为计算机请求证书。 |
|
代表计算机的管理员正在请求证书。 |
[in] pPolicyServer
指向 IX509EnrollmentPolicyServer 对象的指针,该对象表示包含 pTemplate 参数指定的模板的 CEP) 服务器的证书注册 (策略。
[in] pTemplate
指向 IX509CertificateTemplate 对象的指针,该对象表示在初始化期间要使用的模板。
返回值
如果函数成功,该函数将返回 S_OK。
如果函数失败,它将返回一个 指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
返回代码 | 说明 |
---|---|
|
pTemplate 参数不能为 NULL。 |
|
已初始化证书请求对象。 |
注解
InitializeFromTemplate 方法创建以下集合:
- ICryptAttributes 集合。
- IX509Extensions 集合。
- 使用默认XCN_OID_KEY_USAGE和XCN_OID_BASIC_CONSTRAINTS2对象标识符填充的 IObjectIds 集合。
- 要从新请求中抑制的属性和扩展 OID 的空 IObjectIds 集合。
然后, 方法检查模板并执行以下操作:
- 将模板指定的扩展添加到 IX509Extensions 集合。
- 如果模板指示它们不是关键扩展,则从集合中删除默认关键扩展 (XCN_OID_KEY_USAGE 和XCN_OID_BASIC_CONSTRAINTS2) 。 添加模板标记为关键型的 OID。
- 如果模板支持对称算法,则设置 SmimeCapabilities 属性。
- 如果模板需要离散签名算法 OID,则设置 AlternateSignatureAlgorithm 属性。
- 创建 IX509SignatureInformation 对象。
- 如果在模板中指定了算法并在 IX509SignatureInformation 对象上设置该算法,则创建哈希算法 OID。
- 如果在模板中指定了算法并在 IX509SignatureInformation 对象上设置该算法,则创建非对称加密算法 OID。
- 从模板设置填充许多 IX509PrivateKey 属性。
如果 CSPInformations 属性为 NULL,则 该方法将从计算机上安装的提供程序创建 ICspInformations 集合。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | certenroll.h |