Metodo ICertServerExit::GetCertificateExtensionFlags (certif.h)

Il metodo GetCertificateExtensionFlags ottiene i flag dall'estensione acquisita dalla chiamata più recente a ICertServerExit::GetCertificateExtension.

Sintassi

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

Parametri

[out] pExtFlags

Puntatore a una variabile LONG che conterrà i flag di estensione.

Valore restituito

C++

Se il metodo ha esito positivo, il metodo restituisce S_OK e *pExtFlags viene impostato sulla variabile che contiene i flag dell'estensione acquisita dalla chiamata più recente a ICertServerExit::GetCertificateExtension.

Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.

VB

Il valore restituito è costituito dai flag dell'estensione acquisita dalla chiamata più recente a ICertServerExit::GetCertificateExtension.

Commenti

Esistono due tipi di flag usati nelle estensioni: flag di criteri e flag di origine.

Tipo di flag Spiegazione
Criteri Fornisce informazioni sull'estensione del certificato. I flag dei criteri possono essere impostati dal modulo criteri.
Origine Indica il modulo che imposta l'estensione del certificato. I flag di origine vengono impostati solo dal motore del server.
 

Uno o più flag di criteri possono essere restituiti da un'estensione. Di seguito sono riportati flag di criteri predefiniti.

Valore del flag dei criteri Spiegazione
EXTENSION_CRITICAL_FLAG Si tratta di un'estensione critica.
EXTENSION_DISABLE_FLAG L'estensione non verrà usata.
 

È anche possibile restituire uno dei flag di origine seguenti.

Valore del flag di origine Spiegazione
EXTENSION_ORIGIN_REQUEST L'estensione è stata estratta da una matrice di estensioni archiviate nel szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) di una richiesta PKCS #10.
EXTENSION_ORIGIN_POLICY Il modulo criteri imposta l'estensione.
EXTENSION_ORIGIN_ADMIN L'amministratore imposta l'estensione. Per altre informazioni, vedere ICertAdmin::SetCertificateExtension.
EXTENSION_ORIGIN_SERVER Il motore del server imposta l'estensione.
EXTENSION_ORIGIN_RENEWALCERT L'estensione è stata estratta dal certificato archiviato nell'attributo szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) di una richiesta di rinnovo PKCS #10.
EXTENSION_ORIGIN_IMPORTEDCERT L'estensione è stata estratta da un certificato importato (il certificato è stato passato a ICertAdmin::ImportCertificate).
EXTENSION_ORIGIN_PKCS7 L'estensione è stata estratta da una matrice di estensioni archiviate nella szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) o szOID_RSA_certExtensions (1.2.840.113549.1.9.14) di una richiesta PKCS #7.
 

Le maschere predefinite vengono fornite per facilitare l'uso per determinare quali flag sono impostati nel valore restituito. Vengono fornite le maschere seguenti.

Valore della maschera Spiegazione
EXTENSION_POLICY_MASK Questo valore (0x0000FFFF) viene usato per esaminare i flag dei criteri.
EXTENSION_ORIGIN_MASK Questo valore (0x000F0000) viene usato per esaminare i flag di origine.
 

È sicuro usare i 8 bit elevati di EXTENSION_POLICY_MASK per i dati personalizzati. Questi bit verranno salvati in modo permanente nel database, ma non verranno scritti nelle estensioni del certificato.

È necessario chiamare ICertServerExit::SetContext prima di usare questo metodo.

Esempio

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

Requisiti

Requisito Valore
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione certif.h (include Certsrv.h)
Libreria Certidl.lib
DLL Certcli.dll

Vedi anche

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags