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 (Digest) szyfruje komunikat w celu zapewnienia prywatności. Funkcja EncryptMessage (skrót) umożliwia aplikacji wybór spośród algorytmów kryptograficznych obsługiwanych przez wybrany mechanizm. Funkcja EncryptMessage (Digest) używa kontekstu zabezpieczeń , do których odwołuje się dojście 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ć.
Ta funkcja jest dostępna tylko jako mechanizm SASL.
Uwaga
Funkcja EncryptMessage (Skrót) i DecryptMessage (Skrót) 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 odszyfrowywać. 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(
PCtxtHandle phContext,
unsigned long fQOP,
PSecBufferDesc pMessage,
unsigned long 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.
W przypadku korzystania z dostawcy usług udostępnionych skrótów ten parametr musi być ustawiony na zero.
-
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 (Digest) (SECPKG_ATTR_STREAM_SIZES).
W przypadku korzystania z dostawcy SSP skrótu musi istnieć drugi bufor typu SECBUFFER_PADDING lub SEC_BUFFER_DATA do przechowywania informacji o podpisie . Aby uzyskać rozmiar buforu wyjściowego, wywołaj funkcję QueryContextAttributes (Digest) i określ SECPKG_ATTR_SIZES. Funkcja zwróci strukturę SecPkgContext_Sizes . Rozmiar buforu wyjściowego jest sumą wartości w elementach członkowskich cbMaxSignature i cbBlockSize .
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.
W przypadku korzystania z dostawcy usług udostępnionych skrótów ten parametr musi być ustawiony na zero. Skrót dostawcy usług udostępnionych zarządza numerowaniem sekwencji wewnętrznie.
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 (Digest) 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.
Jeśli używasz dostawcy SSP skrótu, pobierz rozmiar buforu wyjściowego, wywołując funkcję QueryContextAttributes (Digest) i określając SECPKG_ATTR_SIZES. Funkcja zwróci strukturę SecPkgContext_Sizes . Rozmiar buforu wyjściowego jest sumą wartości w elementach członkowskich cbMaxSignature i cbBlockSize .
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 (szyfrowane).
Wymagania
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient |
Windows XP [tylko aplikacje klasyczne] |
| Minimalny obsługiwany serwer |
Windows Server 2003 [tylko aplikacje klasyczne] |
| Nagłówek |
|
| Biblioteka |
|
| DLL |
|
Zobacz też