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) 链接模式的计数器的 nonce,如果没有,则返回错误。 如果未使用 nonce,则必须将此成员设置为 NULL。
cbNonce
pbNonce 成员指向的缓冲区的大小(以字节为单位)。 如果未使用 nonce,则必须将此成员设置为零。
pbAuthData
指向包含经过身份验证的数据的缓冲区的指针。 这是将包含在 消息身份验证代码 (MAC) 但未加密的数据。 如果没有经过身份验证的数据,则必须将此成员设置为 NULL。
cbAuthData
pbAuthData 成员指向的缓冲区的大小(以字节为单位)。 如果没有经过身份验证的数据,则必须将此成员设置为零。
pbTag
指向缓冲区的指针。
此成员的用法取决于将结构传递到的函数。
函数 | 说明 |
---|---|
缓冲区将收到身份验证标记。 | |
缓冲区包含要检查的身份验证标记。 |
如果没有标记,则必须将此成员设置为 NULL。
cbTag
pbTag 缓冲区的大小(以字节为单位)。 缓冲区必须足够长才能包含整个身份验证标记。 某些身份验证模式(如 CCM 和 GCM)支持针对具有多个长度的标记进行检查。 若要获取有效的身份验证标记长度,请使用 BCryptGetProperty 查询 BCRYPT_AUTH_TAG_LENGTH 属性。 如果没有标记,则必须将此成员设置为零。
pbMacContext
指向缓冲区的指针,该缓冲区在链接加密或解密时,在调用 BCryptEncryptEncrypt 和 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 |