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 #7 訊息中包裝 PKCS #10 要求的主要優點是能夠新增多個簽署者。 PKCS #10 要求是由相關聯的私鑰簽署,而包裝 PKCS #10 要求的 PKCS #10 訊息也會簽署。 第二個簽署者會針對更新要求使用更新要求 () 或註冊代理程序憑證 (進行更新的憑證,以代表要求) 。
  • 您可以建立及註冊獨立 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

譯碼現有的已簽署或未簽署 PKCS (IX509CertificateRequestPkcs7.InitializeDecode)
IX509CertificateRequestPkcs7::InitializeFromCertificate

使用現有的憑證,初始化憑證要求。 (IX509CertificateRequestPkcs7.InitializeFromCertificate)
IX509CertificateRequestPkcs7::InitializeFromInnerRequest

從內部 PKCS 初始化憑證要求
IX509CertificateRequestPkcs7::InitializeFromTemplateName

使用範本初始化憑證要求。 (IX509CertificateRequestPkcs7.InitializeFromTemplateName)
IX509CertificateRequestPkcs7::p ut_RequesterName

指定或擷取包含安全性帳戶管理員 (SAM) 要求憑證之結束實體名稱的字串。 (Put)
IX509CertificateRequestPkcs7::p ut_SignerCertificate

指定或擷取用來簽署憑證要求的憑證。 (Put)

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 certenroll.h

另請參閱

CertEnroll 介面

IX509CertificateRequest