CryptFindOIDInfo 函式 (wincrypt.h)

CryptFindOIDInfo 函式會擷取符合指定索引鍵類型和索引鍵的第一個預先定義或已註冊CRYPT_OID_INFO結構。 搜尋僅限於指定 OID 群組內 (OID 群組內) 的物件識別碼

使用 CryptEnumOIDInfo 列出 CRYPT_OID_INFO 結構的所有或選取子集。 您可以使用 CryptRegisterOIDInfo 來註冊新的CRYPT_OID_INFO結構。 您可以使用 CryptUnregisterOIDInfo,從已註冊的 OID 清單中移除用戶註冊的 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 是 Null 終止 ANSI 字串的位址,其中包含要尋找的 OID 字串。

CRYPT_OID_INFO_NAME_KEY

pvKey 是 Null 終止的 Unicode 字串位址,其中包含要尋找的名稱。

CRYPT_OID_INFO_ALGID_KEY

pvKeyALG_ID 變數的位址。 支援下列 ALG_ID

哈希演算法:

對稱加密演算法:

公鑰演算法:

未列出的演算法僅支援使用 密碼編譯 API:新一代 (CNG) ;請改用 CRYPT_OID_INFO_CNG_ALGID_KEY

CRYPT_OID_INFO_SIGN_KEY

pvKey 是兩 個ALG_ID數位的位址,其中第一個專案包含哈希演算法識別碼,而第二個元素則包含公鑰演算法標識碼。

支援下列 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 是 Null 終止 Unicode 字串的位址,其中包含要尋找的 CNG 演演算法識別碼。 這可以是其中一個預先定義的 CNG 演演算法識別碼 或其他已註冊的演算法標識碼。

Windows Server 2003 R2 Windows Server 2003 : 不支援此索引鍵類型。

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey 是兩個以 Null 終止的 Unicode 字串指標陣列的位址,其中第一個字串包含哈希 CNG 演演算法識別碼,而第二個字元串則包含公鑰 CNG 演演算法識別碼。 這些可以是預先定義的 CNG 演演算法識別碼 或其他已註冊的演算法標識碼。

Windows Server 2003 R2 Windows Server 2003 : 不支援此索引鍵類型。

您可以選擇性地使用邏輯 OR 運算子在 dwKeyType 參數中指定下列索引鍵類型 (|) 。

意義
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
略過CRYPT_PUBKEY_ALG_OID_GROUP_ID群組中明確標幟為 CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 旗標的公鑰。
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
略過CRYPT_PUBKEY_ALG_OID_GROUP_ID群組中明確標示為 CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 旗標的公鑰。

[in] pvKey

包含其他搜尋信息的緩衝區位址。 此參數取決於 dwKeyType 參數的值。 如需詳細資訊,請參閱 dwKeyType 下的數據表。

[in] dwGroupId

尋找 OID 資訊時要使用的群組識別碼。 將此參數設定為零會根據 dwKeyType 參數搜尋所有群組。 否則,只會搜尋指定的 dwGroupId

如需依群組標識碼列出 OID 資訊的程式代碼相關信息,請參閱 CryptEnumOIDInfo

您可以選擇性地使用邏輯 OR 運算子在 dwGroupId 參數中指定下列旗標 (|) 。

意義
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
停用搜尋目錄伺服器。
 

您可以使用邏輯 OR 運算子 (,在 dwGroupId 參數中指定位長度為 16 位 |) 。 如需詳細資訊,請參閱<備註>。

傳回值

傳回類型 為 CRYPT_OID_INFO 之常數結構的指標。 傳回的指標不得釋放。 找不到指定的索引鍵和群組時,會傳回 NULL

備註

CryptFindOIDInfo 函式會在 Active Directory 中執行查閱,以在下列情況下擷取易記的 OID 名稱:

  • dwKeyType 參數中的索引鍵類型會設定為 CRYPT_OID_INFO_OID_KEYCRYPT_OID_INFO_NAME_KEY
  • dwGroupId 參數中未指定任何群組標識符,或 GroupID 是指 EKU OID、原則 OID 或範本 OID。
使用 CRYPT_OID_DISABLE_SEARCH_DS_FLAG 旗標呼叫 函式,即可隱藏易記名稱的網路擷取。

您可以使用邏輯 OR 運算子 (,在 dwGroupId 參數中指定位長度為 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
程式庫 Crypt32.lib
Dll Crypt32.dll

另請參閱

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

OID 支援函式