ICertServerPolicy::GetCertificateExtensionFlags-Methode (certif.h)

Die GetCertificateExtensionFlags-Methode ruft die Flags ab, die der Erweiterung zugeordnet sind, die durch den letzten Aufruf von GetCertificateExtension abgerufen wurden.

Syntax

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Parameter

[out] pExtFlags

Ein Zeiger auf eine LONG-Variable , die die Erweiterungsflags enthält.

Rückgabewert

C++

Wenn die Methode erfolgreich ist, gibt die Methode S_OK zurück, und der pExtFlags-Parameter enthält die Flags der Erweiterung, die durch den letzten Aufruf von GetCertificateExtension abgerufen wurden.

Wenn die Methode fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt. Eine Liste allgemeiner Fehlercodes finden Sie unter Allgemeine HRESULT-Werte.

VB

Der Rückgabewert ist die Flags der Erweiterung, die durch den letzten Aufruf von GetCertificateExtension abgerufen wurden.

Hinweise

Die Methoden SetContext und GetCertificateExtension müssen vor GetCertificateExtensionFlags aufgerufen werden. Die SetContext-Methode gibt an, welche Anforderung als aktueller Kontext verwendet wird, und die GetCertificateExtension-Methode ruft die Erweiterungen für die Anforderung ab.

Erweiterungen können Richtlinien- und Ursprungsflags enthalten. Richtlinienflags enthalten Informationen zur Zertifikaterweiterung. Richtlinienflags können vom Richtlinienmodul festgelegt werden. Ursprungsflags geben das Modul an, das die Zertifikaterweiterung festgelegt hat. Ursprungsflags werden nur von der Server-Engine festgelegt.

Ein oder mehrere Richtlinienflags können von einer Erweiterung zurückgegeben werden. Im Folgenden sind vordefinierte Richtlinienflags aufgeführt.

Richtlinienflagwert Erklärung
EXTENSION_CRITICAL_FLAG Dies ist eine wichtige Erweiterung.
EXTENSION_DISABLE_FLAG Die Erweiterung wird nicht verwendet.
 

Eines der folgenden Ursprungsflags kann auch zurückgegeben werden.

Ursprungsflagwert Erklärung
EXTENSION_ORIGIN_REQUEST Die Erweiterung wurde aus einem Array von Erweiterungen extrahiert, die im szOID_CERT_EXTENSIONS-Attribut (1.3.6.1.4.1.311.2.1.14) oder szOID_RSA_certExtensions (1.2.840.113549.1.1.9.14) einer PKCS #10-Anforderung gespeichert sind.
EXTENSION_ORIGIN_POLICY Das Richtlinienmodul legt die Erweiterung fest.
EXTENSION_ORIGIN_ADMIN Der Administrator hat die Erweiterung festgelegt. Weitere Informationen finden Sie unter ICertAdmin::SetCertificateExtension.
EXTENSION_ORIGIN_SERVER Die Server-Engine legt die Erweiterung fest.
EXTENSION_ORIGIN_RENEWALCERT Die Erweiterung wurde aus dem Zertifikat extrahiert, das im szOID_RENEWAL_CERTIFICATE-Attribut (1.3.6.1.4.1.311.13.1) einer PKCS #10-Verlängerungsanforderung gespeichert ist.
EXTENSION_ORIGIN_IMPORTEDCERT Die Erweiterung wurde aus einem importierten Zertifikat extrahiert (das Zertifikat wurde an ICertAdmin::ImportCertificate übergeben).
EXTENSION_ORIGIN_PKCS7 Die Erweiterung wurde aus einem Array von Erweiterungen extrahiert, die im Attribut szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) oder szOID_RSA_certExtensions (1.2.840.113549.1.9.14) einer PKCS #7-Anforderung gespeichert sind.
 

Vordefinierte Masken werden zur einfacheren Verwendung bereitgestellt, um zu bestimmen, welche Flags im Rückgabewert festgelegt werden. Die folgenden Masken werden bereitgestellt.

Maskierungswert Erklärung
EXTENSION_POLICY_MASK Dieser Wert (0x0000FFFF) wird verwendet, um Richtlinienflags zu untersuchen.
EXTENSION_ORIGIN_MASK Dieser Wert (0x000F0000) wird verwendet, um Ursprungsflags zu untersuchen.
 

Es ist sicher, die hohen 8 Bit EXTENSION_POLICY_MASK für benutzerdefinierte Daten zu verwenden. Diese Bits werden dauerhaft in der Datenbank gespeichert, aber nicht in die Zertifikaterweiterungen geschrieben.

Beispiele

HRESULT  hr;
LONG     ExtFlags;
// pCertServerPolicy has been used to call SetContext previously.
hr = pCertServerPolicy->GetCertificateExtensionFlags( &ExtFlags);

// More than one policy flag might be set.
LONG ExtPolicyFlags = ExtFlags & EXTENSION_POLICY_MASK;

if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
    // Do something.
}

if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
    // Do something.
}

// only one origin flag can be set
switch (ExtFlags & EXTENSION_ORIGIN_MASK)
{
    case EXTENSION_ORIGIN_REQUEST:
        // Extension was set in certificate request.
        break;
    case EXTENSION_ORIGIN_POLICY:
        // Extension was set by policy module.
        break;
    case EXTENSION_ORIGIN_ADMIN:
        // Extension was set by administrator.
        break;
    case EXTENSION_ORIGIN_SERVER:
        // Extension was set by server engine.
        break;
    default:
        break;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Nicht unterstützt
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile certif.h (include Certsrv.h)
Bibliothek Certidl.lib
DLL Certcli.dll

Weitere Informationen

ICertAdmin::SetCertificateExtension

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags