Função DecryptMessage (Kerberos)

A função DecryptMessage (Kerberos) descriptografa uma mensagem. Alguns pacotes não criptografam e descriptografam mensagens, mas executam e marcar um hash de integridade.

Observação

EncryptMessage (Kerberos) e DecryptMessage (Kerberos) podem ser chamados ao mesmo tempo de dois threads diferentes em um único contexto de SSPI ( interface do provedor de suporte de segurança ) se um thread estiver criptografando e o outro estiver descriptografando. Se mais de um thread estiver sendo criptografado ou mais de um thread estiver descriptografando, cada thread deverá obter um contexto exclusivo.

Sintaxe

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Parâmetros

phContext [in]

Um identificador para o contexto de segurança a ser usado para descriptografar a mensagem.

pMessage [in, out]

Um ponteiro para uma estrutura SecBufferDesc . Na entrada, a estrutura faz referência a uma ou mais estruturas SecBuffer que podem ser do tipo SECBUFFER_DATA. O buffer contém a mensagem criptografada. A mensagem criptografada é descriptografada no local, substituindo o conteúdo original de seu buffer.

MessageSeqNo [in]

O número de sequência esperado pelo aplicativo de transporte, se houver. Se o aplicativo de transporte não mantiver números de sequência, esse parâmetro deverá ser definido como zero.

pfQOP [out]

Um ponteiro para uma variável do tipo ULONG que recebe sinalizadores específicos do pacote que indicam a qualidade da proteção.

Esse parâmetro pode ser o sinalizador a seguir.

Valor Significado
SECQOP_WRAP_NO_ENCRYPT ele mensagem não foi criptografado, mas um cabeçalho ou trailer foi produzido.

Observação

KERB_WRAP_NO_ENCRYPT tem o mesmo valor e o mesmo significado.

Valor retornado

Se a função verificar se a mensagem foi recebida na sequência correta, a função retornará SEC_E_OK.

Se a função não conseguir descriptografar a mensagem, ela retornará um dos seguintes códigos de erro.

Código de retorno Descrição
SEC_E_INCOMPLETE_MESSAGE Os dados no buffer de entrada estão incompletos. O aplicativo precisa ler mais dados do servidor e chamar DecryptMessage (Kerberos) novamente.
SEC_E_OUT_OF_SEQUENCE A mensagem não foi recebida na sequência correta.

Comentários

Às vezes, um aplicativo lê dados da parte remota, tenta descriptografá-los usando DecryptMessage (Kerberos) e descobre que DecryptMessage (Kerberos) foi bem-sucedido, mas os buffers de saída estão vazios. Esse é um comportamento normal, e os aplicativos devem ser capazes de lidar com ele.

Para obter informações sobre como interoperar com GSSAPI, consulte Interoperabilidade SSPI/Kerberos com GSSAPI.

Windows XP: Essa função também era conhecida como UnsealMessage. Os aplicativos agora devem usar Apenas DecryptMessage (Kerberos ).

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho Sspi.h (inclua Security.h)
Biblioteca Secur32.lib
DLL Secur32.dll

Confira também