IX509CertificateRequestPkcs10::InitializeFromCertificate-Methode (certenroll.h)
Die InitializeFromCertificate-Methode initialisiert die Zertifikatanforderung mithilfe eines vorhandenen Zertifikats. Das Zertifikat ist in einem Bytearray enthalten, das mit Distinguished Encoding Rules (DER) codiert wird, wie im Asn.1-Standard (Abstract Syntax Notation One) definiert. Das DER-codierte Bytearray wird durch eine Zeichenfolge dargestellt, die entweder eine reine binäre Sequenz oder Unicode-codiert ist.
Syntax
HRESULT InitializeFromCertificate(
[in] X509CertificateEnrollmentContext Context,
[in] BSTR strCertificate,
[in] EncodingType Encoding,
[in] X509RequestInheritOptions InheritOptions
);
Parameter
[in] Context
Ein X509CertificateEnrollmentContext-Enumerationswert , der angibt, ob das angeforderte Zertifikat für einen Endbenutzer, einen Computer oder einen Administrator bestimmt ist, der im Namen des Computers handelt.
[in] strCertificate
Eine BSTR-Variable , die das DER-codierte Zertifikat enthält.
Ab Windows 7 und Windows Server 2008 R2 können Sie anstelle eines codierten Zertifikats einen Zertifikatfingerabdruck oder eine Seriennummer angeben. Dies bewirkt, dass die Funktion die entsprechenden lokalen Speicher nach dem übereinstimmenden Zertifikat durchsucht. Berücksichtigen Sie dabei Folgendes:
- Der BSTR muss eine gerade Anzahl von Hexadezimalstellen sein.
- Leerzeichen zwischen hexadezimalen Paaren werden ignoriert.
- Der Encoding-Parameter muss auf XCN_CRYPT_STRING_HEXRAW festgelegt werden.
- Der Context-Parameter bestimmt, ob der Benutzer oder der Computer speichert oder beides durchsucht wird.
- Wenn ein privater Schlüssel benötigt wird, werden nur die persönlichen Speicher und die Anforderungsspeicher durchsucht.
- Wenn kein privater Schlüssel benötigt wird, werden auch die Stamm- und Zwischenspeicher der Zertifizierungsstelle durchsucht.
[in] Encoding
Ein EncodingType-Enumerationswert , der den Typ der Unicode-Codierung angibt, die auf das DER-codierte Zertifikat angewendet wird. Der Standardwert ist XCN_CRYPT_STRING_BASE64.
[in] InheritOptions
Ein X509RequestInheritOptions-Enumerationswert , der angibt, wie das Zertifikatanforderungsobjekt aus dem vorhandenen Zertifikat erstellt wird. Sie können angeben, wie ein Schlüssel geerbt werden soll, indem Sie einen der folgenden Werte auswählen. Der Standardwert ist InheritDefault.
Sie können auch einen bitweisen OR-Vorgang verwenden, um den Schlüsselvererbungswert mit einer beliebigen Kombination der folgenden Werte zu kombinieren.
Wert | Bedeutung |
---|---|
|
Erbt das Erneuerungszertifikat. Wenn Sie dieses Flag angeben, wird die RenewalCertificate-Eigenschaft festgelegt. |
|
Erbt die Zertifikatvorlage. |
|
Erbt den Distinguished Name des Antragstellers. |
|
Erbt die relevanten Erweiterungen vom Zertifikat. |
|
Erbt die SubjectAlternativeName-Erweiterung . |
|
Erbt den Gültigkeitszeitraum. |
Sie können auch InheritNone angeben, um zu verhindern, dass jedes der Flags in der vorherigen Tabelle (Flags, die sich nicht auf die Schlüsselvererbung beziehen) standardmäßig implementiert wird. Wenn Sie InheritNone angeben, aber auch ein Flag angeben, das sich nicht auf die Schlüsselvererbung bezieht, gibt die Methode E_INVALIDARG zurück.
Wenn Sie den InheritOptions-Parameter auf Null (0) festlegen oder InheritDefault angeben und keinen Schlüsselvererbungswert angeben, wird Standardmäßig InheritNewSimilarKey verwendet.
Wenn Sie den InheritOptions-Parameter auf Null (0) festlegen oder InheritDefault angeben und keinen der Werte angeben, die sich nicht auf die Schlüsselvererbung beziehen, werden die folgenden Flags standardmäßig festgelegt:
- InheritSubjectFlag
- InheritExtensionsFlag
- InheritValidityPeriodFlag
- InheritTemplateFlag (wenn das Zertifikat eine Vorlagenerweiterung enthält)
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion S_OK zurück.
Wenn die Funktion fehlschlägt, wird ein HRESULT-Wert zurückgegeben, der den Fehler angibt. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.
Rückgabecode | Beschreibung |
---|---|
|
Das Zertifikatanforderungsobjekt wurde bereits initialisiert. |
Hinweise
Die InitializeFromCertificate-Methode überprüft die im InheritOptions-Parameter angegebenen Optionen und initialisiert ein neues PKCS #10-Anforderungsobjekt, indem die folgenden Aktionen ausgeführt werden:
- Kopiert das Erneuerungszertifikat, sofern vorhanden und Sie InheritRenewalCertificateFlag angegeben haben, aus dem Eingabezertifikat in die neue Anforderung.
- Kopiert die Vorlage, wenn eine im vorhandenen Zertifikat angegeben ist, und Sie legen den InheritTemplateFlag-Wert fest.
- Kopiert den distinguished name des Antragstellers in die neue Anforderung, wenn Sie InheritSubjectFlag angeben.
- Kopiert den alternativen Antragstellernamen in die neue Anforderung, wenn Sie InheritSubjectAltNameFlag angeben.
- Kopiert die Erweiterungen in die neue Anforderung, wenn Sie InheritExtensionsFlag angeben.
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 |
DLL | CertEnroll.dll |