BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO結構 (bcrypt.h)
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO 結構會與 BCryptEncrypt 和 BCryptDecrypt 函式搭配使用,以包含與已驗證加密模式相關的其他資訊。
語法
typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
ULONG cbSize;
ULONG dwInfoVersion;
PUCHAR pbNonce;
ULONG cbNonce;
PUCHAR pbAuthData;
ULONG cbAuthData;
PUCHAR pbTag;
ULONG cbTag;
PUCHAR pbMacContext;
ULONG cbMacContext;
ULONG cbAAD;
ULONGLONG cbData;
ULONG dwFlags;
} BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO, *PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
成員
cbSize
這個 結構的大小,以位元組為單位。 請勿直接設定此欄位。 請改用 BCRYPT_INIT_AUTH_MODE_INFO 宏。
dwInfoVersion
結構的版本號碼。 唯一支援的值是 BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION。 請勿直接設定此欄位。 請改用 BCRYPT_INIT_AUTH_MODE_INFO 宏。
pbNonce
緩衝區的指標,其中包含 nonce。 適用於 進階加密標準 (AES) 的 Microsoft 演算法提供者需要 CBC-MAC (CCM) 和 Galois/Counter Mode (GCM) 鏈結模式的 Counter 的 nonce,如果不存在,則會傳回錯誤。 如果未使用 nonce,此成員必須設定為 NULL。
cbNonce
pbNonce 成員所指向緩衝區的大小,以位元組為單位。 如果未使用 nonce,這個成員必須設定為零。
pbAuthData
緩衝區的指標,其中包含已驗證的數據。 這是訊息 驗證碼 (MAC) 但未加密的數據。 如果沒有已驗證的數據,此成員必須設定為 NULL。
cbAuthData
pbAuthData 成員所指向緩衝區的大小,以位元組為單位。 如果沒有已驗證的數據,這個成員必須設定為零。
pbTag
緩衝區的指標。
此成員的使用取決於傳遞結構的函式。
函式 | 描述 |
---|---|
緩衝區將會收到驗證標記。 | |
緩衝區包含要檢查的驗證標記。 |
如果沒有標記,這個成員必須設定為 NULL。
cbTag
pbTag 緩衝區的大小,以位元組為單位。 緩衝區必須夠長,才能包含整個驗證標記。 某些驗證模式,例如 CCM 和 GCM,支持針對具有多個長度的標籤進行檢查。 若要取得有效的驗證標記長度,請使用 BCryptGetProperty 查詢 BCRYPT_AUTH_TAG_LENGTH 屬性。 如果沒有標記,這個成員必須設定為零。
pbMacContext
在鏈結加密或解密時,在呼叫 BCryptEncrypt 和 BCryptDecrypt 之間儲存部分計算 MAC 的緩衝區指標。
如果加密或解密的輸入散佈在多個緩衝區,則您必須鏈結 對 BCryptEncrypt 和 BCryptDecrypt 函式的呼叫。 鏈結是在 dwFlags 成員中設定BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG旗標來表示。
此緩衝區必須由呼叫端提供,且必須至少大於您所使用之加密的驗證標記長度上限。 若要取得有效的驗證標記長度,請使用 BCryptGetProperty 查詢 BCRYPT_AUTH_TAG_LENGTH 屬性。
如果未鏈結 BCryptEncrypt 和 BCryptDecrypt 呼叫,則此成員必須設定為 NULL。
cbMacContext
pbMacContext 成員所指向緩衝區的大小,以位元組為單位。 如果 BCryptEncrypt 和 BCryptDecrypt 呼叫未鏈結,此成員必須設定為零。
cbAAD
BCryptEncrypt 和BCryptDecrypt 函式要使用的其他已驗證數據長度,以位元組為單位 (AAD) 。 只有在鏈結呼叫時,才會使用此成員。
只有在設定 dwFlags 成員中的BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG旗標時,才會使用此成員。
在第一次呼叫 BCryptEncrypt 或BCryptDecrypt 時,您必須將此字段設定為零。
cbData
已加密或解密之承載數據的長度,以位元組為單位。 只有在鏈結呼叫時,才會使用此成員。
只有在設定 dwFlags 成員中的BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG旗標時,才會使用此成員。
在第一次呼叫 BCryptEncrypt 或BCryptDecrypt 時,您必須直接或呼叫 BCRYPT_INIT_AUTH_INFO 宏,將此字段設定為零
dwFlags
鏈結 BCryptEncrypt 或 BCryptDecrypt 函式呼叫時,會使用此旗標。 如果未鏈結呼叫,這個成員必須設定為零。
值 | 意義 |
---|---|
|
針對 BCryptEncrypt,計算驗證標記,並將它放在 pbTag 成員指向的緩衝區中。
針對 BCryptDecrypt,計算驗證標記,並將它與傳遞給 pbTag 成員所指向緩衝區的標記進行比較。 將多個呼叫鏈結至 BCryptEncrypt 或 BCryptDecrypt 時,此值會向鏈結結尾發出訊號。 |
|
表示 BCryptEncrypt 和 BCryptDecrypt 函數調用正在鏈結中,而且不會計算 MAC 值。 在鏈結的最後一個呼叫上,清除此值以計算整個鏈結的 MAC 值。 |
|
表示這個 BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO 結構正用於鏈結 的 BCryptEncrypt 或 BCryptDecrypt 函數調用序列中。 此旗標是在內部設定和維護。
注意 在鏈結順序期間,此旗標值會在內部維護,不得變更或計算 MAC 的值將會損毀。
|
備註
此結構的大小在64位和32位操作系統之間不同。 在 64 位作業系統上,大小在 64 位和 32 位進程之間不同。 此結構的實例不得跨線程共用,或於進程之間傳遞。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista SP1 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
標頭 | bcrypt.h |