共用方式為


重新談判安全通道連線

若要變更連線的屬性,例如加密套件或客戶端驗證,您可以要求「重做」或重新談判連線。

如果您想要變更的屬性是由認證所控制,您必須先取得新的認證,才能重新交涉連線。 如需更多資訊,請參閱取得 Schannel 認證

若要向用戶端應用程式要求重做,請呼叫 InitializeSecurityContext (Schannel) 函式。 伺服器應用程式會呼叫 AcceptSecurityContext (Schannel) 函式。 設定參數,如下所示:

  • phContext 參數中指定現有的 安全性內容
  • (僅限用戶端)指定建立內容時指定的相同伺服器名稱(在 pszTargetName 參數中)。
  • 如果適用,請使用 phCredential 參數來指定新的認證。
  • 如果您想要變更與認證無關的內容屬性,請使用 fContextReq 參數 來指定這些屬性。

呼叫適當的函式之後,您的應用程式應該將結果傳送至用戶端,並使用 DecryptMessage (Schannel) 函式繼續處理傳入訊息。

DecryptMessage(Schannel) 函式會在 Schannel 準備好讓您的應用程式繼續操作時傳回 SEC_I_RENEGOTIATE。 當您收到 SEC_I_RENEGOTIATE 傳回碼時,您的應用程式必須呼叫 AcceptSecurityContext(Schannel)(servers)或 InitializeSecurityContext(Schannel)(clients),並在 SECBUFFER_TOKEN 中傳遞從 DecryptMessage 傳回的 SECBUFFER_EXTRA 的內容。 此呼叫傳回值之後,請繼續執行,就像您的應用程式正在建立新的連線一樣。