Bagikan melalui


Menggunakan SecBufferDesc dan SecBuffer

Komunikasi sering melibatkan data dalam jumlah besar atau data dengan panjang yang tidak diketahui. Mengirim dan menerima data dilakukan dengan cara yang serupa atau identik dalam kedua kasus ini. Untuk menangani panjang yang tidak diketahui dan data dalam jumlah yang berpotensi besar, komunikasi SSPI dilakukan menggunakan dua struktur, SecBufferDesc dan SecBuffer.

Struktur SecBufferDesc adalah kontainer untuk array struktur SecBuffer . Struktur SecBufferDesc memiliki anggota berikut:

Struktur SecBuffer berisi tiga anggota berikut:

  • Jumlah byte dalam buffer
  • Jenis informasi yang terkandung dalam item data
  • Byte itu sendiri

Seluruh pesan SSPI sering terdiri dari array struktur SecBuffer .

Jenis data buffer berikut didefinisikan sebagai berikut.

Jenis buffer Makna
SECBUFFER_EMPTY Tidak terdefinisi, digantikan oleh fungsi paket keamanan
SECBUFFER_DATA Data paket
SECBUFFER_TOKEN Token keamanan
SECBUFFER_PKG_PARAMS Parameter khusus paket
SECBUFFER_MISSING Indikator data yang hilang
SECBUFFER_EXTRA Data tambahan
SECBUFFER_STREAM Data aliran keamanan
SECBUFFER_STREAM_TRAILER Trailer aliran keamanan
SECBUFFER_STREAM_HEADER Header aliran keamanan

 

Jenis buffer di atas dapat dikombinasikan menggunakan operasi bitwise-OR dengan salah satu jenis buffer berikut.

Jenis buffer Makna
SECBUFFER_ATTRMASK Mask atribut keamanan dengan memisahkan bendera atribut dari jenis buffer.
SECBUFFER_READONLY Buffer bersifat baca-saja

 

Sebelum setiap panggilan ke API SSPI yang memerlukan parameter SecBufferDesc , satu atau beberapa elemen array SecBuffer dideklarasikan dan diinisialisasi. Misalnya, mungkin ada dua buffer keamanan: satu yang berisi data pesan input dan yang lainnya untuk token keamanan buram output yang dikembalikan oleh paket keamanan. Urutan buffer keamanan dalam deskriptor buffer keamanan tidak penting, tetapi setiap buffer harus ditandai dengan jenis yang sesuai. Tag baca-saja dapat digunakan dengan buffer input apa pun yang tidak boleh dimodifikasi oleh paket keamanan.

Ukuran buffer output yang diharapkan berisi token keamanan adalah penting. Aplikasi dapat menemukan ukuran token maksimum untuk paket keamanan selama penyiapan awal. Panggilan ke EnumerateSecurityPackages mengembalikan array pointer ke informasi paket keamanan. Struktur informasi paket keamanan berisi ukuran token maksimum untuk setiap paket. Dalam contoh, informasi ada di anggota cbMaxToken dari struktur SecPkgInfo . Informasi yang sama dapat diperoleh nanti menggunakan QuerySecurityPackageInfo.

Aplikasi ini menginisialisasi penunjuk dan ukuran buffer dalam deskripsi buffer untuk menunjukkan di mana data pesan dan informasi lain dapat ditemukan.

Untuk detailnya, lihat Kode Contoh SecBuffer dan SecBufferDesc.