IX509Enrollment::InstallResponse 方法 (certenroll.h)

InstallResponse 方法在最终实体计算机上安装证书链。 使用抽象语法表示法 One (ASN.1) 标准定义的 可辨别编码规则 (DER) 对包含响应的字节数组进行编码。 必须在纯二进制序列或 Unicode 编码的字符串中指定 DER 编码的字节数组。 此方法已启用 Web。

语法

HRESULT InstallResponse(
  [in]           InstallResponseRestrictionFlags Restrictions,
  [in]           BSTR                            strResponse,
  [in]           EncodingType                    Encoding,
  [in, optional] BSTR                            strPassword
);

参数

[in] Restrictions

InstallResponseRestrictionFlags 枚举值,该值指定可安装的证书的类型。 这可以是以下一个或多个值。

Value 含义
AllowNone
不要安装不受信任的证书或没有相应请求的证书。
AllowNoOutstandingRequest
从证书响应而不是从虚拟证书创建 私钥 。 这使得虚拟证书可选。 如果未设置此值,则虚拟证书必须存在,并从中提取私钥。
AllowUntrustedCertificate
安装不受信任的最终实体和 证书颁发机构 证书。 证书颁发机构证书包括根证书和从属 CA 证书。 最终实体证书将安装到个人存储,CA 证书安装到证书颁发机构存储。
AllowUntrustedRoot
执行与 AllowUntrustedCertificate 标志相同的操作,但即使由于根不受信任而无法生成证书链,也会安装证书。
注意 在 Windows Vista 上,此标志的行为与为 AllowUntrustedCertificate 标志定义的行为相同。 从 Windows Vista SP1 开始,可以安装链接到不受信任的根的证书。
 

[in] strResponse

包含 DER 编码响应的 BSTR 变量。

[in] Encoding

一个 EncodingType 枚举值,该值指定应用于包含 DER 编码响应的字符串的编码类型。

[in, optional] strPassword

证书安装的可选密码。 这可以是 NULL 或空字符串,以指示不使用密码。 如果有密码,请在使用完密码后通过调用 SecureZeroMemory 函数将其从内存中清除。 有关保护密码的详细信息,请参阅 处理密码

从 Windows 8 和 Windows Server 2012 开始,NULL 或空密码可能意味着 PFX 数据包是使用 PKCS12_PROTECT_TO_DOMAIN_SIDS 标志在 PFXExportCertStoreEx 函数中创建的。 如果是,则 PFX 已加密到 Active Directory 组。 有关详细信息,请参阅 PFXExportCertStoreExPFXImportCertStore

返回值

如果函数成功,该函数将返回 S_OK

如果函数失败,它将返回指示错误的 HRESULT 值。 可能的值包括(但并不限于)下表中的项。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

返回代码 说明
E_ACCESSDENIED
此方法是从 Web 调用的,在 Restrictions 参数中指定了 AllowNoOutstandingRequestAllowUntrustedCertificate
HRESULT_FROM_WIN32 (ERROR_ARITHMETIC_OVERFLOW
包含密码的字符串长度超过 64 KB。
OLE_E_BLANK
注册对象尚未初始化。

注解

InstallResponse 方法:

  1. 从外部存储中检索虚拟证书。
  2. 检索响应中包含的证书并将其安装在计算机上。
  3. 将外部存储中的虚拟证书中的属性复制到个人存储中新安装的证书上。

在调用 InstallResponse 方法之前,必须通过调用以下方法之一来初始化 IX509Enrollment 对象。

如果从 Web 调用此方法,则只能在 Restrictions 参数中指定 AllowNoneAllowUntrustedRoot。 如果指定 AllowNoOutstandingRequestAllowUntrustedCertificate,该方法将返回 E_ACCESSDENIED 错误。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 certenroll.h
DLL CertEnroll.dll

另请参阅

IX509Enrollment