Mendekode 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 mendekode data yang diselimuti menggunakan manajemen kunci transportasi utama, seperti yang digambarkan dalam ilustrasi sebelumnya, adalah sebagai berikut:
- Penunjuk ke pesan yang terbungkus 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 (kunci 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 satu kali, menggunakan handle yang diambil pada langkah 2 dan pointer ke data yang akan didekodekan. Ini menyebabkan tindakan yang sesuai diambil pada pesan, tergantung pada jenis pesan.
- Panggil CryptMsgGetParam, melewati handle yang diambil di langkah 2 dan CMSG_TYPE_PARAM untuk memverifikasi bahwa pesan itu bertipe data yang dibungkus.
- Panggil lagi CryptMsgGetParam, dengan meneruskan CMSG_INNER_CONTENT_TYPE_PARAM untuk mendapatkan jenis data dari konten dalam .
- Jika tipe data konten bagian dalam adalah data, dapat dilanjutkan dengan mendekripsi dan mendekode konten. Jika tidak, jalankan prosedur decoding yang sesuai untuk jenis data konten.
- Dengan asumsi tipe konten internal adalah "data", inisialisasi struktur data CMSG_CTRL_DECRYPT_PARA, dan panggil CryptMsgControl, dengan memasukkan CMSG_CTRL_DECRYPT dan alamat struktur. Konten akan didekripsi.
- Panggil CryptMsgGetParam, dengan meneruskan CMSG_CONTENT_PARAM untuk mendapatkan pointer menuju BLOB data konten yang telah didekode (BYTE string).
- Panggil CryptMsgClose untuk menutup pesan.
Hasil dari prosedur ini adalah bahwa pesan tersebut didekodekan dan didekripsi, serta pointer diperoleh untuk mengakses BLOB data konten.
Topik terkait