次の方法で共有


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

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

構文

HRESULT GetCertificateExtensionFlags(
  [out] LONG *pExtFlags
);

パラメーター

[out] pExtFlags

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

戻り値

C++

メソッドが成功すると、メソッドは S_OKを返し、*pExtFlagsICertServerExit::GetCertificateExtension の最新の呼び出しによって取得された拡張機能のフラグを含む変数に設定されます。

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

VB

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

注釈

拡張機能で使用されるフラグには、ポリシー フラグと配信元フラグの 2 種類があります。

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

拡張機能から 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を使用しても安全です。 これらのビットはデータベースに永続的に保存されますが、証明書拡張機能には書き込まれません。

このメソッドを使用する前に 、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 を含む)
Library Certidl.lib
[DLL] Certcli.dll

こちらもご覧ください

CCertServerExit

ICertAdmin::SetCertificateExtension

ICertServerExit

ICertServerExit::GetCertificateExtension

IEnumCERTVIEWEXTENSION::GetFlags