CCTL を使用した署名付きメッセージの検証
証明書信頼リスト (CCTL) を使用する利点の 1 つは、ダイアログ ボックスでユーザーに迷惑をかけることなく、信頼された証明書に対して署名済みメッセージを自動的に検証できるアプリケーションを設計できることです。 また、ネットワーク管理者の制御ソースを信頼することもできます。
次の手順を使用して、CTL を使用して署名されたメッセージの署名を確認できます。
CTL を使用して署名されたメッセージを確認するには
次のようにメッセージをデコードします。
- 受信したメッセージ (エンコードされた BLOB) へのポインターを取得します。
- CryptMsgOpenToDecode呼び出し、必要な引数を渡します。
- CryptMsgUpdate を 1 回呼び出し、ステップ b で取得したハンドルとデコードするデータへのポインターを渡します。 これにより、メッセージの種類に応じて、メッセージに対して適切なアクションが実行されます。
デコードされた署名されたメッセージの署名を確認し、署名者の CERT_CONTEXTへのポインターを取得します。
これを行うには、CryptMsgGetAndVerifySignerを呼び出し、手順 1c で取得したメッセージ ハンドルを hCryptMsg パラメーターとして渡します。 関数呼び出し TRUEが返された場合、署名が検証され、署名者の PCCERT_CONTEXT へのポインターが ppSigner パラメーターで返されます。
署名者が信頼できるソースであることを次のように確認します。
- 適切な CTL を含む証明書ストアを開きます。
- CTL_CONTEXT へのポインターを、CertFindCTLInStoreを呼び出して取得します。
- 署名者が信頼できるソースであることを確認するには、CertFindSubjectInCTLを呼び出し、前の手順で取得したポインターを pCtlContext パラメーターに渡し、dwSubjectType パラメーターにCTL_CERT_SUBJECT_TYPEし、pvSubject パラメーターの手順 2 で取得した CERT_CONTEXT へのポインターを渡します。 関数呼び出し TRUEを返す場合、関数に渡される CERT_CONTEXT は、CTL の信頼できるソースです。