Bagikan melalui


Konteks Aliran

Konteks streaming menangani protokol berorientasi aliran aman seperti SSL atau PCT. Untuk kepentingan berbagi antarmuka yang sama dan manajemen kredensial serupa, SSPI menyediakan dukungan untuk konteks aliran. Protokol keamanan menggabungkan skema autentikasi aliran dan format rekaman.

Untuk menyediakan protokol berorientasi aliran, paket keamanan yang mendukung konteks aliran memiliki karakteristik proses berikut:

  • Paket mengatur bendera SECPKG_FLAG_STREAM untuk menunjukkan bahwa paket mendukung semantik aliran.

  • Aplikasi transportasi meminta semantik aliran dengan mengatur bendera ISC_REQ_STREAM dan ASC_REQ_STREAM dalam panggilan ke fungsi InitializeSecurityContext (Umum) dan AcceptSecurityContext (Umum).

  • Aplikasi ini memanggil fungsiQueryContextAttributes (Umum) dengan struktur SecPkgContext_StreamSizes untuk mengkueri konteks keamanan jumlah buffer yang akan disediakan dan ukuran untuk memesan header atau trailer.

  • Aplikasi ini menyediakan deskriptor buffer untuk cadangan selama pemrosesan data yang sebenarnya. Dengan menentukan semantik aliran, pemanggil menunjukkan kesediaan untuk melakukan pemrosesan ekstra sehingga paket keamanan dapat menangani pemblokiran pesan. Intinya, untuk fungsi MakeSignature dan VerifySignature, pemanggil meneruskan daftar buffer. Saat pesan diterima dari saluran yang berorientasi aliran (seperti port TCP), pemanggil meneruskan daftar buffer sebagai berikut.

    Buffer Panjangnya Jenis buffer
    1 Panjang Pesan SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Paket keamanan kemudian berfungsi padaBLOB. Jika fungsi berhasil dikembalikan, daftar buffer terlihat seperti berikut ini.

    Buffer Panjangnya Jenis buffer
    1 Panjang Header SECBUFFER_STREAM_HEADER
    2 Panjang Data SECBUFFER_DATA
    3 Panjang Trailer SECBUFFER_STREAM_TRAILER
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    Paket juga dapat mengembalikan buffer #4 dengan panjang x dan jenis buffer SECBUFFER_EXTRA menunjukkan bahwa data dalam buffer ini adalah bagian dari rekaman berikutnya dan belum diproses. Sebaliknya, jika fungsi pesan mengembalikan kode kesalahan SEC_E_INCOMPLETE_MESSAGE, daftar buffer yang dikembalikan akan terlihat seperti berikut ini.

    Buffer Panjangnya Jenis buffer
    1 x SECBUFFER_MISSING

     

    Ini menunjukkan bahwa lebih banyak data diperlukan untuk memproses rekaman. Tidak seperti kebanyakan kesalahan yang dikembalikan dari fungsi pesan, jenis buffer ini tidak menunjukkan bahwa konteks telah disusupi. Sebaliknya, ini menunjukkan bahwa lebih banyak data diperlukan. paket keamanan tidak boleh memperbaruistatusdalam kondisi ini.

    Demikian pula, di sisi pengirim komunikasi, pemanggil dapat memanggil fungsiMakeSignature. Paket keamanan mungkin perlu merealokasi buffer atau menyalin hal-hal di sekitar. Pemanggil bisa lebih efisien dengan menyediakan daftar buffer sebagai berikut.

    Buffer Panjangnya Jenis
    1 Panjang Header SECBUFFER_STREAM_HEADER
    2 Panjang Data SECBUFFER_DATA
    3 Panjang Trailer SECBUFFER_STREAM_TRAILER

     

    Ini memungkinkan pemanggil untuk menggunakan buffer secara lebih efisien. Dengan memanggil fungsiQueryContextAttributes untuk menentukan jumlah ruang yang harus dicadangkan sebelum memanggil MakeSignature, operasi lebih efisien untuk aplikasi dan paket keamanan.