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