Pendekodean Data Yang Diselimuti
Tugas umum yang diperlukan untuk mendekode pesan yang diselimuti digambarkan dalam ilustrasi berikut dan dijelaskan dalam daftar yang mengikutinya.
Urutan peristiwa untuk pendekodean data yang diselimuti menggunakan manajemen kunci transportasi utama, seperti yang digambarkan dalam ilustrasi sebelumnya, adalah sebagai berikut:
- Penunjuk ke pesan yang diselimuti secara digital diambil.
- Penyimpanan sertifikat dibuka.
- Dari pesan, ID penerima (ID Saya) diambil.
- ID penerima digunakan untuk mengambil sertifikat.
- Kunci privat yang terkait dengan sertifikat tersebut diambil.
- Kunci privat digunakan untuk mendekripsi kunci simetris (sesi).
- Algoritma enkripsi diambil dari pesan.
- Menggunakan kunci privat dan algoritma enkripsi, data didekripsi.
Prosedur berikut menggunakan fungsi pesan tingkat rendah untuk menyelesaikan tugas yang baru saja dicantumkan.
Untuk mendekode pesan yang diselimuti
- Dapatkan pointer ke BLOB yang dikodekan.
- Panggil CryptMsgOpenToDecode, meneruskan argumen yang diperlukan.
- Panggil CryptMsgUpdate sekali, meneruskan handel yang diambil di langkah 2 dan pointer ke data yang akan didekodekan. Ini menyebabkan tindakan yang sesuai diambil pada pesan, tergantung pada jenis pesan.
- Panggil CryptMsgGetParam, meneruskan handel yang diambil di langkah 2 dan CMSG_TYPE_PARAM untuk memverifikasi bahwa pesan tersebut adalah jenis data yang diselimuti.
- Sekali lagi panggil CryptMsgGetParam, teruskan CMSG_INNER_CONTENT_TYPE_PARAM untuk mendapatkan jenis data konten dalam.
- Jika jenis data konten dalam adalah data, lanjutkan untuk mendekripsi dan mendekode konten. Jika tidak, jalankan prosedur pendekodean yang sesuai untuk jenis data konten.
- Dengan asumsi jenis konten dalam adalah "data", menginisialisasi struktur data CMSG_CTRL_DECRYPT_PARA , dan memanggil CryptMsgControl, meneruskan CMSG_CTRL_DECRYPT dan alamat struktur. Konten akan didekripsi.
- Panggil CryptMsgGetParam, meneruskan CMSG_CONTENT_PARAM untuk mendapatkan pointer ke BLOB data konten yang didekodekan (string BYTE ).
- Panggil CryptMsgClose untuk menutup pesan.
Hasil dari prosedur ini adalah bahwa pesan didekodekan dan didekripsi dan pointer diambil ke BLOB data konten.
Topik terkait