Udostępnij przez


DecryptMessage (NTLM), funkcja

Funkcja DecryptMessage (NTLM) odszyfrowuje komunikat. Niektóre pakiety nie szyfrują i odszyfrowywają wiadomości, ale wykonują i sprawdzają skrót integralności.

Uwaga

Funkcja EncryptMessage (NTLM) i DecryptMessage (NTLM) może być wywoływana jednocześnie z dwóch różnych wątków w kontekście jednego interfejsu dostawcy obsługi zabezpieczeń (SSPI), jeśli jeden wątek jest szyfrujący, a drugi odszyfrowuje. Jeśli więcej niż jeden wątek jest szyfrowane lub więcej niż jeden wątek jest odszyfrowywać, każdy wątek powinien uzyskać unikatowy kontekst.

Składnia

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

Parametry

phContext [w]

Dojście do kontekstu zabezpieczeń , który ma być używany do odszyfrowania wiadomości.

pMessage [wejście, wyjście]

Wskaźnik do struktury SecBufferDesc . W danych wejściowych struktura odwołuje się do co najmniej jednej struktury SecBuffer . Co najmniej jeden z nich musi być typu SECBUFFER_DATA. Ten bufor zawiera zaszyfrowany komunikat. Zaszyfrowana wiadomość jest odszyfrowywane, zastępując oryginalną zawartość buforu.

MessageSeqNo [w]

Numer sekwencji oczekiwany przez aplikację transportu, jeśli istnieje. Jeśli aplikacja transportowa nie obsługuje numerów sekwencji, ten parametr musi być ustawiony na zero.

pfQOP [wyjście]

Wskaźnik do zmiennej typu ULONG , która odbiera flagi specyficzne dla pakietu, które wskazują jakość ochrony.

Ten parametr może być następującą flagą.

Wartość Znaczenie
SECQOP_WRAP_NO_ENCRYPT
Wiadomość nie została zaszyfrowana, ale utworzono nagłówek lub przyczepę.
Nuta: KERB_WRAP_NO_ENCRYPT ma tę samą wartość i to samo znaczenie.

Wartość zwracana

Jeśli funkcja sprawdza, czy komunikat został odebrany w odpowiedniej sekwencji, funkcja zwraca SEC_E_OK.

Jeśli funkcja nie może odszyfrować komunikatu, zwraca jeden z następujących kodów błędów.

Kod powrotny Opis
SEC_E_INCOMPLETE_MESSAGE Dane w buforze wejściowym są niekompletne. Aplikacja musi odczytać więcej danych z serwera i ponownie wywołać DecryptMessage (NTLM).
SEC_E_OUT_OF_SEQUENCE Komunikat nie został odebrany w prawidłowej kolejności.

Uwagi

Czasami aplikacja odczytuje dane ze strony zdalnej, spróbuje je odszyfrować przy użyciu funkcji DecryptMessage (NTLM) i wykryje, że komunikat DecryptMessage (NTLM) zakończył się pomyślnie, ale wyjściowe są puste. Jest to normalne zachowanie, a aplikacje muszą mieć do czynienia z nim.

Windows XP: Ta funkcja była również znana jako UnsealMessage. Aplikacje powinny teraz używać tylko funkcji DecryptMessage (NTLM).

Wymagania

Wymaganie Wartość
Minimalny obsługiwany klient Windows XP [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer Windows Server 2003 [tylko aplikacje klasyczne]
Nagłówek Sspi.h (w tym Security.h)
Biblioteka Secur32.lib powiedział:
DLL Secur32.dll

Zobacz też