DecryptMessage 関数 (sspi.h)
DecryptMessage (Digest) 関数は、メッセージの暗号化を解除します。 一部のパッケージでは、メッセージを暗号化および暗号化解除するのではなく、整合性ハッシュを実行してチェックします。
ダイジェスト セキュリティ サポート プロバイダー (SSP) は、SASL メカニズムとしてのみ、クライアントとサーバーの間で交換されるメッセージの暗号化と暗号化解除の機密性を提供します。
構文
SECURITY_STATUS SEC_ENTRY DecryptMessage(
[in] PCtxtHandle phContext,
[in, out] PSecBufferDesc pMessage,
[in] unsigned long MessageSeqNo,
[out] unsigned long *pfQOP
);
パラメーター
[in] phContext
メッセージの暗号化を解除するために使用される セキュリティ コンテキスト へのハンドル。
[in, out] pMessage
SecBufferDesc 構造体へのポインター。 入力時に、構造体は 1 つ以上 の SecBuffer 構造体を 参照します。 これらの少なくとも 1 つは、SECBUFFER_DATA型である必要があります。 そのバッファーには、暗号化されたメッセージが含まれています。 暗号化されたメッセージは暗号化解除され、バッファーの元の内容が上書きされます。
Digest SSP を使用する場合、入力時に構造体は 1 つ以上の SecBuffer 構造体を 参照します。 これらの 1 つは、SECBUFFER_DATAまたはSECBUFFER_STREAMの種類で、暗号化されたメッセージが含まれている必要があります。
[in] MessageSeqNo
トランスポート アプリケーションで予期されるシーケンス番号 (存在する場合)。 トランスポート アプリケーションでシーケンス番号が保持されない場合は、このパラメーターを 0 に設定する必要があります。
Digest SSP を使用する場合、このパラメーターは 0 に設定する必要があります。 ダイジェスト SSP は、シーケンスの番号付けを内部的に管理します。
[out] pfQOP
保護の品質を示すパッケージ固有のフラグを受け取る ULONG 型の変数へのポインター。
このパラメーターには、次のいずれかのフラグを指定できます。
値 | 意味 |
---|---|
|
メッセージは暗号化されませんでしたが、ヘッダーまたはトレーラーが生成されました。
メモ KERB_WRAP_NO_ENCRYPTには、同じ値と同じ意味があります。
|
|
Digest SSP を使用する場合は、セキュリティ コンテキストが 署名 のみを検証するように設定されている場合に、このフラグを使用します。 詳細については、「 保護の品質」を参照してください。 |
戻り値
関数がメッセージが正しいシーケンスで受信されたことを確認すると、関数は SEC_E_OKを返します。
関数がメッセージの暗号化解除に失敗すると、次のいずれかのエラー コードが返されます。
リターン コード | 説明 |
---|---|
|
メッセージ バッファーが小さすぎます。 ダイジェスト SSP と共に使用されます。 |
|
セキュリティ コンテキストに対して選択された暗号はサポートされていません。 ダイジェスト SSP と共に使用されます。 |
|
入力バッファー内のデータが不完全です。 アプリケーションでは、サーバーからさらに多くのデータを読み取り、 DecryptMessage (Digest) をもう一度呼び出す必要があります。 |
|
無効なコンテキスト ハンドルが phContext パラメーターで指定されました。 ダイジェスト SSP と共に使用されます。 |
|
メッセージが変更されました。 ダイジェスト SSP と共に使用されます。 |
|
メッセージが正しい順序で受信されませんでした。 |
|
機密性も 整合性 も、セキュリティ コンテキストではサポートされていません。 ダイジェスト SSP と共に使用されます。 |
注釈
アプリケーションがリモート パーティからデータを読み取り、 DecryptMessage (Digest) を使用して復号化を試み、 DecryptMessage (Digest) が成功したが出力バッファーが空であることを検出することがあります。 これは通常の動作であり、アプリケーションはそれに対処できる必要があります。
Windows XP: この関数は UnsealMessage とも呼ばれていました。 アプリケーションでは DecryptMessage (Digest) のみを使用する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | sspi.h (Security.h を含む) |
Library | Secur32.lib |
[DLL] | Secur32.dll |