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
0
SECBUFFER_TOKEN
Vazio.
1
SECBUFFER_PKG_PARAMS
Método.
2
SECBUFFER_PKG_PARAMS
URL.
3
SECBUFFER_PKG_PARAMS
HEntity. Para obter mais informações, consulte Buffers de entrada para a resposta do desafio digest.
4
SECBUFFER_PADDING
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
0
SECBUFFER_TOKEN
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.
1
SECBUFFER_DATA
Mensagem a ser assinada.
2
SECBUFFER_PADDING
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
SEC_I_RENEGOTIATE
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.
SEC_E_INVALID_HANDLE
O identificador de contexto especificado por phContext não é válido.
SEC_E_INVALID_TOKEN
O pMessage não continha um buffer de SECBUFFER_TOKEN válido ou continha poucos buffers.
SEC_E_OUT_OF_SEQUENCE
A contagem de nonce está fora de sequência.
SEC_E_NO_AUTHENTICATING_AUTHORITY
O contexto de segurança (phContext) deve ser revalidado.
STATUS_INVALID_PARAMETER
A contagem de nonce não é numérica.
SEC_E_QOP_NOT_SUPPORTED
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

Confira também

Funções SSPI

Secbuffer

Secbufferdesc

VerifySignature