QuickStart
Opnieuw bouwen en dan TLS 1.3 bereiken
Het eerste tabblad is hoe je bestaande project er al uitziet. Het tweede is de ene nieuwe regel die het waard is om toe te voegen. Het derde bewijst dat je op sgcIndy zit en niet op standaard Indy.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
IdSSLOpenSSL, IdSSLOpenSSLHeaders, StdCtrls;
Je bestaande project ziet er al zo uit, en dat is de bedoeling. Er is geen sgcIdTCPClient en geen TsgcIdSSLIOHandlerSocketOpenSSL, omdat geen enkele unit en geen enkele klasse in de bibliotheek een sgc-voorvoegsel heeft. Installeren, opnieuw bouwen, klaar.
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 heeft de leden sslvAPIDefault, sslvAPI_1_0, sslvAPI_1_1 en sslvAPI_3_0. Noch het type, noch de eigenschap bestaat in standaard Indy, waardoor dit fragment een compileertijdbewijs is van tegen welke bibliotheek je bouwt.
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;
Dezelfde componenten, dezelfde eigenschappen, dezelfde palettabpagina. PassThrough := False maakt van de gewone socket een TLS-socket, precies zoals in standaard Indy. Lezen is IdTCPClient1.IOHandler.ReadLn, schrijven is IOHandler.Write, ongewijzigd.