from EMB forum : https://forums.embarcadero.com/thread.jspa?messageID=870089󔛉
Apple will require TLS v 1.2 from 1 Jan 2017, Delphi don't support it ( DataSnap - App ), are there any workaround ?
I need that DataSnap TCP mode ( standalone .exe server ) support TLS 1.2 on Berlin Update 2
Remy thank you for Indy support, Are there any update for it ?
Any link:
https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/
https://plus.google.com/103013776067604117964/posts/b3Si46bjnwA
https://indy.fulgan.com/indy10.changelog.txt
SSLVersions = TIdSSLVersions(32);
is not good syntax to use, it is dependant on an implementation detail of how Sets are laid out in memory. You should use SSLVersions = TIdSSLVersions() << sslvTLSv1_2;
instead
_SSLProtocols_ = 0;
TStringList *protoList = new TStringList('"', ':');
protoList->DelimitedText = "tlsv1:tlsv1_1:tlsv1_2";
if (protoList->IndexOf("ssl2") >= 0)
_SSLProtocols_ = _SSLProtocols_ | 1 /*((int)Idsslopenssl::TIdSSLVersion::sslvSSLv2)*/;
if (protoList->IndexOf("ssl3") >= 0)
_SSLProtocols_ = _SSLProtocols_ | 2 /*((int)Idsslopenssl::TIdSSLVersion::sslvSSLv3)*/;
if (protoList->IndexOf("tlsv1") >= 0)
_SSLProtocols_ = _SSLProtocols_ | 8 /*((int)Idsslopenssl::TIdSSLVersion::sslvTLSv1)*/;
if (protoList->IndexOf("tlsv1_1") >= 0)
_SSLProtocols_ = _SSLProtocols_ | 16 /*((int)Idsslopenssl::TIdSSLVersion::sslvTLSv1_1)*/;
if (protoList->IndexOf("tlsv1_2") >= 0)
_SSLProtocols_ = _SSLProtocols_ | 32 /*((int)Idsslopenssl::TIdSSLVersion::sslvTLSv1_2)*/;
SSLHandler->SSLOptions->SSLVersions = TIdSSLVersions(_SSLProtocols_);
TIdSSLVersions _SSLProtocols_;
...
_SSLProtocols_ = TIdSSLVersions();
TStringList *protoList = new TStringList('"', ':');
protoList->DelimitedText = "tlsv1:tlsv1_1:tlsv1_2";
if (protoList->IndexOf("ssl2") != -1)
_SSLProtocols_ << sslvSSLv2;
if (protoList->IndexOf("ssl3") != -1)
_SSLProtocols_ << sslvSSLv3;
if (protoList->IndexOf("tlsv1") != -1)
_SSLProtocols_ << sslvTLSv1;
if (protoList->IndexOf("tlsv1_1") != -1)
_SSLProtocols_ << sslvTLSv1_1;
if (protoList->IndexOf("tlsv1_2") != -1)
_SSLProtocols_ << sslvTLSv1_2;
SSLHandler->SSLOptions->SSLVersions = _SSLProtocols_;