次の一般的なプロセスでは、署名されたデータ 型をデコードします。
署名されたメッセージ をデコードするには
- エンコードされた BLOB へのポインターを取得します。
- CryptMsgOpenToDecode呼び出し、必要な引数を渡します。
- CryptMsgUpdate を 1 回呼び出し、手順 2 で取得したハンドルとデコードするデータへのポインターを渡します。 これにより、メッセージの種類に応じて、メッセージに対して適切なアクションが実行されます。
- CryptMsgGetParam呼び出し、手順 2 で取得したハンドルと、デコードされたデータにアクセスするための適切なパラメーター型を渡します。 たとえば、デコードされたコンテンツへのポインターを取得するには、CMSG_CONTENT_PARAMを渡します。
次の一般的なプロセスは、デコードされた署名付きメッセージの署名を検証します。
デコードされた署名付きメッセージ の署名を確認するには
- CryptMsgGetParam呼び出し、メッセージ ハンドルとCMSG_SIGNER_CERT_INFO_PARAMを渡して、署名者の CERT_INFO をメッセージから取得します。
- CertOpenStore呼び出して、メッセージの証明書で初期化された一時ストアを開きます。
- CertGetSubjectCertificateFromStore呼び出して、メッセージに含まれる証明書から署名者の CERT_INFO を取得します。
- CryptMsgControl呼び出し、CMSG_CTRL_VERIFY_SIGNATUREを渡して署名を確認します。
- メッセージを閉じるには、CryptMsgCloseを呼び出します。
これらのプロシージャの結果は、署名が検証され、署名されたメッセージをデコードするための手順 4 で取得したデコードされたメッセージ コンテンツへのポインターが取得されます。
C コーディングの詳細については、「例 C プログラム: メッセージの署名、エンコード、デコード、検証」を参照してください。