Stream-környezetek
A streamkörnyezetek kezelik a biztonságos streamorientált protokollokat, például az SSL-t vagy a PCT-t. Ugyanazon felület és hasonló hitelesítő adatok kezelése érdekében az SSPI támogatja a streamkörnyezeteket. A biztonsági protokoll magában foglalja a stream-hitelesítési sémát és a rekordformátumokat is.
A streamorientált protokollok biztosításához a streamkörnyezeteket támogató biztonsági csomagok a következő folyamatjellemzőkkel rendelkeznek:
A csomag beállítja a SECPKG_FLAG_STREAM jelzőt, amely jelzi, hogy támogatja a stream szemantikáját.
Az átviteli alkalmazások stream-szemantikát kérnek az InitializeSecurityContext (Általános) és AcceptSecurityContext (általános) függvény hívásaiban szereplő ISC_REQ_STREAM és ASC_REQ_STREAM jelzők beállításával.
Az alkalmazás meghívja a QueryContextAttributes (Általános) függvényt egy SecPkgContext_StreamSizes szerkezettel, amely lekérdezi a biztonsági környezetet, a szükséges pufferek számát, valamint az élőfejek vagy pótkocsik foglalási méretét.
Az alkalmazás pufferleírókat biztosít az adatok tényleges feldolgozása során. A stream szemantikájának megadásával a hívó további feldolgozásra való hajlandóságot jelez, hogy a biztonsági csomag kezelni tudja az üzenetek blokkolását. A MakeSignature és VerifySignature függvények esetében a hívó a pufferek listájában halad át. Ha egy stream-orientált csatornáról (például TCP-portról) érkeznek üzenetek, a hívó az alábbiak szerint halad át egy pufferlistában.
Puffer Hosszúság Puffer típusa 1 Üzenet hossza SECBUFFER_DATA 2 0 SECBUFFER_EMPTY 3 0 SECBUFFER_EMPTY 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY A biztonsági csomag ezután a BLOBműködik. Ha a függvény sikeresen visszatér, a pufferlista az alábbihoz hasonlóan néz ki.
Puffer Hosszúság Puffer típusa 1 Fejléc hossza SECBUFFER_STREAM_HEADER 2 Adathossz SECBUFFER_DATA 3 Pótkocsi hossza SECBUFFER_STREAM_TRAILER 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY A csomag a 4. puffert is visszaadhatta volna x hosszúságú és SECBUFFER_EXTRA puffertípussal, amely azt jelzi, hogy a pufferben lévő adatok a következő rekord részét képezik, és még nem dolgozták fel. Ezzel szemben, ha az üzenetfüggvény a SEC_E_INCOMPLETE_MESSAGE hibakódot adja vissza, a visszaadott pufferlista az alábbihoz hasonlóan fog kinézni.
Puffer Hosszúság Puffer típusa 1 x SECBUFFER_MISSING Ez azt jelzi, hogy több adatra volt szükség a rekord feldolgozásához. Az üzenetfüggvényekből visszaadott legtöbb hibával ellentétben ez a puffertípus nem jelzi, hogy a környezet sérült. Ehelyett azt jelzi, hogy több adatra van szükség. biztonsági csomagok ebben a feltételben nem frissíthetik állapotukat.
Hasonlóképpen, a kommunikáció feladó oldalán a hívó meghívhatja a MakeSignature függvényt. Előfordulhat, hogy a biztonsági csomagnak újra kell helyeznie a puffert, vagy át kell másolnia a dolgokat. A hívó hatékonyabbá teheti a pufferlistát az alábbiak szerint.
Puffer Hosszúság Típus 1 Fejléc hossza SECBUFFER_STREAM_HEADER 2 Adathossz SECBUFFER_DATA 3 Pótkocsi hossza SECBUFFER_STREAM_TRAILER Így a hívó hatékonyabban használhatja a puffereket. Ha meghívja a QueryContextAttributes függvényt, hogy meghatározza a lefoglalni kívánt területet MakeSignaturehívása előtt, a művelet hatékonyabb az alkalmazás és a biztonsági csomag számára.