共用方式為


重新交涉 Schannel 連線

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

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

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

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

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

當 Schannel 準備好讓應用程式繼續時, DecryptMessage (Schannel) 函式會傳回SEC_I_RENEGOTIATE。 當您收到SEC_I_RENEGOTIATE傳回碼時,您的應用程式必須呼叫 AcceptSecurityCoNtext (Schannel) (伺服器) 或 InitializeSecurityCon (text) ( 用戶端 (用戶端) ,並在SECBUFFER_TOKEN中傳遞從 DecryptMessage 傳回SECBUFFER_EXTRA的內容。 此呼叫傳回值之後,請繼續進行,就像您的應用程式正在建立新的連線一樣。