Megosztás a következőn keresztül:


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.