解碼信封資料
解碼信封郵件所需的一般工作,如下圖所示,並說明在後面的清單中。
使用金鑰傳輸金鑰管理來解碼信封資料的事件順序,如下圖所示:
- 會擷取 數位信封 訊息的指標。
- 隨即開啟憑證存放區。
- 從郵件中,會擷取收件者識別碼 (我的識別碼) 。
- 收件者識別碼是用來擷取憑證。
- 擷取與該憑證相關聯的 私密金鑰 。
- 私密金鑰可用來解密 對稱 (會話) 金鑰。
- 加密演算法是從訊息擷取。
- 使用私密金鑰和加密演算法,資料會解密。
下列程式會使用低階訊息函式來完成剛才列出的工作。
解碼信封郵件
- 取得編碼 BLOB 的指標。
- 呼叫 CryptMsgOpenToDecode,並傳遞必要的引數。
- 呼叫 CryptMsgUpdate 一次,傳入步驟 2 中擷取的控制碼,以及要解碼之資料的指標。 這會根據訊息類型,對訊息採取適當的動作。
- 呼叫 CryptMsgGetParam,傳入步驟 2 中擷取的控制碼,並CMSG_TYPE_PARAM確認訊息是否為信封資料類型。
- 再次呼叫 CryptMsgGetParam,傳入 CMSG_INNER_CONTENT_TYPE_PARAM 以取得 內部內容的資料類型。
- 如果內部內容資料類型是 資料,請繼續解密和解碼內容。 否則,請執行適用于內容類型的解碼程式。
- 假設內部內容類型為 「data」,請初始化 CMSG_CTRL_DECRYPT_PARA 資料結構,並呼叫 CryptMsgControl,傳入CMSG_CTRL_DECRYPT和結構的位址。 內容將會解密。
- 呼叫 CryptMsgGetParam,傳入 CMSG_CONTENT_PARAM,以取得已解碼內容資料 BLOB 的指標, (BYTE 字串) 。
- 呼叫 CryptMsgClose 以關閉訊息。
此程式的結果是訊息會解碼和解密,並擷取內容資料 BLOB 的指標。
相關主題