IX509CertificateRequestPkcs7 接口 (certenroll.h)

IX509CertificateRequestPkcs7 接口表示 PKCS #7 证书消息语法 (CMS) 对象。 PKCS #7 定义发送到证书颁发机构或注册机构以请求公钥证书的消息的格式。 IX509CertificateRequestPkcs7 接口可能会造成混淆,因为它的实现并不完全镜像大多数安全专业人员对 PKCS #7 标准的看法。 为了避免这种混淆,请记住以下几点:

  • 尽管 PKCS #7 消息用于包装 CMC 请求, 但 IX509CertificateRequestPkcs7 对象不能包含 IX509CertificateRequestCmc 对象。 相反,IX509CertificateRequestCmc 接口继承并实现 IX509CertificateRequestPkcs7 接口。 因此,CMC 请求是 PKCS #7 SignedData 对象,其中包含 CMC 内容、主签名(null 签名或基于密钥)以及零个或多个基于证书的签名。 相比之下,PKCS #7 请求是一个包含 PKCS #10 内容的 SignedData 对象, (看到此列表中的下一项) ,并且只有一个基于证书的签名。
  • IX509CertificateRequestPkcs7 必须包含 IX509CertificateRequestPkcs10 对象。 将 PKCS #10 请求包装在 PKCS #7 消息中的main优势是能够添加多个签名者。 PKCS #10 请求由关联的私钥签名,包装 PKCS #10 请求的 PKCS #7 消息也已签名。 第二个签名者将续订 (证书用于续订请求) 或注册代理证书 (代表注册请求) 。
  • 可以创建和注册独立的 IX509CertificateRequestPkcs10 证书请求,而无需将其包装在 IX509CertificateRequestPkcs7 对象中。

以下语法示例中 PKCS #7 对象的 ASN.1 表示形式表明,它可以由各种数据类型组成。


PKCS7ContentTable PKCS7-CONTENT-TYPE ::=
{
    data | signed-data | enveloped-data | signed-and-enveloped-data |
    digested-data | encrypted-data | authenticated-data, ...
}

其中,下面显示的 SignedData 对象最相关。 SignedData 对象中引用的 SignerInfo 对象包含签名信息。 有关更完整的讨论,请参阅 PKCS #7 属性


-------------------------------------------------------------------
-- signed-data
-------------------------------------------------------------------

SignedData ::= SEQUENCE 
{
  version           INTEGER,
  digestAlgorithms  DigestAlgorithmIdentifiers,
  contentInfo       ContentInfo,
  certificates      [0] IMPLICIT Certificates OPTIONAL,
  crls              [1] IMPLICIT CertificateRevocationLists OPTIONAL,
  signerInfos       SignerInfos
}

SignerInfo ::= SEQUENCE 
{
  version                     INTEGER,
  sid                         CertIdentifier,
  digestAlgorithm             DigestAlgorithmIdentifier,
  authenticatedAttributes     [0] IMPLICIT Attributes OPTIONAL,
  signatureAlgorithm          SignatureAlgorithmIdentifier,
  signature                   SignatureValue,
  unauthenticatedAttributes   [1] IMPLICIT Attributes
}
 

继承

IX509CertificateRequestPkcs7 接口继承自 IX509CertificateRequestIX509CertificateRequestPkcs7 也有以下类型的成员:

方法

IX509CertificateRequestPkcs7 接口具有这些方法。

 
IX509CertificateRequestPkcs7::get_RequesterName

指定或检索一个字符串,其中包含安全帐户管理器 (SAM) 请求证书的最终实体的名称。 (获取)
IX509CertificateRequestPkcs7::get_SignerCertificate

指定或检索用于对证书请求进行签名的证书。 (获取)
IX509CertificateRequestPkcs7::InitializeDecode

(IX509CertificateRequestPkcs7.InitializeDecode (解码现有已签名或未签名) 的 PKCS
IX509CertificateRequestPkcs7::InitializeFromCertificate

使用现有证书初始化证书请求。 (IX509CertificateRequestPkcs7.InitializeFromCertificate)
IX509CertificateRequestPkcs7::InitializeFromInnerRequest

初始化来自内部 PKCS 的证书请求
IX509CertificateRequestPkcs7::InitializeFromTemplateName

使用模板初始化证书请求。 (IX509CertificateRequestPkcs7.InitializeFromTemplateName)
IX509CertificateRequestPkcs7::p ut_RequesterName

指定或检索一个字符串,其中包含安全帐户管理器 (SAM) 请求证书的最终实体的名称。 (放置)
IX509CertificateRequestPkcs7::p ut_SignerCertificate

指定或检索用于对证书请求进行签名的证书。 (放置)

要求

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

另请参阅

CertEnroll 接口

IX509CertificateRequest