Delphi Support OpenSSL and HTTPS for iOS Devices
Dal 2014 è possibile compilare applicazioni con Delphi per il mondo IOS ed integrare la libreria Indy per la comunicazione TCP/IP con cifratura SSL grazie ad OpenSSL, come documentato nel sito di Embarcadero al seg. link https://blogs.embarcadero.com/openssl-and-https-support-for-ios-devices/.
Questo è possibile farlo includendo la libreria “IdSSLOpenSSLHeaders_Static.pas” nel vostro progetto e copiando le librire compilate libssl.a e libcrypto.a.
Queste librerire vengono compilate all’interno del vostro progetto, perchè lato IOS è difficoltoso utilizzare lib linkate dinamicamente.
A questo punto potete utilizzare i vostri “handler” SSL come seite abituati a fare per i vostri client o server su altre piattaforme.
Il fatto che le librerie libssl.a e libcrypto.a vengano linkate all’interno dell’eseguibile finale del vostro progetto, implica che se tali librerie non hanno un header compatibile con quello che si aspetta la unit “IdSSLOpenSSLHeaders_Static.pas” in fase di link del progetto potreste incorrere in un errore di link.
Un ormai classico errore di link delle lib inquestione è:
“https://en.delphipraxis.net/topic/3563-ios-libcryptoa-libssla/#:~:text=Error 22_SSL_COMP_free_compression_methods referenced from__ZN26Idsslopensslheaders_static38SSL_COMP_free_compression_methods_funcEv in IdSSLOpenSSLHeaders_static.o symbol(s) not found for architecture arm64”
questo implica che bisogna ricompilare le lib in questione per la versione corrente di SSL supportata da Indy. Con Delphi 12, ho comodamente utilizzato le librerie già compilate all’interno della liberia open source “Kastri” :