ICertServerExit::GetCertificateExtensionFlags 方法 (certif.h)
GetCertificateExtensionFlags 方法會從最近呼叫 ICertServerExit::GetCertificateExtension 所取得的延伸模組取得旗標。
語法
HRESULT GetCertificateExtensionFlags(
[out] LONG *pExtFlags
);
參數
[out] pExtFlags
LONG 變數的指標,其中包含延伸模組旗標。
傳回值
C++
如果方法成功,方法會傳回S_OK,而 *pExtFlags 會設定為變數,其中包含最近呼叫 ICertServerExit::GetCertificateExtension 所取得之延伸模組的旗標。如果方法失敗,它會傳回指出錯誤的 HRESULT 值。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值。
VB
傳回值是最近呼叫 ICertServerExit::GetCertificateExtension 所取得之延伸模組的旗標。備註
擴充功能使用兩種旗標:原則旗標和原始旗標。
旗標類型 | 說明 |
---|---|
原則 | 提供憑證延伸模組的相關信息。 原則模組可以設定原則旗標。 |
來源 | 指出設定憑證延伸模組的模組。 原始旗標只會由伺服器引擎設定。 |
您可以從延伸模組傳回一或多個原則旗標。 以下是預先定義的原則旗標。
原則旗標值 | 說明 |
---|---|
EXTENSION_CRITICAL_FLAG | 這是重要的擴充功能。 |
EXTENSION_DISABLE_FLAG | 不會使用擴充功能。 |
您也可以傳回下列其中一個原始旗標。
原始旗標值 | 說明 |
---|---|
EXTENSION_ORIGIN_REQUEST | 此延伸模組是從儲存在 PKCS #10 要求之 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.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.4.1.311.1.13.1) 屬性中儲存的憑證擷取。 |
EXTENSION_ORIGIN_IMPORTEDCERT | 延伸模組是從匯入的憑證擷取, (憑證傳遞至 ICertAdmin::ImportCertificate) 。 |
EXTENSION_ORIGIN_PKCS7 | 延伸模組是從儲存在 PKCS #7 要求的 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.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是安全的。 這些位會持續儲存在資料庫中,但不會寫入憑證延伸模組。
您必須先呼叫 ICertServerExit::SetContext ,才能使用此方法。
範例
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;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 都不支援 |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | certif.h (包含 Certsrv.h) |
程式庫 | Certidl.lib |
Dll | Certcli.dll |
另請參閱
CCertServerExit
ICertAdmin::SetCertificateExtension