Fungsi EncryptMessage (sspi.h)
Fungsi EncryptMessage (Digest) mengenkripsi pesan untuk memberikan privasi. EncryptMessage (Digest) memungkinkan aplikasi untuk memilih di antara algoritma kriptografi yang didukung oleh mekanisme yang dipilih. Fungsi EncryptMessage (Digest) menggunakan konteks keamanan yang dirujuk oleh handel konteks. Beberapa paket tidak memiliki pesan untuk dienkripsi atau didekripsi, melainkan memberikan hash integritas yang dapat diperiksa.
Fungsi ini hanya tersedia sebagai mekanisme SASL.
Sintaks
SECURITY_STATUS SEC_ENTRY EncryptMessage(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
Parameter
[in] phContext
Handel ke konteks keamanan yang akan digunakan untuk mengenkripsi pesan.
[in] fQOP
Bendera khusus paket yang menunjukkan kualitas perlindungan. Paket keamanan dapat menggunakan parameter ini untuk mengaktifkan pemilihan algoritma kriptografi.
Saat menggunakan Digest SSP, parameter ini harus diatur ke nol.
[in, out] pMessage
Penunjuk ke struktur SecBufferDesc . Pada input, struktur mereferensikan satu atau beberapa struktur SecBuffer yang dapat berjenis SECBUFFER_DATA. Buffer tersebut berisi pesan yang akan dienkripsi. Pesan dienkripsi di tempat, menimpa konten asli struktur.
Fungsi ini tidak memproses buffer dengan atribut SECBUFFER_READONLY.
Panjang struktur SecBuffer yang berisi pesan tidak boleh lebih besar dari cbMaximumMessage, yang diperoleh dari fungsi QueryContextAttributes (Digest) (SECPKG_ATTR_STREAM_SIZES).
Saat menggunakan Digest SSP, harus ada buffer kedua jenis SECBUFFER_PADDING atau SEC_BUFFER_DATA untuk menyimpan informasi tanda tangan . Untuk mendapatkan ukuran buffer output, panggil fungsi QueryContextAttributes (Digest) dan tentukan SECPKG_ATTR_SIZES. Fungsi akan mengembalikan struktur SecPkgContext_Sizes . Ukuran buffer output adalah jumlah nilai dalam anggota cbMaxSignature dan cbBlockSize .
Aplikasi yang tidak menggunakan SSL harus menyediakan SecBuffer jenis SECBUFFER_PADDING.
[in] MessageSeqNo
Nomor urut yang ditetapkan aplikasi transportasi ke pesan. Jika aplikasi transportasi tidak mempertahankan nomor urut, parameter ini harus nol.
Saat menggunakan Digest SSP, parameter ini harus diatur ke nol. Digest SSP mengelola penomoran urutan secara internal.
Nilai kembali
Jika fungsi berhasil, fungsi akan mengembalikan SEC_E_OK.
Jika fungsi gagal, fungsi mengembalikan salah satu kode kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Buffer output terlalu kecil. Untuk informasi selengkapnya, lihat Keterangan. |
|
Aplikasi ini mereferensikan konteks yang telah ditutup. Aplikasi yang ditulis dengan benar seharusnya tidak menerima kesalahan ini. |
|
Cipher yang dipilih untuk konteks keamanan tidak didukung. |
|
Tidak tersedia cukup memori untuk menyelesaikan tindakan yang diminta. |
|
Handel konteks yang tidak valid ditentukan dalam parameter phContext . |
|
Tidak ada buffer tipe SECBUFFER_DATA yang ditemukan. |
|
Kerahasiaan maupun integritas tidak didukung oleh konteks keamanan. |
Keterangan
Fungsi EncryptMessage (Digest) mengenkripsi pesan berdasarkan pesan dan kunci sesi dari konteks keamanan.
Jika aplikasi transportasi membuat konteks keamanan untuk mendukung deteksi urutan dan pemanggil menyediakan nomor urut, fungsi menyertakan informasi ini dengan pesan terenkripsi. Termasuk informasi ini melindungi dari pemutaran ulang, penyisipan, dan penekanan pesan. Paket keamanan menggabungkan nomor urut yang diturunkan dari aplikasi transportasi.
Saat Anda menggunakan Digest SSP, dapatkan ukuran buffer output dengan memanggil fungsi QueryContextAttributes (Digest) dan menentukan SECPKG_ATTR_SIZES. Fungsi akan mengembalikan struktur SecPkgContext_Sizes . Ukuran buffer output adalah jumlah nilai dalam anggota cbMaxSignature dan cbBlockSize .
Jenis buffer | Deskripsi |
---|---|
SECBUFFER_STREAM_HEADER | Digunakan secara internal. Tidak diperlukan inisialisasi. |
SECBUFFER_DATA | Berisi pesan teks biasa yang akan dienkripsi. |
SECBUFFER_STREAM_TRAILER | Digunakan secara internal. Tidak diperlukan inisialisasi. |
SECBUFFER_EMPTY | Digunakan secara internal. Tidak diperlukan inisialisasi. Ukurannya bisa nol. |
Untuk performa optimal, struktur pMessage harus dialokasikan dari memori yang berdekatan.
Windows XP: Fungsi ini juga dikenal sebagai SealMessage. Aplikasi sekarang harus menggunakan EncryptMessage (Digest) saja.
Persyaratan
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | sspi.h (termasuk Security.h) |
Pustaka | Secur32.lib |
DLL | Secur32.dll |
Lihat juga
AcceptSecurityContext (Digest)
InitializeSecurityContext (Digest)