MakeSignature 関数 (sspi.h)
MakeSignature 関数は、メッセージの暗号化チェックサムを生成し、メッセージの損失や挿入を防ぐためのシーケンス情報も含みます。 MakeSignature を使用すると、選択したメカニズムでサポートされている場合は、アプリケーションで複数の暗号化アルゴリズムを選択できます。 MakeSignature 関数は、コンテキスト ハンドルによって参照されるセキュリティ コンテキストを使用します。
この関数は、Schannel セキュリティ サポート プロバイダー (SSP) ではサポートされていません。
構文
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
[in] PCtxtHandle phContext,
[in] unsigned long fQOP,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo
);
パラメーター
[in] phContext
メッセージの署名に使用するセキュリティ コンテキストへのハンドル。
[in] fQOP
保護の品質を示すパッケージ固有のフラグ。 セキュリティ パッケージでは、このパラメーターを使用して、暗号化アルゴリズムの選択を有効にすることができます。
Digest SSP を使用する場合は、このパラメーターを 0 に設定する必要があります。
[in, out] pMessage
SecBufferDesc 構造体へのポインター。 入力時に、構造体は署名するメッセージを含む 1 つ以上の SecBuffer 構造体を参照します。 関数は、SECBUFFER_READONLY_WITH_CHECKSUM属性を持つバッファーを処理しません。
SecBufferDesc 構造体は、シグネチャを受け取るSECBUFFER_TOKEN型の SecBuffer 構造体も参照します。
ダイジェスト SSP を HTTP 認証プロトコルとして使用する場合は、バッファーを次のように構成する必要があります。
Buffer #/buffer type | 意味 |
---|---|
|
空白。 |
|
メソッド。 |
|
URL。 |
|
HEntity。 詳細については、「 ダイジェスト チャレンジ応答の入力バッファー」を参照してください。 |
|
空白。 署名を受け取ります。 |
ダイジェスト SSP を SASL メカニズムとして使用する場合、バッファーは次のように構成する必要があります。
Buffer #/buffer type | 意味 |
---|---|
|
空白。 署名を受け取ります。 このバッファーは、可能な限り最大の署名を保持するのに十分な大きさである必要があります。 QueryContextAttributes (General) 関数を呼び出し、SECPKG_ATTR_SIZESを指定することによって必要なサイズを決定します。 返された SecPkgContext_Sizes 構造体メンバー cbMaxSignature を確認します。 |
|
署名するメッセージ。 |
|
空白。 |
[in] MessageSeqNo
トランスポート アプリケーションがメッセージに割り当てたシーケンス番号。 トランスポート アプリケーションがシーケンス番号を保持しない場合、このパラメーターは 0 です。
Digest SSP を使用する場合は、このパラメーターを 0 に設定する必要があります。 ダイジェスト SSP は、内部的にシーケンス番号を管理します。
戻り値
関数が成功した場合、関数は SEC_E_OKを返します。
関数が失敗した場合は、次のいずれかのエラー コードが返されます。
リターン コード | 説明 |
---|---|
|
リモート パーティは、新しいハンドシェイク シーケンスを必要とするか、アプリケーションがシャットダウンを開始したばかりです。 ネゴシエーション ループに戻り、 AcceptSecurityContext (General) または InitializeSecurityContext (General) をもう一度呼び出します。 最初の呼び出しで空の入力バッファーが渡されます。 |
|
phContext で指定されたコンテキスト ハンドルが無効です。 |
|
pMessage に有効なSECBUFFER_TOKEN バッファーが含まれていないか、バッファーが少なすぎます。 |
|
nonce カウントが順序外です。 |
|
セキュリティ コンテキスト (phContext) を再検証する必要があります。 |
|
nonce カウントは数値ではありません。 |
|
クライアントとサーバーの間でネゴシエートされた保護の品質には 、整合性 チェックは含まれていませんでした。 |
注釈
MakeSignature 関数は、メッセージとコンテキストのセッション キーに基づく署名を生成します。
VerifySignature 関数は、MakeSignature 関数によって署名されたメッセージを検証します。
トランスポート アプリケーションがシーケンス検出をサポートするためにセキュリティ コンテキストを作成し、呼び出し元がシーケンス番号を提供する場合、関数はこの情報をシグネチャに含めます。 これにより、メッセージの応答、挿入、抑制から保護されます。 セキュリティ パッケージには、トランスポート アプリケーションから渡されたシーケンス番号が組み込まれています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | sspi.h (Security.h を含む) |
Library | Secur32.lib |
[DLL] | Secur32.dll |