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_DSS_SIGN |
|
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 パラメーターに次のキー型を指定できます。
[in] pvKey
追加の検索情報を含むバッファーのアドレス。 このパラメーターは、 dwKeyType パラメーターの値によって異なります。 詳細については、「 dwKeyType」の下の表を参照してください。
[in] dwGroupId
OID 情報を検索するときに使用するグループ識別子。 このパラメーターを 0 に設定すると、 dwKeyType パラメーターに従ってすべてのグループが検索されます。 それ以外の場合は、指定された dwGroupId のみが検索されます。
グループ識別子別の OID 情報を一覧表示するコードの詳細については、「 CryptEnumOIDInfo」を参照してください。
必要に応じて、論理 OR 演算子 (|) を使用して dwGroupId パラメーターに次のフラグを指定できます。
値 | 意味 |
---|---|
|
ディレクトリ サーバーの検索を無効にします。 |
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 を参照します。
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 |