TsgcWebSocketClient | SChannel Get Connection Info

Po nawiązaniu przez klienta połączenia z bezpiecznym serwerem można uzyskać informacje o używanej wersji TLS (TLS 1.2, TLS 1.3 itp.), zastosowanym szyfrze, sile klucza i innych parametrach.

 

Wywołaj funkcję GetInfo programu obsługi SChannel, aby uzyskać dostęp do tych informacji. Dostęp do programu obsługi SSL można uzyskać za pomocą metody OnSSLAfterCreateHandler, która jest wywoływana po utworzeniu programu obsługi SChannel. Po nawiązaniu połączenia klienta z serwerem, jeśli program obsługi SSL jest przypisany, wywołaj funkcję GetInfo, która w przypadku powodzenia zwróci dane połączenia.

 


uses
  sgcIdSSL, sgcSSL_SChannel_Indy, sgcSSL_SChannel;

var
  SSL: TsgcIdSSLIOHandlerSocketSChannel;
oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.Version := tls1_2;
oClient.TLSOptions.IOHandler := iohSChannel;
oClient.OnSSLAfterCreateHandler := OnSSLAfterCreateHandlerEvent;
oClient.OnConnect := OnConnectEvent;
oClient.Active := True;
procedure OnSSLAfterCreateHandlerEvent(Sender: TObject; aType: TwsSSLHandler; 
  aSSLHandler: TIdSSLIOHandlerSocketBase);
begin
  if aSSLHandler.ClassType = TsgcIdSSLIOHandlerSocketSChannel  then
    SSL := TsgcIdSSLIOHandlerSocketSChannel(aSSLHandler);
end;
procedure OnConnectEvent(Connection: TsgcWSConnection);
var
  oInfo: TsgcSChannelConnectionInfo;
begin
  if Assigned(SSL) then
  begin
    oInfo := SSL.GetInfo;
    if (oInfo.Protocol != tls1_2) then
      raise Exception.Create('Client cannot connect using TLS 1.2');
  end;
end;