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 (Kerberos) szyfruje komunikat w celu zapewnienia prywatności. Funkcja EncryptMessage (Kerberos) umożliwia aplikacji wybór spośród algorytmów kryptograficznych obsługiwanych przez wybrany mechanizm. Funkcja EncryptMessage (Kerberos) używa kontekstu zabezpieczeń , do których odwołuje się uchwyt 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 (Kerberos) i DecryptMessage (Kerberos) 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.
Nuta: 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 (Kerberos) (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 komunikatu 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 |
|---|---|
|
Bufor wyjściowy jest za mały. Aby uzyskać więcej informacji zobacz uwagi. |
|
Aplikacja odwołuje się do kontekstu, który został już zamknięty. Poprawnie napisana aplikacja nie powinna otrzymać tego błędu. |
|
Szyfr wybrany dla kontekstu zabezpieczeń nie jest obsługiwany. |
|
Za mało pamięci, aby ukończyć żądaną akcję. |
|
Uchwyt kontekstu, który nie jest prawidłowy, został określony w parametrze phContext . |
|
Nie znaleziono bufora typu SECBUFFER_DATA. |
|
Ani poufność, ani integralność nie są obsługiwane przez kontekst zabezpieczeń. |
Uwagi
Funkcja EncryptMessage (Kerberos) 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 protokołu EncryptMessage (Kerberos).
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 |