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 |
---|---|
|
Vuoto. |
|
Metodo. |
|
URL. |
|
HEntity. Per altre informazioni, vedere Buffer di input per la risposta alla sfida del digest. |
|
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 |
---|---|
|
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. |
|
Messaggio da firmare. |
|
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 |
---|---|
|
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. |
|
L'handle di contesto specificato da phContext non è valido. |
|
pMessage non contiene un buffer valido SECBUFFER_TOKEN o troppo pochi buffer. |
|
Il conteggio nonce è fuori sequenza. |
|
Il contesto di sicurezza (phContext) deve essere riconvalidato. |
|
Il conteggio non è numerico. |
|
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 |