CryptGetKeyParam 函式 (wincrypt.h)
語法
BOOL CryptGetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[out] BYTE *pbData,
[in, out] DWORD *pdwDataLen,
[in] DWORD dwFlags
);
參數
[in] hKey
正在查詢之索引鍵的句柄。
[in] dwParam
指定要進行的查詢類型。
對於所有索引鍵類型,此參數可以包含下列其中一個值。
價值 | 意義 |
---|---|
|
擷取金鑰演演算法。
pbData 參數是 ALG_ID 值的指標,這個值會接收建立密鑰時所指定的演算法識別碼。
針對 CryptGenKey 函式的 Algid 參數指定 AT_KEYEXCHANGE 或 AT_SIGNATURE 時,用來產生密鑰的演演算法識別碼取決於所使用的提供者。 如需詳細資訊,請參閱 ALG_ID。 |
|
如果會話密鑰是由 hKey 參數指定,請擷取密鑰加密的區塊長度。
pbData 參數是接收區塊長度的 DWORD 值的指標。 對於 數據流加密,這個值一律為零。
如果 公開/私鑰組 是由 hKey指定,擷取金鑰組的加密粒度。 pbData 參數是接收加密數據粒度的 DWORD 值的指標。 例如,Microsoft 基底密碼編譯提供者 會產生 512 位 RSA 金鑰組,因此會針對這些密鑰傳回 512 的值。 如果 公鑰演算法 不支援 加密,則擷取的值未定義。 |
|
pbData 是緩衝區的位址,該緩衝區會接收已使用 辨別編碼規則 (DER) 編碼的 X.509 憑證。 憑證 中 公鑰 必須符合對應的簽章或交換密鑰。 |
|
未使用此值。 |
|
擷取金鑰的實際長度。
pbData 參數是接收密鑰長度位之 DWORD 值的指標。
KP_KEYLEN 可用來取得任何索引鍵類型的長度。 Microsoft 密码编译服务提供商 (CSP) 會針對 CALG_DES傳回 64 位的金鑰長度、CALG_3DES_112的 128 位,以及 CALG_3DES的 192 位。 這些長度與列舉演算法時所傳回的長度不同,其中 dwParam 值 CryptGetProvParam 函式設定為 PP_ENUMALGS。 這個呼叫傳回的長度是金鑰的實際大小,包括金鑰中包含的同位位。
Microsoft支援該演算法 CALG_CYLINK_MEKALG_ID 傳回 64 位的 CSP。 CALG_CYLINK_MEK 是 40 位的金鑰,但具有同位和零鍵位,讓密鑰長度為 64 位。 |
|
擷取索引鍵的 salt 值。
pbData 參數是 BYTE 陣列的指標,該陣列會接收 位元組 格式中的 salt 值。 salt 值的大小會根據所使用的 CSP 和演算法而有所不同。 Salt 值不適用於 |
|
擷取密鑰許可權。
pbData 參數是接收密鑰許可權旗標之 DWORD 值的指標。
目前已定義下列許可權標識碼。 索引鍵許可權可以是零或下列一或多個值的組合。
|
如果 數位簽名標準 (DSS) 索引鍵是由 hKey 參數指定,dwParam 值也可以設定為下列其中一個值。
如果 區塊加密會話密鑰 是由 hKey 參數指定,dwParam 值也可以設定為下列其中一個值。
價值 | 意義 |
---|---|
|
擷取 RC2 金鑰的有效金鑰長度。 pbData 參數是接收有效密鑰長度之 DWORD 值的指標。 |
|
擷取索引鍵的初始化向量。 pbData 參數是接收初始化向量之 BYTE 陣列的指標。 此陣列的大小是區塊大小,以位元組為單位。 例如,如果區塊長度是64位,初始化向量會包含8個字節。 |
|
擷取填補模式。 pbData 參數是 DWORD 值的指標,這個值會接收識別 加密所使用的 填補 方法的數值標識符。 這可以是下列其中一個值。 |
|
擷取 目前已定義下列加密模式識別碼。 |
|
擷取要送回的位數。 pbData 參數是 DWORD 值的指標,這個值會接收使用 OFB 或 CFB 加密模式時,每個週期所處理的位數。 |
如果 Diffie-Hellman 演算法 或 數位簽名演算法 (DSA) 索引鍵是由 hKey指定,dwParam 值也可以設定為下列值。
價值 | 意義 |
---|---|
|
驗證 Diffie-Hellman 演算法或 DSA 金鑰的參數。 不會使用 pbData 參數,而且 pdwDataLen 所指向的值會接收零。
如果索引鍵參數有效或零,則此函式會傳回非零值。 |
|
未使用此值。
Windows Vista、Windows Server 2003 和 Windows XP:從匯入的 Diffie-Hellman 演算法擷取秘密合約值,CALG_AGREEDKEY_ANY類型的索引鍵。 pbData 參數是接收小端格式秘密合約值的緩衝區位址。 這個緩衝區的長度必須與索引鍵相同。 dwFlags 參數必須設定為 0xF42A19B6。 這個屬性只能由在本機系統帳戶下執行的線程擷取。此屬性可用於上述作業系統。 後續版本可能會變更或無法使用。 |
如果憑證是由 hKey指定,dwParam 值也可以設定為下列值。
價值 | 意義 |
---|---|
|
包含 DER 編碼 X.509 憑證的緩衝區。 不會使用 pbData 參數,而且 pdwDataLen 所指向的值會接收零。
如果索引鍵參數有效或零,則此函式會傳回非零值。 |
[out] pbData
接收數據的緩衝區指標。 此數據的形式取決於 dwParam的值。
如果不知道這個緩衝區的大小,則可以在運行時間擷取所需的大小,方法是傳遞此參數的
[in, out] pdwDataLen
DWORD 值的指標,在專案上,會包含 pbData 參數所指向之緩衝區的大小,以位元組為單位。 當函式傳回時,DWORD 值會包含儲存在緩衝區中的位元組數目。
[in] dwFlags
此參數保留供日後使用,且必須設定為零。
傳回值
如果函式成功,函式會傳回非零。
如果函式失敗,則會傳回零。 如需擴充錯誤資訊,請呼叫 getLastError
以 「NTE」 開頭的錯誤碼是由所使用的特定 CSP 所產生。 某些可能的錯誤碼包括下列各項。
傳回碼 | 描述 |
---|---|
|
其中一個參數指定無效的句柄。 |
|
其中一個參數包含無效的值。 這通常是無效的指標。 |
|
如果 pbData 參數指定的緩衝區不夠大,無法保存傳回的數據,則函式會設定 ERROR_MORE_DATA 程式代碼,並將所需的緩衝區大小以位元組為單位儲存 pdwDataLen所指向的變數中。 |
|
dwFlags 參數為非零。 |
|
hKey 參數指定的索引鍵無效。 |
|
dwParam 參數會指定未知的值編號。 |
|
找不到建立金鑰時指定的 CSP 內容。 |
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wincrypt.h |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |