InitializeFromPublicKeyTemplate 方法使用 IX509PublicKey 对象和模板初始化 null 签名的证书请求。
Syntax
HRESULT InitializeFromPublicKeyTemplate(
[in] X509CertificateEnrollmentContext Context,
[in] IX509PublicKey *pPublicKey,
[in] IX509EnrollmentPolicyServer *pPolicyServer,
[in] IX509CertificateTemplate *pTemplate
);
参数
[in] Context
X509CertificateEnrollmentContext 枚举值,该值指定所请求的证书是针对最终用户、计算机还是代表计算机的管理员。 这可以是以下值之一。
| 价值 | Meaning |
|---|---|
|
正在请求最终用户的证书。 |
|
正在为计算机请求证书。 |
|
代理计算机的管理员正在请求证书。 |
[in] pPublicKey
指向表示公钥的 IX509PublicKey 接口的指针。
[in] pPolicyServer
指向表示证书注册策略 (CEP) 服务器的 IX509EnrollmentPolicyServer 对象的指针,该服务器包含 pTemplate 参数指定的模板。
[in] pTemplate
指向表示初始化期间要使用的模板的 IX509CertificateTemplate 对象的指针。
返回值
如果函数成功,该函数将返回 S_OK。
如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括但不限于下表中的值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
| 返回代码/值 | Description |
|---|---|
|
pPublicKey、pPolicyServer 或 pTemplate 参数为 NULL。 |
|
证书请求对象已初始化。 |
注解
InitializeFromPublicKeyTemplate 方法执行以下作:
- 将模板中指定的扩展(如果有)添加到 IX509Extensions 集合。
- 创建 CriticalExtensions 集合,并使用默认XCN_OID_KEY_USAGE和XCN_OID_BASIC_CONSTRAINTS2对象标识符填充该集合。 如果模板指示这些 OID 不重要,则会从集合中删除它们。 将添加由模板标记为关键(如果有)的 OID。
- 如果模板支持对称算法,则设置 SmimeCapabilities 属性。
- 如果模板需要离散签名算法 OID,则设置 AlternateSignatureAlgorithm 属性。
- 创建 IX509SignatureInformation 对象。
- 如果在模板中指定了该算法并在 IX509SignatureInformation 对象上设置该算法,则创建哈希算法 OID。
- 如果在模板中指定了该算法并在 IX509SignatureInformation 对象上设置该算法,则创建非对称加密算法 OID。
如果未指定 CSPInformations 属性,该方法将从计算机上安装的提供程序创建 ICspInformations 集合。
该方法不创建私钥。 使用此方法意味着请求为 null 签名。 因此,该方法在 IX509SignatureInformation 对象上设置 NullSigned 属性。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 7 [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 R2 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | certenroll.h |