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 接口继承自 IX509CertificateRequest。 IX509CertificateRequestPkcs7 也有以下类型的成员:
方法
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 |