estrutura BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO (bcrypt.h)

A estrutura BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO é usada com as funções BCryptEncrypt e BCryptDecrypt para conter informações adicionais relacionadas aos modos de criptografia autenticados.

Sintaxe

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;

Membros

cbSize

O tamanho, em bytes, dessa estrutura. Não defina esse campo diretamente. Em vez disso, use a macro BCRYPT_INIT_AUTH_MODE_INFO .

dwInfoVersion

O número de versão da estrutura. O único valor com suporte é BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION. Não defina esse campo diretamente. Em vez disso, use a macro BCRYPT_INIT_AUTH_MODE_INFO .

pbNonce

Um ponteiro para um buffer que contém um nonce. Os provedores de algoritmos da Microsoft para os modos de encadeamento AES ( Advanced Encryption Standard ) exigem um nonce para os modos de encadeamento Counter with CBC-MAC (CCM) e Galois/Counter Mode (GCM) e retornarão um erro se nenhum estiver presente. Se um nonce não for usado, esse membro deverá ser definido como NULL.

cbNonce

O tamanho, em bytes, do buffer apontado pelo membro pbNonce . Se um nonce não for usado, esse membro deverá ser definido como zero.

pbAuthData

Um ponteiro para um buffer que contém os dados autenticados. Esses são os dados que serão incluídos no MAC ( Código de Autenticação de Mensagem ), mas não criptografados. Se não houver dados autenticados, esse membro deverá ser definido como NULL.

cbAuthData

O tamanho, em bytes, do buffer apontado pelo membro pbAuthData . Se não houver dados autenticados, esse membro deverá ser definido como zero.

pbTag

Um ponteiro para um buffer.

O uso desse membro depende da função para a qual a estrutura é passada.

Função Descrição
BCryptEncrypt
O buffer receberá a marca de autenticação.
BCryptDecrypt
O buffer contém a marca de autenticação a ser verificada.
 

Se não houver nenhuma marca, esse membro deverá ser definido como NULL.

cbTag

O tamanho, em bytes, do buffer pbTag . O buffer deve ser longo o suficiente para incluir toda a marca de autenticação. Alguns modos de autenticação, como CCM e GCM, dão suporte à verificação em uma marca com vários comprimentos. Para obter os comprimentos de marca de autenticação válidos, use BCryptGetProperty para consultar a propriedade BCRYPT_AUTH_TAG_LENGTH . Se não houver nenhuma marca, esse membro deverá ser definido como zero.

pbMacContext

Um ponteiro para um buffer que armazena o MAC parcialmente computado entre chamadas para BCryptEncrypt e BCryptDecrypt ao encadear criptografia ou descriptografia.

Se a entrada para criptografia ou descriptografia estiver espalhada em vários buffers, você deverá encadear chamadas para as funções BCryptEncrypt e BCryptDecrypt . O encadeamento é indicado definindo o sinalizador BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG no membro dwFlags .

Esse buffer deve ser fornecido pelo chamador e deve ser pelo menos tão grande quanto o comprimento máximo de uma marca de autenticação para a codificação que você está usando. Para obter os comprimentos de marca de autenticação válidos, use BCryptGetProperty para consultar a propriedade BCRYPT_AUTH_TAG_LENGTH .

Se as chamadas BCryptEncrypt e BCryptDecrypt não estiverem sendo encadeadas, esse membro deverá ser definido como NULL.

cbMacContext

O tamanho, em bytes, do buffer apontado pelo membro pbMacContext . Se as chamadas BCryptEncrypt e BCryptDecrypt não estiverem sendo encadeadas, esse membro deverá ser definido como zero.

cbAAD

O comprimento, em bytes, de dados autenticados adicionais (AAD) a serem usados pelas funções BCryptEncrypt e BCryptDecrypt . Esse membro é usado somente ao encadear chamadas.

Esse membro é usado somente quando o sinalizador BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG no membro dwFlags é definido.

Na primeira chamada para BCryptEncrypt ou BCryptDecrypt , você deve definir esse campo como zero.

Nota Durante a sequência de encadeamento, esse membro é mantido internamente e não deve ser alterado ou o valor do MAC calculado será corrompido.
 

cbData

O comprimento, em bytes, dos dados de conteúdo que foram criptografados ou descriptografados. Esse membro é usado somente ao encadear chamadas.

Esse membro é usado somente quando o sinalizador BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG no membro dwFlags é definido.

Na primeira chamada para BCryptEncrypt ou BCryptDecrypt, você deve definir esse campo como zero, , diretamente ou chamando a macro BCRYPT_INIT_AUTH_INFO

Nota Durante a sequência de encadeamento, esse membro é mantido internamente e não deve ser alterado ou o valor do MAC calculado será corrompido.
 

dwFlags

Esse sinalizador é usado ao encadear chamadas de função BCryptEncrypt ou BCryptDecrypt . Se as chamadas não estiverem sendo encadeadas, esse membro deverá ser definido como zero.

Valor Significado
0x00000000
Para BCryptEncrypt, calcule a marca de autenticação e coloque-a no buffer apontado pelo membro pbTag .

Para BCryptDecrypt, calcule a marca de autenticação e compare-a com a marca passada para o buffer apontado pelo membro pbTag . Ao encadear várias chamadas para BCryptEncrypt ou BCryptDecrypt, esse valor sinaliza o fim da cadeia.

BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG
0x00000001
Indica que as chamadas de função BCryptEncrypt e BCryptDecrypt estão sendo encadeadas e que o valor MAC não será calculado. Na última chamada na cadeia, desmarque esse valor para calcular o valor mac de toda a cadeia.
BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG
0x00000002
Indica que essa estrutura BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO está sendo usada em uma sequência de chamadas de função BCryptEncrypt ou BCryptDecrypt encadeadas. Esse sinalizador é definido e mantido internamente.
Nota Durante a sequência de encadeamento, esse valor de sinalizador é mantido internamente e não deve ser alterado ou o valor do MAC calculado será corrompido.
 

Comentários

O tamanho dessa estrutura é diferente entre sistemas operacionais de 64 bits e 32 bits. Em sistemas operacionais de 64 bits, o tamanho é diferente entre processos de 64 bits e 32 bits. As instâncias dessa estrutura não devem ser compartilhadas entre threads ou passadas entre processos.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista com SP1 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho bcrypt.h