QuickStart
Recompiler, puis atteindre TLS 1.3
Le premier onglet montre à quoi ressemble déjà ton projet existant. Le deuxième est la seule nouvelle ligne à ajouter. Le troisième prouve que tu utilises sgcIndy et non Indy standard.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
IdSSLOpenSSL, IdSSLOpenSSLHeaders, StdCtrls;
Ton projet existant ressemble déjà à cela, c'est tout l'intérêt. Il n'y a pas de sgcIdTCPClient ni de TsgcIdSSLIOHandlerSocketOpenSSL, car aucune unité et aucune classe de la bibliothèque ne porte de préfixe sgc. Installe, recompile, c'est fini.
procedure TFRMHttpClient.btnGoToClick(Sender: TObject);
var
oStream: TStringStream;
begin
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.APIVersion := sslvAPI_3_0;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_3;
oStream := TStringStream.Create('');
try
IdHTTP1.Get(txtURL.Text, oStream);
finally
FreeAndNil(oStream);
end;
end;
TIdSSLAPIVersion a pour membres sslvAPIDefault, sslvAPI_1_0, sslvAPI_1_1 et sslvAPI_3_0. Ni le type ni la propriété n'existent dans Indy standard, ce qui fait de cet extrait une preuve à la compilation de la bibliothèque avec laquelle tu compiles.
procedure TfrmTCPClient.btnConnectClick(Sender: TObject);
begin
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.APIVersion := sslvAPI_3_0;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1_3;
IdTCPClient1.Host := txtHost.Text;
IdTCPClient1.Port := StrToInt(txtPort.Text);
IdSSLIOHandlerSocketOpenSSL1.PassThrough := False;
IdTCPClient1.Connect;
end;
procedure TfrmTCPClient.btnDisconnectClick(Sender: TObject);
begin
IdTCPClient1.Disconnect;
end;
Mêmes composants, mêmes propriétés, même page de palette. PassThrough := False transforme le socket simple en socket TLS, exactement comme dans Indy standard. La lecture se fait avec IdTCPClient1.IOHandler.ReadLn, l'écriture avec IOHandler.Write, sans changement.