ICertServerPolicy::GetCertificateExtensionFlags 方法 (certif.h)

GetCertificateExtensionFlags 方法會擷取與最近呼叫 GetCertificateExtension 所取得之擴充功能相關聯的旗標。

語法

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

參數

[out] pExtFlags

LONG 變數的指標,其中包含延伸模組旗標。

傳回值

C++

如果方法成功,方法會傳回S_OK,而 pExtFlags 參數會包含 最近呼叫 GetCertificateExtension 所取得之延伸模組的旗標。

如果方法失敗,它會傳回 HRESULT 值,指出錯誤。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值

VB

傳回值是最近呼叫 GetCertificateExtension 所取得之延伸模組的旗標。

備註

必須先呼叫 SetContextGetCertificateExtension 方法, 才能呼叫 GetCertificateExtensionFlagsSetContext 方法會指定使用哪個要求做為目前內容,而 GetCertificateExtension 方法會擷取要求的延伸模組。

延伸模組可以包含原則和原始旗標。 原則旗標提供憑證延伸模組的相關信息。 原則模組可以設定原則旗標。 原始旗標表示設定憑證延伸模組的模組。 原始旗標只能由伺服器引擎設定。

您可以從延伸模組傳回一或多個原則旗標。 以下是預先定義的原則旗標。

原則旗標值 說明
EXTENSION_CRITICAL_FLAG 這是重要的延伸模組。
EXTENSION_DISABLE_FLAG 將不會使用擴充功能。
 

您也可以傳回下列其中一個原始旗標。

原始旗標值 說明
EXTENSION_ORIGIN_REQUEST 延伸模組是從儲存在 PKCS #10 要求之 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) 或 szOID_RSA_certExtensions (1.2.840.113549.1.9.14) 屬性的擴充數組擷取。
EXTENSION_ORIGIN_POLICY 原則模組會設定擴充功能。
EXTENSION_ORIGIN_ADMIN 系統管理員設定擴充功能。 如需詳細資訊,請參閱 ICertAdmin::SetCertificateExtension
EXTENSION_ORIGIN_SERVER 伺服器引擎會設定擴充功能。
EXTENSION_ORIGIN_RENEWALCERT 延伸模組是從 PKCS #10 更新要求的 szOID_RENEWAL_CERTIFICATE (1.3.6.1.1.311.1.311.13.) 1 屬性中儲存的憑證擷取。
EXTENSION_ORIGIN_IMPORTEDCERT 延伸模組是從匯入的憑證擷取, (憑證傳遞至 ICertAdmin::ImportCertificate) 。
EXTENSION_ORIGIN_PKCS7 延伸模組是從儲存在 PKCS #7 要求之 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) 或szOID_RSA_certExtensions (1.2.840.113549.1.9.14) 屬性的擴充數組擷取。
 

提供預先定義的遮罩,以方便用來判斷傳回值中設定的旗標。 提供下列遮罩。

遮罩值 說明
EXTENSION_POLICY_MASK 此值 (0x0000FFFF) 用來檢查原則旗標。
EXTENSION_ORIGIN_MASK 此值 (0x000F0000) 用來檢查原始旗標。
 

使用自定義數據的高 8 位EXTENSION_POLICY_MASK是安全的。 這些位會持續儲存在資料庫中,但不會寫入憑證延伸模組。

範例

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

規格需求

需求
最低支援的用戶端 都不支援
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 certif.h (包括 Certsrv.h)
程式庫 Certidl.lib
Dll Certcli.dll

另請參閱

ICertAdmin::SetCertificateExtension

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags