Share via


ICertServerPolicy::GetCertificateExtensionFlags メソッド (certif.h)

GetCertificateExtensionFlags メソッドは、GetCertificateExtension の最新の呼び出しによって取得された拡張機能に関連付けられているフラグを取得します。

構文

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

パラメーター

[out] pExtFlags

拡張フラグを含む LONG 変数へのポインター。

戻り値

C++

メソッドが成功した場合、メソッドは S_OKを返し、 pExtFlags パラメーターには 、GetCertificateExtension の最新の呼び出しによって取得された拡張機能のフラグが含まれます。

メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通の HRESULT 値」を参照してください。

VB

戻り値は、 GetCertificateExtension の最新の呼び出しによって取得された拡張機能のフラグです。

注釈

GetCertificateExtensionFlags の前に、SetContext メソッドと GetCertificateExtension メソッドを呼び出す必要があります。 SetContext メソッドは、現在のコンテキストとして使用される要求を指定し、GetCertificateExtension メソッドは要求の拡張機能を取得します。

拡張機能には、ポリシー フラグと配信元フラグを含めることができます。 ポリシー フラグは、証明書拡張機能に関する情報を提供します。 ポリシー フラグは、ポリシー モジュールによって設定できます。 配信元フラグは、証明書拡張機能を設定するモジュールを示します。 配信元フラグは、サーバー エンジンによってのみ設定されます。

拡張機能から 1 つ以上のポリシー フラグを返すことができます。 定義済みのポリシー フラグを次に示します。

ポリシー フラグの値 説明
EXTENSION_CRITICAL_FLAG これは重要な拡張機能です。
EXTENSION_DISABLE_FLAG 拡張機能は使用されません。
 

次のいずれかの配信元フラグを返すこともできます。

配信元フラグの値 説明
EXTENSION_ORIGIN_REQUEST 拡張機能は、PKCS #10 要求のszOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.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.4.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.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 を含む)
Library Certidl.lib
[DLL] Certcli.dll

こちらもご覧ください

ICertAdmin::SetCertificateExtension

ICertServerPolicy

ICertServerPolicy::GetCertificateExtension

ICertServerPolicy::SetContext

IEnumCERTVIEWEXTENSION::GetFlags