Funzione MakeSignature (sspi.h)

La funzione MakeSignature genera un checksum crittografico del messaggio e include anche informazioni di sequenziazione per impedire la perdita o l'inserimento dei messaggi. MakeSignature consente all'applicazione di scegliere tra diversi algoritmi di crittografia, se supportati dal meccanismo scelto. La funzione MakeSignature usa il contesto di sicurezza a cui fa riferimento l'handle di contesto.

Questa funzione non è supportata dal provider di supporto per la sicurezza Schannel.

Sintassi

KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
  [in]      PCtxtHandle    phContext,
  [in]      unsigned long  fQOP,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo
);

Parametri

[in] phContext

Handle per il contesto di sicurezza da usare per firmare il messaggio.

[in] fQOP

Flag specifici del pacchetto che indicano la qualità della protezione. Un pacchetto di sicurezza può usare questo parametro per abilitare la selezione di algoritmi crittografici.

Quando si usa il provider di servizi di spostamento del digest, questo parametro deve essere impostato su zero.

[in, out] pMessage

Puntatore a una struttura SecBufferDesc . In input, la struttura fa riferimento a una o più strutture SecBuffer che contengono il messaggio da firmare. La funzione non elabora i buffer con l'attributo SECBUFFER_READONLY_WITH_CHECKSUM.

La struttura SecBufferDesc fa riferimento anche a una struttura SecBuffer di tipo SECBUFFER_TOKEN che riceve la firma.

Quando il provider di servizi di gestione del digest viene usato come protocollo di autenticazione HTTP, i buffer devono essere configurati come indicato di seguito.

Tipo di buffer #/buffer Significato
0
SECBUFFER_TOKEN
Vuoto.
1
SECBUFFER_PKG_PARAMS
Metodo.
2
SECBUFFER_PKG_PARAMS
URL.
3
SECBUFFER_PKG_PARAMS
HEntity. Per altre informazioni, vedere Buffer di input per la risposta alla sfida del digest.
4
SECBUFFER_PADDING
Vuoto. Riceve la firma.
 

Quando il SSP digest viene usato come meccanismo SASL, i buffer devono essere configurati come indicato di seguito.

Tipo di buffer #/buffer Significato
0
SECBUFFER_TOKEN
Vuoto. Riceve la firma. Questo buffer deve essere abbastanza grande per contenere la firma più grande possibile. Determinare le dimensioni necessarie chiamando la funzione QueryContextAttributes (Generale) e specificando SECPKG_ATTR_SIZES. Controllare il membro della struttura restituito SecPkgContext_SizescbMaxSignature.
1
SECBUFFER_DATA
Messaggio da firmare.
2
SECBUFFER_PADDING
Vuoto.

[in] MessageSeqNo

Numero di sequenza assegnato all'applicazione di trasporto al messaggio. Se l'applicazione di trasporto non mantiene i numeri di sequenza, questo parametro è zero.

Quando si usa il provider di servizi di spostamento del digest, questo parametro deve essere impostato su zero. Il provider di servizi di gestione della sequenza gestisce internamente la numerazione della sequenza.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce SEC_E_OK.

Se la funzione ha esito negativo, restituisce uno dei codici di errore seguenti.

Codice restituito Descrizione
SEC_I_RENEGOTIATE
La parte remota richiede una nuova sequenza handshake o l'applicazione ha appena avviato un arresto. Tornare al ciclo di negoziazione e chiamare di nuovo AcceptSecurityContext (Generale) o InitializeSecurityContext (Generale). Viene passato un buffer di input vuoto nella prima chiamata.
SEC_E_INVALID_HANDLE
L'handle di contesto specificato da phContext non è valido.
SEC_E_INVALID_TOKEN
pMessage non contiene un buffer valido SECBUFFER_TOKEN o troppo pochi buffer.
SEC_E_OUT_OF_SEQUENCE
Il conteggio nonce è fuori sequenza.
SEC_E_NO_AUTHENTICATING_AUTHORITY
Il contesto di sicurezza (phContext) deve essere riconvalidato.
STATUS_INVALID_PARAMETER
Il conteggio non è numerico.
SEC_E_QOP_NOT_SUPPORTED
La qualità della protezione negoziata tra il client e il server non includevano il controllo dell'integrità .

Commenti

La funzione MakeSignature genera una firma basata sul messaggio e sulla chiave di sessione per il contesto.

La funzione VerifySignature verifica i messaggi firmati dalla funzione MakeSignature .

Se l'applicazione di trasporto ha creato il contesto di sicurezza per supportare il rilevamento della sequenza e il chiamante fornisce un numero di sequenza, la funzione include queste informazioni nella firma. Ciò protegge dalla risposta, dall'inserimento e dall'eliminazione dei messaggi. Il pacchetto di sicurezza incorpora il numero di sequenza passato dall'applicazione di trasporto.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione sspi.h (includere Security.h)
Libreria Secur32.lib
DLL Secur32.dll

Vedi anche

Funzioni SSPI

SecBuffer

SecBufferDesc

VerifySignature