データの署名手順
1 つの関数 CryptSignMessage は、「 署名付きメッセージの作成」に記載されているすべてのタスクを実行します。 ただし、構造体やその他のデータの初期化は依然として必要です。 次の図は、構造体または配列を指す関数パラメーターとその初期化されたデータの関係を示しています。 この図は、他の構造体または関数から派生した関数パラメーターと構造体メンバーのみを示しています。 残りのパラメーターは簡単な初期化です。
CryptSignMessage を使用してデータに署名するには
- 署名するデータへのポインターを取得します。
- "署名するデータ" 配列のインデックス 0 にデータへのポインターを割り当てます。
- 暗号化プロバイダーへのハンドルを取得します。
- 署名者の証明書を含む証明書 ストア を開きます。
- 署名者の証明書のアドレスを取得します。
- 証明書のアドレスを MsgCert 配列のゼロ インデックスに割り当てます。
- メッセージに含める他の証明書のアドレスを MsgCert 配列に割り当てます。
- 必要に応じて、pszObjId メンバーを目的のハッシュ アルゴリズムとその他のメンバーに初期化して、CRYPT_ALGORITHM_IDENTIFIER構造体を初期化します。
- CRYPT_SIGN_MESSAGE_PARA構造体を初期化し、署名者の証明書のアドレスに pSigningCert メンバーを初期化し、署名者とその他の証明書のアドレスに MsgCert 配列メンバー、CRYPT_ALGORITHM_IDENTIFIER構造体のアドレスに対する HashAlgorithm メンバー、および必要に応じて他のメンバーを初期化します。
- CryptSignMessage 関数を呼び出し、pSignPara パラメーターのCRYPT_SIGN_MESSAGE_PARA構造体、rgpbToBeSigned パラメーターの "署名するデータ" 配列のアドレス、pbSignedBlob 出力パラメーターのアドレス、および必要に応じて他のパラメーターの値を渡します。