CryptFindOIDInfo 関数 (wincrypt.h)

CryptFindOIDInfo 関数は、指定したキーの種類とキーに一致する最初の定義済みまたは登録済みのCRYPT_OID_INFO構造体を取得します。 検索は、指定された OID グループ内 のオブジェクト識別子 (OID) に制限できます。

CryptEnumOIDInfo を使用して、CRYPT_OID_INFO構造体のすべてのサブセットまたは選択したサブセットを一覧表示します。 新しい CRYPT_OID_INFO 構造体は 、CryptRegisterOIDInfo を使用して登録できます。 ユーザー登録 OID は、 CryptUnregisterOIDInfo を使用して登録されている OID の一覧から削除できます。

定義済みのエントリの前または後に、登録済みの OID の一覧に新しい OID を配置できます。 CryptFindOIDInfo は検索条件に一致するリストの最初のキーを返すので、同じキーを持つ定義済みの OID エントリの前に配置された新しく登録された OID は、定義済みのエントリをオーバーライドします。

構文

PCCRYPT_OID_INFO CryptFindOIDInfo(
  [in] DWORD dwKeyType,
  [in] void  *pvKey,
  [in] DWORD dwGroupId
);

パラメーター

[in] dwKeyType

OID 情報を検索するときに使用するキーの種類を指定します。

このパラメーターには、次のいずれかのキー型を指定できます。

CRYPT_OID_INFO_OID_KEY

pvKey は、検索する OID 文字列を含む null で終わる ANSI 文字列のアドレスです。

CRYPT_OID_INFO_NAME_KEY

pvKey は、検索する名前を含む null で終わる Unicode 文字列のアドレスです。

CRYPT_OID_INFO_ALGID_KEY

pvKey は、 ALG_ID 変数のアドレスです。 次の ALG_IDがサポートされています。

ハッシュ アルゴリズム:

対称暗号化アルゴリズム:

公開キー アルゴリズム:

一覧にないアルゴリズムは、 Cryptography API: Next Generation (CNG) のみを使用してサポートされています。代わりに、CRYPT_OID_INFO_CNG_ALGID_KEYを使用 します

CRYPT_OID_INFO_SIGN_KEY

pvKey は、2 つの ALG_IDの配列のアドレスです。最初の要素にはハッシュ アルゴリズム識別子が含まれており、2 番目の要素には公開キー アルゴリズム識別子が含まれます。

次の ALG_ID の組み合わせがサポートされています。

署名アルゴリズム識別子 ハッシュ アルゴリズム識別子
CALG_RSA_SIGN
CALG_SHA1
CALG_MD5
CALG_MD4
CALG_MD2
CALG_DSS_SIGN
CALG_SHA1
CALG_NO_SIGN
CALG_SHA1
CALG_NO_SIGN
 

一覧にないアルゴリズムは、CNG でのみサポートされます。代わりに、 CRYPT_OID_INFO_CNG_SIGN_KEYを使用します。

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey は、検索する CNG アルゴリズム識別子を含む null で終わる Unicode 文字列のアドレスです。 これには、定義済みの CNG アルゴリズム識別子 のいずれか、または別の登録済みアルゴリズム識別子を指定できます。

Windows Server 2003 R2 Windows Server 2003: このキーの種類はサポートされていません。

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey は、2 つの null で終わる Unicode 文字列ポインターの配列のアドレスです。最初の文字列にはハッシュ CNG アルゴリズム識別子が含まれており、2 番目の文字列には公開キー CNG アルゴリズム識別子が含まれます。 これらは、定義済みの CNG アルゴリズム識別子 または別の登録済みアルゴリズム識別子から取得できます。

Windows Server 2003 R2 Windows Server 2003: このキーの種類はサポートされていません。

必要に応じて、論理 OR 演算子 (|) を使用して dwKeyType パラメーターに次のキー型を指定できます。

意味
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG フラグで明示的にフラグが設定されているCRYPT_PUBKEY_ALG_OID_GROUP_ID グループ内の公開キーをスキップします。
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG フラグで明示的にフラグが設定されているCRYPT_PUBKEY_ALG_OID_GROUP_ID グループ内の公開キーをスキップします。

[in] pvKey

追加の検索情報を含むバッファーのアドレス。 このパラメーターは、 dwKeyType パラメーターの値によって異なります。 詳細については、「 dwKeyType」の下の表を参照してください。

[in] dwGroupId

OID 情報を検索するときに使用するグループ識別子。 このパラメーターを 0 に設定すると、 dwKeyType パラメーターに従ってすべてのグループが検索されます。 それ以外の場合は、指定された dwGroupId のみが検索されます。

グループ識別子別の OID 情報を一覧表示するコードの詳細については、「 CryptEnumOIDInfo」を参照してください。

必要に応じて、論理 OR 演算子 (|) を使用して dwGroupId パラメーターに次のフラグを指定できます。

意味
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
ディレクトリ サーバーの検索を無効にします。
 

dwGroupId パラメーターでは、論理 OR 演算子 (|) を使用して、左 16 ビットシフトされたビット長を指定できます。 詳細については、「解説」を参照してください。

戻り値

CRYPT_OID_INFO型の定数構造体へのポインターを返します。 返されたポインターを解放することはできません。 指定したキーとグループが見つからない場合は、 NULL が返されます。

注釈

CryptFindOIDInfo 関数は、次の条件で OID のフレンドリ名を取得するために、Active Directory で検索を実行します。

  • dwKeyType パラメーターのキー型は、CRYPT_OID_INFO_OID_KEYまたはCRYPT_OID_INFO_NAME_KEYに設定されています。
  • dwGroupId パラメーターにグループ識別子が指定されていないか、GroupID が EKU OID、ポリシー OID、またはテンプレート OID を参照します。
CRYPT_OID_DISABLE_SEARCH_DS_FLAG フラグを使用して 関数を呼び出すことで、フレンドリ名のネットワーク取得を抑制できます。

dwGroupId パラメーターでは、論理 OR 演算子 (|) を使用して、左 16 ビットシフトされたビット長を指定できます。 これは、 CRYPT_OID_INFO 構造体の ExtraInfo メンバーで指定されたビット長を持つ CRYPT_ENCRYPT_ALG_OID_GROUP_ID グループ エントリにのみ適用されます。 現時点では、AES 暗号化アルゴリズムのみがこれを持っています。 定数 CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT は、シフトを実行するために使用できます。 たとえば、ビット長が 192 の BCRYPT_AES_ALGORITHM の OID 情報を検索するには、次のように CryptFindOIDInfo を呼び出します。


DWORD dwBitLen = 192;

PCCRYPT_OID_INFO pOIDInfo = CryptFindOIDInfo(
     CRYPT_OID_INFO_CNG_ALGID_KEY,
     (void *) BCRYPT_AES_ALGORITHM,
     CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
         (dwBitLen << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
     );


要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

こちらもご覧ください

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

OID サポート関数