Завершение работы подключения Schannel

Когда клиент или сервер завершает работу с подключением, он должен завершить работу. Другая сторона, в свою очередь, должна распознать завершение работы и удалить подключение.

Завершение подключения Schannel

  1. Вызовите функцию ApplyControlToken , указав маркер управления SCHANNEL_SHUTDOWN.
  2. После получения SEC_E_OK возвращаемого значения из ApplyControlToken вызовите функцию InitializeSecurityContext (Schannel) (клиенты) или AcceptSecurityContext (Schannel) (серверы), передавая пустые буферы.
  3. Продолжайте работу так, как если бы приложение создавало новое подключение, пока функция не вернет SEC_I_CONTEXT_EXPIRED или SEC_E_OK, чтобы указать, что подключение завершилось.
  4. Отправьте окончательные выходные данные, если таковые есть, удаленной стороне.
  5. Вызовите Метод DeleteSecurityContext , чтобы освободить ресурсы, удерживаемые подключением.

Распознавание завершения работы

Функция DecryptMessage (Schannel) возвращает SEC_I_CONTEXT_EXPIRED, когда отправитель сообщения завершит подключение. После получения этого возвращаемого значения выполните процедуру Завершение подключения Schannel, описанную выше в этом разделе.