Udostępnij za pośrednictwem


Konteksty strumienia

Konteksty strumieni obsługują bezpieczne protokoły zorientowane na strumień, takie jak SSL lub PCT. W interesie udostępniania tego samego interfejsu i podobnego zarządzania poświadczeniami interfejs SSPI zapewnia obsługę kontekstów strumienia. Protokół zabezpieczeń obejmuje zarówno schemat uwierzytelniania strumienia, jak i formaty rekordów.

Aby zapewnić protokoły zorientowane na strumień, pakiety zabezpieczeń obsługujące konteksty strumienia mają następujące cechy procesu:

  • Pakiet ustawia flagę SECPKG_FLAG_STREAM, aby wskazać, że obsługuje semantykę strumienia.

  • Aplikacje transportu żądają semantyki strumienia, ustawiając flagi ISC_REQ_STREAM i ASC_REQ_STREAM w wywołaniach funkcji InitializeSecurityContext (Ogólne) iAcceptSecurityContext (Ogólne).

  • Aplikacja wywołuje funkcję QueryContextAttributes (General) ze strukturą SecPkgContext_StreamSizes w celu wykonywania zapytań dotyczących kontekstu zabezpieczeń liczby, które mają być udostępniane, oraz rozmiarów, które należy zarezerwować dla nagłówków lub przyczep.

  • Aplikacja udostępnia deskryptory do stracenia podczas rzeczywistego przetwarzania danych. Określając semantyka strumienia, obiekt wywołujący wskazuje gotowość do dodatkowego przetwarzania, dzięki czemu pakiet zabezpieczeń może obsługiwać blokowanie komunikatów. W istocie w przypadku funkcji MakeSignature i VerifySignature obiekt wywołujący przekazuje listę. Po odebraniu komunikatu z kanału, który jest zorientowany na strumień (na przykład port TCP), obiekt wywołujący przechodzi na liście w następujący sposób.

    Bufor Długość Typ buforu
    1 Długość komunikatu SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Następnie pakiet zabezpieczeń działa na BLOB. Jeśli funkcja zostanie pomyślnie zwrócona, lista będzie wyglądać następująco.

    Bufor Długość Typ buforu
    1 Długość nagłówka SECBUFFER_STREAM_HEADER
    2 Długość danych SECBUFFER_DATA
    3 Długość przyczepy SECBUFFER_STREAM_TRAILER
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Pakiet mógł również zwrócić bufor #4 o długości x i typ buforu SECBUFFER_EXTRA wskazujący, że dane w tym buforze są częścią następnego rekordu i nie zostały jeszcze przetworzone. Z drugiej strony, jeśli funkcja komunikatu zwróci kod błędu SEC_E_INCOMPLETE_MESSAGE, zwracana lista będzie wyglądać podobnie do poniższego.

    Bufor Długość Typ buforu
    1 x SECBUFFER_MISSING

     

    Oznacza to, że do przetworzenia rekordu potrzebnych było więcej danych. W przeciwieństwie do większości błędów zwracanych z funkcji komunikatu ten typ buforu nie wskazuje, że kontekst został naruszony. Zamiast tego wskazuje, że potrzebne są więcej danych. pakiety zabezpieczeń nie mogą aktualizowaćstanu.

    Podobnie po stronie nadawcy komunikacji obiekt wywołujący może wywołać funkcję MakeSignature. Pakiet zabezpieczeń może wymagać reallokowania buforu lub kopiowania elementów. Obiekt wywołujący może być bardziej wydajny, udostępniając listę w następujący sposób.

    Bufor Długość Typ
    1 Długość nagłówka SECBUFFER_STREAM_HEADER
    2 Długość danych SECBUFFER_DATA
    3 Długość przyczepy SECBUFFER_STREAM_TRAILER

     

    Dzięki temu obiekt wywołujący może wydajniej korzystać z. Wywołując funkcję QueryContextAttributes w celu określenia ilości miejsca do zarezerwowania przed wywołaniem MakeSignature, operacja jest wydajniejsza dla aplikacji i pakietu zabezpieczeń.