[fpc-pascal] https how does it work

Tony Whyman tony.whyman at mccallumwhyman.com
Thu Feb 16 15:18:28 CET 2017


You can always use the indy components. They have a working https 
implementation which I have successfully used in a SOAP based 
application and Lazarus's WST package. (see 
http://wiki.lazarus.freepascal.org/Indy_with_Lazarus).

The downside is that the indy components do not seem to have been 
updated for a long time and have not kept up-to-date with OpenSSL. I 
have attached below a patch I have used to keep the components 
up-to-date with SSL headers.

Tony



On 16/02/17 12:41, Rainer Stratmann wrote:
> How does httpy work, what is needed?
>
> TLS/SSL library?
>
> A http webserver without encryption I programed already on my own and wanted
> to integrate https.
>
> Is there any example code of https?
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
Index: fpc/IdSSLOpenSSLHeaders.pas
===================================================================
--- fpc/IdSSLOpenSSLHeaders.pas    (.../tags/R10-2-0-3)    (revision 8065)
+++ fpc/IdSSLOpenSSLHeaders.pas    (.../trunk)    (revision 8065)
@@ -7073,7 +7076,8 @@
    where the symbolic link libbsl.so and libcrypto.so do not exist}
    SSL_DLL_name         = 'libssl'; {Do not localize}
    SSLCLIB_DLL_name     = 'libcrypto'; {Do not localize}
-  SSLDLLVers : array [0..4] of string = 
('','0.9.9','.0.9.8','.0.9.7','0.9.6');
+  SSLDLLVers : array [0..6] of string = 
('','1.0.1','1.0.0','0.9.9','.0.9.8','.0.9.7','0.9.6');
+//  SSLDLLVers : array [0..3] of string = 
('0.9.9','.0.9.8','.0.9.7','0.9.6');
    {$ENDIF}
    {$IFDEF WIN32_OR_WIN64_OR_WINCE}
    SSL_DLL_name       = 'ssleay32.dll';  {Do not localize}
@@ -9479,9 +9485,9 @@
    @IdSslWrite := LoadFunction(fn_SSL_write);
    @IdSslCtxCtrl := LoadFunction(fn_SSL_CTX_ctrl);
    @IdSslGetError := LoadFunction(fn_SSL_get_error);
-  @IdSslMethodV2 := LoadFunction(fn_SSLv2_method);
-  @IdSslMethodServerV2 := LoadFunction(fn_SSLv2_server_method);
-  @IdSslMethodClientV2 := LoadFunction(fn_SSLv2_client_method);
+//  @IdSslMethodV2 := LoadFunction(fn_SSLv2_method);
+//  @IdSslMethodServerV2 := LoadFunction(fn_SSLv2_server_method);
+//  @IdSslMethodClientV2 := LoadFunction(fn_SSLv2_client_method);
    @IdSslMethodV3 := LoadFunction(fn_SSLv3_method);
    @IdSslMethodServerV3 := LoadFunction(fn_SSLv3_server_method);
    @IdSslMethodClientV3 := LoadFunction(fn_SSLv3_client_method);




More information about the fpc-pascal mailing list