Delen via


Stream-contexten

Stream-contexten verwerken de beveiligde streamgeoriënteerde protocollen zoals SSL of PCT. SSPI biedt ondersteuning voor streamcontexten om dezelfde interface en vergelijkbaar referentiebeheer te delen. Het beveiligingsprotocol bevat zowel het streamverificatieschema als de recordindelingen.

Voor het bieden van streamgeoriënteerde protocollen hebben beveiligingspakketten die ondersteuning bieden voor streamcontexten de volgende proceskenmerken:

  • Het pakket stelt de vlag SECPKG_FLAG_STREAM in om aan te geven dat het ondersteuning biedt voor semantiek van stromen.

  • Transporttoepassingen vragen om semantiek voor stromen door de ISC_REQ_STREAM- en ASC_REQ_STREAM vlaggen in te stellen in de aanroepen naar de InitializeSecurityContext (Algemeen) en AcceptSecurityContext -functies (Algemeen).

  • De toepassing roept de functie QueryContextAttributes (Algemeen) aan met een SecPkgContext_StreamSizes structuur om een query uit te voeren op de beveiligingscontext voor het aantal buffers dat moet worden opgegeven en de grootten die moeten worden gereserveerd voor headers of trailers.

  • De toepassing biedt bufferdescriptors die u kunt besparen tijdens de daadwerkelijke verwerking van de gegevens. Door semantiek voor stromen op te geven, geeft de beller de bereidheid aan om extra verwerking uit te voeren, zodat het beveiligingspakket de blokkering van de berichten kan verwerken. In wezen geeft de aanroeper voor de functies MakeSignature en VerifySignature een lijst met buffers door. Wanneer een bericht wordt ontvangen van een kanaal dat streamgeoriënteerd is (zoals een TCP-poort), geeft de aanroeper als volgt een bufferlijst door.

    Buffer Lengte Buffertype
    1 Berichtlengte SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Het beveiligingspakket werkt vervolgens op de BLOB-. Als de functie correct wordt geretourneerd, ziet de bufferlijst er als volgt uit.

    Buffer Lengte Buffertype
    1 Lengte van koptekst SECBUFFER_STREAM_HEADER
    2 Gegevenslengte SECBUFFER_DATA
    3 Lengte van trailer SECBUFFER_STREAM_TRAILER
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Het pakket kan ook buffer 4 met lengte x en buffertype hebben geretourneerd SECBUFFER_EXTRA die aangeeft dat de gegevens in deze buffer deel uitmaken van de volgende record en nog niet zijn verwerkt. Als de berichtfunctie daarentegen de SEC_E_INCOMPLETE_MESSAGE foutcode retourneert, ziet de geretourneerde bufferlijst er als volgt uit.

    Buffer Lengte Buffertype
    1 x SECBUFFER_MISSING

     

    Dit geeft aan dat er meer gegevens nodig waren om de record te verwerken. In tegenstelling tot de meeste fouten die worden geretourneerd door een berichtfunctie, geeft dit buffertype niet aan dat de context is aangetast. In plaats daarvan wordt aangegeven dat er meer gegevens nodig zijn. beveiligingspakketten mogen hun status niet bijwerken in deze voorwaarde.

    Op dezelfde manier kan de beller aan de kant van de communicatie de MakeSignature functie aanroepen. Het beveiligingspakket moet mogelijk de buffer opnieuw toewijzen of dingen kopiëren. De beller kan efficiënter zijn door als volgt een bufferlijst op te geven.

    Buffer Lengte Type
    1 Lengte van koptekst SECBUFFER_STREAM_HEADER
    2 Gegevenslengte SECBUFFER_DATA
    3 Lengte van trailer SECBUFFER_STREAM_TRAILER

     

    Hierdoor kan de beller de buffers efficiënter gebruiken. Door de functie QueryContextAttributes aan te roepen om de hoeveelheid ruimte te bepalen die moet worden gereserveerd voordat MakeSignature-wordt aangeroepen, is de bewerking efficiënter voor de toepassing en het beveiligingspakket.