Schannel 연결 종료
클라이언트 또는 서버가 연결을 사용하지 않을 때는 연결을 종료해야 합니다. 따라서 상대방은 종료를 인식하고 연결을 삭제해야 합니다.
Schannel 연결을 종료하려면
- SCHANNEL_SHUTDOWN 컨트롤 토큰을 지정하여 ApplyControlToken 함수를 호출합니다.
- ApplyControlTokenSEC_E_OK 반환 값을 받은 후 InitializeSecurityContext(Schannel)(클라이언트) 또는 AcceptSecurityContext(Schannel)(서버) 함수를 호출하여 빈 버퍼를 전달합니다.
- 함수가 SEC_I_CONTEXT_EXPIRED 또는 SEC_E_OK 반환하여 연결이 종료되었음을 나타낼 때까지 애플리케이션이 새 연결을 만드는 것처럼 진행합니다.
- 최종 출력 정보(있는 경우)를 원격 당사자에게 보냅니다.
- DeleteSecurityContext 호출하여 연결에서 보유한 리소스를 해제합니다.
시스템 종료 인식
DecryptMessage(Schannel) 함수는 메시지 발신자가 연결을 종료하면 SEC_I_CONTEXT_EXPIRED 반환합니다. 이 반환 값을 받은 후 이 항목의 앞부분에 있는 Schannel 연결을 종료하는 절차를 따릅니다.