Share via


ICertServerExit::GetCertificateExtensionFlags-Methode (certif.h)

Die GetCertificateExtensionFlags-Methode ruft die Flags der Erweiterung ab, die durch den letzten Aufruf von ICertServerExit::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 *pExtFlags ist auf die Variable festgelegt, die die Flags der Erweiterung enthält, die durch den letzten Aufruf von ICertServerExit::GetCertificateExtension abgerufen wurde.

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 ICertServerExit::GetCertificateExtension abgerufen wurden.

Hinweise

Es gibt zwei Arten von Flags, die in Erweiterungen verwendet werden: Richtlinienflags und Ursprungsflags.

Flagtyp Erklärung
Policy Stellt Informationen zur Zertifikaterweiterung bereit. Richtlinienflags können vom Richtlinienmodul festgelegt werden.
Origin Gibt 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.

Sie müssen ICertServerExit::SetContext aufrufen, bevor Sie diese Methode verwenden.

Beispiele

HRESULT  hr;
LONG     ExtFlags;

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

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

if (ExtPolicyFlags & EXTENSION_CRITICAL_FLAG)
{
    // Perform the desired operation.
}

if (ExtPolicyFlags & EXTENSION_DISABLE_FLAG)
{
    // Perform the desired operation.
}

// 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;
    case EXTENSION_ORIGIN_RENEWALCERT:
        // Extension was set by renewal certificate.
        break;
    case EXTENSION_ORIGIN_IMPORTEDCERT:
        // Extension was set by imported certificate.
        break;
    case EXTENSION_ORIGIN_PKCS7:
        // Extension was set by PKCS #7.
        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

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags