Função DecryptMessage (sspi.h)
A função DecryptMessage (Digest) descriptografa uma mensagem. Alguns pacotes não criptografam e descriptografam mensagens, mas executam e marcar um hash de integridade.
O SSP ( provedor de suporte de segurança ) digest fornece confidencialidade de criptografia e descriptografia para mensagens trocadas entre o cliente e o servidor apenas como um mecanismo SASL.
Sintaxe
SECURITY_STATUS SEC_ENTRY DecryptMessage(
[in] PCtxtHandle phContext,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo,
[out] unsigned long *pfQOP
);
Parâmetros
[in] phContext
Um identificador para o contexto de segurança a ser usado para descriptografar a mensagem.
[in, out] pMessage
Um ponteiro para uma estrutura SecBufferDesc . Na entrada, a estrutura faz referência a uma ou mais estruturas do SecBuffer . Pelo menos um deles deve ser do tipo SECBUFFER_DATA. Esse buffer contém a mensagem criptografada. A mensagem criptografada é descriptografada no local, substituindo o conteúdo original de seu buffer.
Ao usar o SSP do Digest, na entrada, a estrutura faz referência a uma ou mais estruturas do SecBuffer . Um deles deve ser do tipo SECBUFFER_DATA ou SECBUFFER_STREAM e deve conter a mensagem criptografada.
[in] MessageSeqNo
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.
Ao usar o SSP do Digest, esse parâmetro deve ser definido como zero. O SSP do Digest gerencia a numeração de sequência internamente.
[out] pfQOP
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 um dos sinalizadores a seguir.
Valor | Significado |
---|---|
|
A mensagem não foi criptografada, mas um cabeçalho ou trailer foi produzido.
Nota KERB_WRAP_NO_ENCRYPT tem o mesmo valor e o mesmo significado.
|
|
Ao usar o SSP digest, use esse sinalizador quando o contexto de segurança estiver definido para verificar apenas a assinatura . Para obter mais informações, consulte Qualidade da Proteção. |
Retornar valor
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 |
---|---|
|
O buffer de mensagem é muito pequeno. Usado com o SSP do Digest. |
|
Não há suporte para a criptografia escolhida para o contexto de segurança. Usado com o SSP do Digest. |
|
Os dados no buffer de entrada estão incompletos. O aplicativo precisa ler mais dados do servidor e chamar DecryptMessage (Digest) novamente. |
|
Um identificador de contexto que não é válido foi especificado no parâmetro phContext . Usado com o SSP do Digest. |
|
A mensagem foi alterada. Usado com o SSP do Digest. |
|
A mensagem não foi recebida na sequência correta. |
|
Não há suporte para confidencialidade nem integridade no contexto de segurança. Usado com o SSP do Digest. |
Comentários
Às vezes, um aplicativo lê dados da parte remota, tenta descriptografá-los usando DecryptMessage (Digest) e descobre que DecryptMessage (Digest) 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.
Windows XP: Essa função também era conhecida como UnsealMessage. Os aplicativos agora devem usar apenas DecryptMessage (Digest).
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] |
Plataforma de Destino | Windows |
Cabeçalho | sspi.h (inclua Security.h) |
Biblioteca | Secur32.lib |
DLL | Secur32.dll |