Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen EncryptMessage (Digest) krypterar ett meddelande för att tillhandahålla sekretess. EncryptMessage (Digest) gör att programmet kan välja bland kryptografiska algoritmer som stöds av den valda mekanismen. Funktionen EncryptMessage (Digest) använder säkerhetskontexten som refereras av kontexthandtaget. Vissa paket har inte meddelanden som ska krypteras eller dekrypteras, utan ger i stället en integritetshash som kan kontrolleras.
Den här funktionen är endast tillgänglig som en SASL-mekanism.
Anmärkning
EncryptMessage (Digest) och DecryptMessage (Digest) kan anropas samtidigt från två olika trådar i en enda SSPI-kontext ( Security Support Provider Interface ) om en tråd krypteras och den andra dekrypterar. Om mer än en tråd krypteras, eller om mer än en tråd dekrypterar, bör varje tråd få en unik kontext.
Syntax
SECURITY_STATUS SEC_ENTRY EncryptMessage(
PCtxtHandle phContext,
unsigned long fQOP,
PSecBufferDesc pMessage,
unsigned long MessageSeqNo
);
Parameterar
-
phContext [in]
-
En referens till säkerhetskontexten som ska användas för att kryptera meddelandet.
-
fQOP [in]
-
Paketspecifika flaggor som anger skyddets kvalitet. Ett säkerhetspaket kan använda den här parametern för att aktivera valet av kryptografiska algoritmer.
När du använder Digest SSP måste den här parametern vara inställd på noll.
-
pMessage [in, out]
-
En pekare till en SecBufferDesc-struktur . Vid indata refererar strukturen till en eller flera SecBuffer-strukturer som kan vara av typen SECBUFFER_DATA. Bufferten innehåller meddelandet som ska krypteras. Meddelandet krypteras på plats och skriver över det ursprungliga innehållet i strukturen.
Funktionen bearbetar inte buffertar med attributet SECBUFFER_READONLY.
Längden på den SecBuffer-struktur som innehåller meddelandet får inte vara större än cbMaximumMessage, som hämtas från funktionen QueryContextAttributes (Digest) (SECPKG_ATTR_STREAM_SIZES).
När du använder Digest SSP måste det finnas en andra buffert av typen SECBUFFER_PADDING eller SEC_BUFFER_DATA för att lagra signaturinformation . Om du vill hämta storleken på utdatabufferten anropar du funktionen QueryContextAttributes (Digest) och anger SECPKG_ATTR_SIZES. Funktionen returnerar en SecPkgContext_Sizes struktur. Storleken på utdatabufferten är summan av värdena i cbMaxSignature - och cbBlockSize-medlemmarna .
Program som inte använder SSL måste ange en SecBuffer av typen SECBUFFER_PADDING.
-
MessageSeqNo [in]
-
Sekvensnumret som transportprogrammet tilldelade meddelandet. Om transportprogrammet inte underhåller sekvensnummer måste den här parametern vara noll.
När du använder Digest SSP måste den här parametern vara inställd på noll. Digest SSP hanterar sekvensnumrering internt.
Returvärde
Om funktionen lyckas returnerar funktionen SEC_E_OK.
Om funktionen misslyckas returneras någon av följande felkoder.
| Returkod | Beskrivning |
|---|---|
|
Utdatabufferten är för liten. Mer information finns i Anmärkningar. |
|
Programmet refererar till en kontext som redan har stängts. Ett korrekt skrivet program bör inte få det här felet. |
|
Det chiffer som valts för säkerhetskontexten stöds inte. |
|
Det finns inte tillräckligt med minne för att slutföra den begärda åtgärden. |
|
En kontextreferens som inte är giltig angavs i parametern phContext . |
|
Det gick inte att hitta någon buffert av typen SECBUFFER_DATA. |
|
Varken konfidentialitet eller integritet stöds av säkerhetskontexten. |
Anmärkningar
Funktionen EncryptMessage (Digest) krypterar ett meddelande baserat på meddelandet och sessionsnyckeln från en säkerhetskontext.
Om transportprogrammet skapade säkerhetskontexten för att stödja sekvensidentifiering och anroparen tillhandahåller ett sekvensnummer, innehåller funktionen den här informationen med det krypterade meddelandet. Inklusive den här informationen skyddar mot repris, infogning och undertryckning av meddelanden. Säkerhetspaketet innehåller sekvensnumret som skickas från transportprogrammet.
När du använder Digest SSP hämtar du storleken på utdatabufferten genom att anropa funktionen QueryContextAttributes (Digest) och ange SECPKG_ATTR_SIZES. Funktionen returnerar en SecPkgContext_Sizes struktur. Storleken på utdatabufferten är summan av värdena i cbMaxSignature - och cbBlockSize-medlemmarna .
Anmärkning
Dessa buffertar måste anges i den ordning som visas.
| Bufferttyp | Beskrivning |
|---|---|
| SECBUFFER_STREAM_HEADER |
Används internt. Ingen initiering krävs. |
| SECBUFFER_DATA |
Innehåller det klartextmeddelande som ska krypteras. |
| SECBUFFER_STREAM_TRAILER |
Används internt. Ingen initiering krävs. |
| SECBUFFER_EMPTY |
Används internt. Ingen initiering krävs. Storleken kan vara noll. |
För optimala prestanda bör pMessage-strukturerna allokeras från sammanhängande minne.
Windows XP: Den här funktionen kallades även SealMessage. Program bör nu endast använda EncryptMessage (Digest).
Krav
| Krav | Värde |
|---|---|
| Lägsta klient som stöds |
Windows XP [endast skrivbordsappar] |
| Lägsta server som stöds |
Windows Server 2003 [endast skrivbordsappar] |
| Header |
|
| Bibliotek |
|
| DLL |
|
Se även