Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja EncryptMessage (Negotiate) szyfruje komunikat w celu zapewnienia prywatności. Funkcja EncryptMessage (Negotiate) umożliwia aplikacji wybór spośród algorytmów kryptograficznych obsługiwanych przez wybrany mechanizm. Funkcja EncryptMessage (Negotiate) używa kontekstu zabezpieczeń , do których odwołuje się uchwyt kontekstu kontekstu. Niektóre pakiety nie mają komunikatów do szyfrowania ani odszyfrowywania, ale raczej zapewniają skrót integralności, który można sprawdzić.
Uwaga
Funkcja EncryptMessage (Negotiate) i DecryptMessage (Negotiate) 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 EncryptMessage(
_In_ PCtxtHandle phContext,
_In_ ULONG fQOP,
_Inout_ PSecBufferDesc pMessage,
_In_ ULONG MessageSeqNo
);
Parametry
phContext [in] Dojście do kontekstu zabezpieczeń , który ma być używany do szyfrowania komunikatu.
fQOP [in] Flagi specyficzne dla pakietu wskazujące jakość ochrony. Pakiet zabezpieczeń może użyć tego parametru, aby umożliwić wybór algorytmów kryptograficznych.
Ten parametr może być następującą flagą.
| Wartość | Znaczenie |
|---|---|
| SECQOP_WRAP_NO_ENCRYPT | Utwórz nagłówek lub przyczepę, ale nie szyfruj wiadomości. |
Uwaga
KERB_WRAP_NO_ENCRYPT ma tę samą wartość i to samo znaczenie.
pMessage [in, out] Wskaźnik do struktury SecBufferDesc . W danych wejściowych struktura odwołuje się do co najmniej jednej struktury SecBuffer , która może być typu SECBUFFER_DATA. Ten bufor zawiera komunikat do zaszyfrowania. Komunikat jest szyfrowany w miejscu, zastępując oryginalną zawartość struktury.
Funkcja nie przetwarza z atrybutem SECBUFFER_READONLY.
Długość struktury SecBuffer , która zawiera komunikat, nie może być większa niż cbMaximumMessage, która jest uzyskiwana z funkcji QueryContextAttributes (Negotiate) (SECPKG_ATTR_STREAM_SIZES).
Aplikacje, które nie korzystają z protokołu SSL, muszą dostarczyć secBuffer typu SECBUFFER_PADDING.
MessageSeqNo [in] Numer sekwencji przypisany do wiadomości przez aplikację transportu. Jeśli aplikacja transportowa nie obsługuje numerów sekwencji, ten parametr musi mieć wartość zero.
Wartość zwracana
Jeśli funkcja powiedzie się, funkcja zwróci SEC_E_OK.
Jeśli funkcja zakończy się niepowodzeniem, zwraca jeden z następujących kodów błędów.
| Kod powrotny | Opis |
|---|---|
| SEC_E_BUFFER_TOO_SMALL | Bufor wyjściowy jest za mały. Aby uzyskać więcej informacji zobacz uwagi. |
| SEC_E_CONTEXT_EXPIRED | Aplikacja odwołuje się do kontekstu, który został już zamknięty. Poprawnie napisana aplikacja nie powinna otrzymać tego błędu. |
| SEC_E_CRYPTO_SYSTEM_INVALID | Szyfr wybrany dla kontekstu zabezpieczeń nie jest obsługiwany. |
| SEC_E_INSUFFICIENT_MEMORY | Za mało pamięci, aby ukończyć żądaną akcję. |
| SEC_E_INVALID_HANDLE | Uchwyt kontekstu, który nie jest prawidłowy, został określony w parametrze phContext . |
| SEC_E_INVALID_TOKEN | Nie znaleziono bufora typu SECBUFFER_DATA. |
| SEC_E_QOP_NOT_SUPPORTED | Ani poufność, ani integralność nie są obsługiwane przez kontekst zabezpieczeń. |
Uwagi
Funkcja EncryptMessage (Negotiate) szyfruje komunikat na podstawie komunikatu i klucza sesji z kontekstu zabezpieczeń.
Jeśli aplikacja transportowa utworzyła kontekst zabezpieczeń do obsługi wykrywania sekwencji, a obiekt wywołujący udostępnia numer sekwencji, funkcja zawiera te informacje z zaszyfrowanym komunikatem. Dołączenie tych informacji chroni przed odtwarzaniem, wstawianiem i pomijaniem komunikatów. Pakiet zabezpieczeń zawiera numer sekwencji przekazywany z aplikacji transportowej.
Uwaga
Te muszą być podane w podanej kolejności.
| Typ buforu | Opis |
|---|---|
| SECBUFFER_STREAM_HEADER | Używane wewnętrznie. Nie jest wymagane inicjowanie. |
| SECBUFFER_DATA | Zawiera komunikat w postaci zwykłego tekstu do zaszyfrowania. |
| SECBUFFER_STREAM_TRAILER | Używane wewnętrznie. Nie jest wymagane inicjowanie. |
| SECBUFFER_EMPTY | Używane wewnętrznie. Nie jest wymagane inicjowanie. Rozmiar może być zerowy. |
Aby uzyskać optymalną wydajność, struktury pMessage powinny być przydzielane z ciągłej pamięci.
Windows XP: Ta funkcja była również znana jako SealMessage. Aplikacje powinny teraz używać tylko funkcji EncryptMessage (Negotiate).
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 (include Security.h) |
| Biblioteka | Secur32.lib |
| DLL | Secur32.dll |