Função EncryptMessage (sspi.h)
A função EncryptMessage (Digest) criptografa uma mensagem para fornecer privacidade. EncryptMessage (Digest) permite que o aplicativo escolha entre algoritmos criptográficos compatíveis com o mecanismo escolhido. A função EncryptMessage (Digest) usa o contexto de segurança referenciado pelo identificador de contexto. Alguns pacotes não têm mensagens a serem criptografadas ou descriptografadas, mas fornecem um hash de integridade que pode ser verificado.
Essa função está disponível apenas como um mecanismo SASL.
Sintaxe
SECURITY_STATUS SEC_ENTRY EncryptMessage(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
Parâmetros
[in] phContext
Um identificador para o contexto de segurança a ser usado para criptografar a mensagem.
[in] fQOP
Sinalizadores específicos do pacote que indicam a qualidade da proteção. Um pacote de segurança pode usar esse parâmetro para habilitar a seleção de algoritmos criptográficos.
Ao usar o SSP do Digest, esse parâmetro deve ser definido como zero.
[in, out] pMessage
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. Esse buffer contém a mensagem a ser criptografada. A mensagem é criptografada no local, substituindo o conteúdo original da estrutura.
A função não processa buffers com o atributo SECBUFFER_READONLY.
O comprimento da estrutura SecBuffer que contém a mensagem não deve ser maior que cbMaximumMessage, que é obtido da função QueryContextAttributes (Digest) (SECPKG_ATTR_STREAM_SIZES).
Ao usar o SSP digest, deve haver um segundo buffer do tipo SECBUFFER_PADDING ou SEC_BUFFER_DATA para armazenar informações de assinatura . Para obter o tamanho do buffer de saída, chame a função QueryContextAttributes (Digest) e especifique SECPKG_ATTR_SIZES. A função retornará uma estrutura SecPkgContext_Sizes . O tamanho do buffer de saída é a soma dos valores nos membros cbMaxSignature e cbBlockSize .
Os aplicativos que não usam SSL devem fornecer um SecBuffer do tipo SECBUFFER_PADDING.
[in] MessageSeqNo
O número de sequência que o aplicativo de transporte atribuiu à mensagem. Se o aplicativo de transporte não mantiver números de sequência, esse parâmetro deverá ser 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.
Valor retornado
Se a função for bem-sucedida, a função retornará SEC_E_OK.
Se a função falhar, ela retornará um dos seguintes códigos de erro.
Código de retorno | Descrição |
---|---|
|
O buffer de saída é muito pequeno. Para obter mais informações, consulte Comentários. |
|
O aplicativo está fazendo referência a um contexto que já foi fechado. Um aplicativo escrito corretamente não deve receber esse erro. |
|
Não há suporte para a criptografia escolhida para o contexto de segurança. |
|
Não há memória suficiente disponível para concluir a ação solicitada. |
|
Um identificador de contexto que não é válido foi especificado no parâmetro phContext . |
|
Nenhum buffer de tipo SECBUFFER_DATA foi encontrado. |
|
Não há suporte para confidencialidade nem integridade no contexto de segurança. |
Comentários
A função EncryptMessage (Digest) criptografa uma mensagem com base na mensagem e na chave de sessão de um contexto de segurança.
Se o aplicativo de transporte criou o contexto de segurança para dar suporte à detecção de sequência e o chamador fornecer um número de sequência, a função incluirá essas informações com a mensagem criptografada. A inclusão dessas informações protege contra reprodução, inserção e supressão de mensagens. O pacote de segurança incorpora o número de sequência passado para baixo do aplicativo de transporte.
Ao usar o SSP digest, obtenha o tamanho do buffer de saída chamando a função QueryContextAttributes (Digest) e especificando SECPKG_ATTR_SIZES. A função retornará uma estrutura SecPkgContext_Sizes . O tamanho do buffer de saída é a soma dos valores nos membros cbMaxSignature e cbBlockSize .
Tipo de buffer | Descrição |
---|---|
SECBUFFER_STREAM_HEADER | Usado internamente. Nenhuma inicialização necessária. |
SECBUFFER_DATA | Contém a mensagem de texto sem formatação a ser criptografada. |
SECBUFFER_STREAM_TRAILER | Usado internamente. Nenhuma inicialização necessária. |
SECBUFFER_EMPTY | Usado internamente. Nenhuma inicialização necessária. O tamanho pode ser zero. |
Para obter o desempenho ideal, as estruturas pMessage devem ser alocadas da memória contígua.
Windows XP: Essa função também era conhecida como SealMessage. Os aplicativos agora devem usar Somente EncryptMessage (Digest).
Requisitos
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 |
Confira também
AcceptSecurityContext (Digest)
InitializeSecurityContext (Digest)