共用方式為


DecryptMessage (Negotiate) 函式

DecryptMessage (Negotiate) 函式會解密訊息。 某些套件不會加密和解密訊息,而是執行並檢查完整性 雜湊

注意

如果其中一個執行緒正在加密,且另一個執行緒正在解密,則可以同時從單一安全性支援 (提供者介面中的兩個不同的執行緒呼叫EncryptMessage (Negotiate) 和 DecryptMessage (Negotiate) ) 。 如果一個以上的執行緒正在加密,或一個以上的執行緒正在解密,則每個執行緒都應該取得唯一的內容。

語法

SECURITY_STATUS SEC_Entry DecryptMessage(
  _In_    PCtxtHandle    phContext,
  _Inout_ PSecBufferDesc pMessage,
  _In_    ULONG          MessageSeqNo,
  _Out_   PULONG         pfQOP
);

參數

phCoNtext [in]

要用來解密訊息 之安全性內容的 控制碼。

pMessage [in, out]

SecBufferDesc結構的指標。 在輸入時,結構會參考一或多個 SecBuffer 結構。 至少其中一個必須是類型SECBUFFER_DATA。 該緩衝區包含加密的訊息。 加密的訊息會就地解密,並覆寫其緩衝區的原始內容。

MessageSeqNo [in]

傳輸應用程式預期的序號,如果有的話。 如果傳輸應用程式未維護序號,此參數必須設定為零。

pfQOP [out]

ULONG類型的變數指標,可接收指出保護品質的套件特定旗標。

此參數可以是下列旗標。

意義
SECQOP_WRAP_NO_ENCRYPT
訊息未加密,但會產生標頭或預告片。
注意: KERB_WRAP_NO_ENCRYPT具有相同的值和相同的意義。

傳回值

如果函式確認訊息是以正確的順序接收,函式會傳回SEC_E_OK。

如果函式無法解密訊息,它會傳回下列其中一個錯誤碼。

傳回碼 描述
SEC_E_INCOMPLETE_MESSAGE 輸入緩衝區中的資料不完整。 應用程式需要從伺服器讀取更多資料,並再次呼叫 DecryptMessage (Negotiate)
SEC_E_OUT_OF_SEQUENCE 訊息未以正確的順序接收。

備註

有時候應用程式會從遠端合作物件讀取資料、嘗試使用 DecryptMessage (Negotiate) 進行解密,併發現 DecryptMessage (Negotiate) 成功,但輸出緩衝區是空的。 這是正常行為,而且應用程式必須能夠加以處理。

Windowsxp: 此函式也稱為 UnsealMessage。 應用程式現在應該只使用 DecryptMessage (Negotiate)

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
標頭 Sspi.h (包含 Security.h)
媒體櫃 Secur32.lib
DLL Secur32.dll

另請參閱