IX509CertificateRequestPkcs7-Schnittstelle (certenroll.h)

Die IX509CertificateRequestPkcs7-Schnittstelle stellt ein PKCS #7-CMS-Objekt (Certificate Message Syntax) dar. PKCS #7 definiert das Format von Nachrichten, die an eine Zertifizierungs- oder Registrierungsstelle gesendet werden, um ein Zertifikat mit öffentlichem Schlüssel anzufordern. Die IX509CertificateRequestPkcs7-Schnittstelle kann verwirrend sein, da ihre Implementierung nicht perfekt Spiegel die Art und Weise, wie die meisten Sicherheitsexperten über den PKCS #7-Standard denken. Um diese Verwirrung zu vermeiden, beachten Sie die folgenden Punkte:

  • Obwohl eine PKCS #7-Nachricht zum Umschließen einer CMC-Anforderung verwendet wird, kann ein IX509CertificateRequestPkcs7-Objekt kein IX509CertificateRequestCmc-Objekt enthalten. Stattdessen erbt und implementiert die IX509CertificateRequestCmc-Schnittstelle die IX509CertificateRequestPkcs7-Schnittstelle . Wie implementiert, ist eine CMC-Anforderung daher ein PKCS #7 SignedData-Objekt , das CMC-Inhalt enthält, eine primäre Signatur, die entweder nullsigniert oder schlüsselbasiert ist, und null oder mehr zertifikatbasierte Signaturen. Im Gegensatz dazu ist eine PKCS #7-Anforderung ein SignedData-Objekt , das PKCS #10-Inhalt enthält (siehe das nächste Element in dieser Liste) und genau eine zertifikatbasierte Signatur aufweist.
  • Ein IX509CertificateRequestPkcs7 muss ein IX509CertificateRequestPkcs10-Objekt enthalten. Der Standard Vorteil des Umschließens einer PKCS #10-Anforderung in eine PKCS #7-Nachricht ist die Möglichkeit, mehrere Signierer hinzuzufügen. Die PKCS #10-Anforderung wird vom zugeordneten privaten Schlüssel signiert, und die PKCS #7-Nachricht, die die PKCS #10-Anforderung umschließt, ist ebenfalls signiert. Dieser zweite Signierer verwendet das Zertifikat, das erneuert wird (für eine Verlängerungsanforderung) oder das Registrierungs-Agent-Zertifikat (für eine Registrierungs-im-Auftrag-von-Anforderung).
  • Sie können eine eigenständige IX509CertificateRequestPkcs10-Zertifikatanforderung erstellen und registrieren, ohne sie in ein IX509CertificateRequestPkcs7-Objekt umschließen zu müssen.

Die ASN.1-Darstellung eines PKCS #7-Objekts im folgenden Syntaxbeispiel zeigt, dass es aus einer Vielzahl von Datentypen bestehen kann.


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

Von diesen ist das unten gezeigte SignedData-Objekt am relevantesten. Das SignerInfo-Objekt , auf das im SignedData-Objekt verwiesen wird, enthält die Signaturinformationen. Eine ausführlichere Diskussion finden Sie unter PKCS #7 Attribute.


-------------------------------------------------------------------
-- 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
}
 

Vererbung

Die IX509CertificateRequestPkcs7-Schnittstelle erbt von IX509CertificateRequest. IX509CertificateRequestPkcs7 verfügt auch über folgende Membertypen:

Methoden

Die IX509CertificateRequestPkcs7-Schnittstelle verfügt über diese Methoden.

 
IX509CertificateRequestPkcs7::get_RequesterName

Gibt eine Zeichenfolge an, die den SAM-Namen (Security Account Manager) der Endentität enthält, die das Zertifikat anfordert, oder ruft sie ab. (Abrufen)
IX509CertificateRequestPkcs7::get_SignerCertificate

Gibt ein Zertifikat an, das zum Signieren der Zertifikatanforderung verwendet wird, oder ruft es ab. (Abrufen)
IX509CertificateRequestPkcs7::InitializeDecode

Decodiert eine vorhandene signierte oder nicht signierte PKCS (IX509CertificateRequestPkcs7.InitializeDecode)
IX509CertificateRequestPkcs7::InitializeFromCertificate

Initialisiert die Zertifikatanforderung mithilfe eines vorhandenen Zertifikats. (IX509CertificateRequestPkcs7.InitializeFromCertificate)
IX509CertificateRequestPkcs7::InitializeFromInnerRequest

Initialisiert die Zertifikatanforderung aus dem inneren PKCS.
IX509CertificateRequestPkcs7::InitializeFromTemplateName

Initialisiert die Zertifikatanforderung mithilfe einer Vorlage. (IX509CertificateRequestPkcs7.InitializeFromTemplateName)
IX509CertificateRequestPkcs7::p ut_RequesterName

Gibt eine Zeichenfolge an, die den SAM-Namen (Security Account Manager) der Endentität enthält, die das Zertifikat anfordert, oder ruft sie ab. (Put)
IX509CertificateRequestPkcs7::p ut_SignerCertificate

Gibt ein Zertifikat an, das zum Signieren der Zertifikatanforderung verwendet wird, oder ruft es ab. (Put)

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile certenroll.h

Weitere Informationen

CertEnroll-Schnittstellen

IX509CertificateRequest