Função MakeSignature (sspi.h)
A função MakeSignature gera uma soma de verificação criptográfica da mensagem e também inclui informações de sequenciamento para evitar perda ou inserção de mensagens. MakeSignature permite que o aplicativo escolha entre vários algoritmos criptográficos, se compatível com o mecanismo escolhido. A função MakeSignature usa o contexto de segurança referenciado pelo identificador de contexto.
Essa função não tem suporte do SSP ( provedor de suporte de segurança ) do Schannel.
Sintaxe
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
[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 assinar 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 Digest SSP, 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 contêm a mensagem a ser assinada. A função não processa buffers com o atributo SECBUFFER_READONLY_WITH_CHECKSUM.
A estrutura SecBufferDesc também faz referência a uma estrutura SecBuffer do tipo SECBUFFER_TOKEN que recebe a assinatura.
Quando o Digest SSP é usado como um protocolo de autenticação HTTP, os buffers devem ser configurados da seguinte maneira.
Tipo de buffer #/buffer | Significado |
---|---|
|
Vazio. |
|
Método. |
|
URL. |
|
HEntity. Para obter mais informações, consulte Buffers de entrada para a resposta do desafio digest. |
|
Vazio. Recebe a assinatura. |
Quando o Digest SSP é usado como um mecanismo SASL, os buffers devem ser configurados da seguinte maneira.
Tipo de buffer #/buffer | Significado |
---|---|
|
Vazio. Recebe a assinatura. Esse buffer deve ser grande o suficiente para conter a maior assinatura possível. Determine o tamanho necessário chamando a função QueryContextAttributes (Geral) e especificando SECPKG_ATTR_SIZES. Verifique o membro da estrutura de SecPkgContext_Sizes retornado cbMaxSignature. |
|
Mensagem a ser assinada. |
|
Vazio. |
[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 será zero.
Ao usar o Digest SSP, esse parâmetro deve ser definido como zero. O Digest SSP gerencia a numeração de sequência internamente.
Retornar valor
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 |
---|---|
|
A parte remota requer uma nova sequência de handshake ou o aplicativo acabou de iniciar um desligamento. Retorne ao loop de negociação e chame AcceptSecurityContext (Geral) ou InitializeSecurityContext (Geral) novamente. Um buffer de entrada vazio é passado na primeira chamada. |
|
O identificador de contexto especificado por phContext não é válido. |
|
O pMessage não continha um buffer de SECBUFFER_TOKEN válido ou continha poucos buffers. |
|
A contagem de nonce está fora de sequência. |
|
O contexto de segurança (phContext) deve ser revalidado. |
|
A contagem de nonce não é numérica. |
|
A qualidade da proteção negociada entre o cliente e o servidor não incluía a verificação de integridade . |
Comentários
A função MakeSignature gera uma assinatura baseada na mensagem e na chave de sessão para o contexto.
A função VerifySignature verifica as mensagens assinadas pela função MakeSignature .
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 na assinatura. Isso protege contra resposta, 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.
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 |