IX509CertificateRequest::Encode 方法(certenroll.h)

编码 方法对证书请求进行签名和编码,并创建一个密钥对(如果不存在)。 请求使用 可分辨编码规则(DER)进行编码,该规则由 抽象语法表示法一(ASN.1)标准定义。 编码过程将创建字节数组。 可以通过调用 RawData 属性来检索字节数组。

语法

HRESULT Encode();

返回值

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

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

返回代码/值 描述
CERTSRV_E_ARCHIVED_KEY_REQUIRED
ArchivePrivateKey 属性已设置为 CMC 请求,但找不到密钥交换证书。
OLE_E_BLANK
对象未初始化。

言论

对于 PKCS #10 请求,此方法:

  • 更新私钥,或在必要时创建密钥。
  • 从私钥填充公钥。
  • 更新扩展,添加任何默认扩展,并考虑禁止的 OID 集合和关键扩展 OID 集合。
  • 更新属性,添加默认属性并考虑已禁止的 OID 集合。
  • 程序集并编码未签名的更新请求。
  • 创建和编码签名。
  • 对签名和未签名的请求进行编码。

对于 CMC 请求,此方法:

  • 对所有内部请求对象进行编码。
  • 更新外部请求对象的扩展,添加任何默认扩展,并考虑到已禁止的 OID 集合和关键扩展 OID 集合。
  • 更新外部请求对象的属性,添加默认属性并考虑禁止的 OID 集合。
  • 更新名称值对集合。
  • 对由编码的内部请求和更新的外部请求组成的 CMC 内容进行编码。
  • 为每个签名证书创建和编码签名。
  • 创建和编码主签名。
  • 组装编码的 CMC 内容(包括内部请求和更新的外部请求)和编码的签名。
  • 将汇编的内容编码为 PKCS #7 消息。

要求

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

另请参阅

IX509CertificateRequest

IX509CertificateRequestCertificate

IX509CertificateRequestCmc

IX509CertificateRequestPkcs10

IX509CertificateRequestPkcs7

IX509SignatureInformation