Difference between revisions of "ICS Download"

From Overbyte
Jump to navigation Jump to search
 
(53 intermediate revisions by the same user not shown)
Line 1: Line 1:
ICS is available as source code only. You need Delphi to build the sample programs and create your own application. You will also need OpenSSL libraries if using SSL-enabled components.
+
ICS is available as source code only. You need Delphi to build the sample programs and create your own application.  
  
 
'''ICS versions available:'''
 
'''ICS versions available:'''
  
*'''ICS-V8''' for Delphi 7 / C++ Builder 2006 to Delphi XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0 / C++ Builder XE3, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0 with FireMonkey cross platform support for POSIX/MacOS, also IPv6 support (main development tree, 32 and 64-bit).  
+
*'''ICS-V9''' for Delphi 7 to Delphi 12 / C++ Builder 10.2 to 12, FireMonkey cross platform support for POSIX/MacOS (long term support release, 32 and 64-bit).  
*'''ICS-V7''' for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder XE3 (stable release, no new development, please upgrade to V8).  
+
*'''ICS-V8''' for Delphi 7 to Delphi 11 (stable release, no new development, please upgrade to V9). 
*'''ICS-V6''' for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder 2007 (discontinued and obsolete, please upgrade to V7 if you do not have to support Windows versions < W2K).
+
*'''ICS-V7''' for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder XE3 (discontinued and obsolete, please upgrade to V9).  
*'''ICS-V5''' for Delphi / BCB 1 to Delphi / C++ Builder 2007 and Delphi .NET (discontinued, important bug fixes may still be backported from ICS-V7). SSL option requires at least Delphi 7 or C++ Builder 2006.
+
*'''ICS-V6''' for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder 2007 (discontinued and obsolete, please upgrade to V9 if you do not have to support Windows versions < W2K).
 +
*'''ICS-V5''' for Delphi / BCB 1 to Delphi / C++ Builder 2007 and Delphi .NET (discontinued and obsolete, please upgrade to V9).
  
 
== ICS News ==
 
== ICS News ==
  
Major Changes in '''ICS V8.69''' include:
+
Major Changes in '''ICS V9.1''':
  
#Major Changes in ICS V8.69 include:
+
Although ICS V9.1 does not contain any new components, there are many other SSL/TLS changes that will affect existing applications, but make ICS easier to use and support for the future.
#V8.69 has a lot of minor improvements, more HTTP client and server features, better built-in authentication, and added built in file uploading to the REST client component. Also continuing improving all the HTTP samples so they now hopefully test all the features of the ICS HTTP server, specifically adding POST and PUT file uploading,  and a new client login window for interactive authentication with servers.  Also added OCSP (Online Certificate Status Protocol) to ICS, which is used to check SSL/TLS certificates are legitimately issued and not revoked.
 
#In the HTTP client, added new methods RequestAsync and RequestSync which start a specified request by parameter, useful to repeat the last request from an event (such as should be trust the certificate and repeat). When using a proxy, make sure Path is not blank which will break proxies, change to / as for non-proxy requests.  GetRequestDoneErrorStr now handles TWsocket errors. Fixed NTLM authentication which got broken in V8.61.  Added a new THttpAuthType of httpAuthDigest2 for Digest with the modern SHA-256 algorithm instead of MD5 used by httpAuthDigest, only with USE_SSL. Added new property WWWAuthInfos array filled after 401/407 failure by parsing AuthorizationRequest headers for AuthType and Realm that may be presented to select an authentication option, get login and repeat request. Remove # fragment anchor rom the URL unless the new Option httpoAllowAnchor is set.
 
#In the HTTP REST client, added built in file uploading using POST or PUT. The file name is specified in HttpUploadFile using type HttpUploadStrat ofHttpUploadSimple with parameters in the URL or HttpUploadMIME for multipart with parameters in the first MIME part. Note the applications needs to supply parameters like FileName so the server knows what to do with the file. This may be tested against the ICS web server samples.  Upon request completion, ReasonPhrase now also has status, so OK becomes 200 OK, etc.  Previously the SslRevocation property was only effective when checking the windows certificate store, now it also works with bundle files using the new TOcspHttp component and OCSP stapling if available.
 
#In the HTTP server component, now converting FLastModified to UTC/GMT time for the response header.  Added new authentication type atDigestSha2 with a SHA256 hash instead of MD5 with atDigest only supported with USE_SSL. Note: Mozilla Firefox supports Digest SHA-256, Chrome and Edge do not. Added a new client connection OnHttpRespHdr event to allow response headers to be logged, previously only request headers could be logged.  Cleaned up AnswerStream functions so separate lines don't go into send buffer. Added OcspSrvStapling property which should be set to enables OCSP checks and stapling only with AUTO_X509_CERTS define since it adds extra HTTP client code. A revoked certificate will be auto ordered.
 
#In TWSocket, added new method SendTB(const Data: TBytes; Len: Integer=-1) where Len is optional, also similar SendToTB and SendToTB6 with TBytes, as an alternative to casting such types to use Send(). Restored the TlsExtension_cb callback for client debugging since ClientHelloCallback only works with servers.
 
#In TSslWSocketServer added OCSP (Online Certificate Status Protocol) support with IcsHosts using the TOcspHttp component to confirm server SSL/TLS certificates are legitimate and not revoked for security reasons. The certificate OCSP response is also stapled to the initial SSL/TLS HELO handshake and sent to the client to avoid it needing to lookup OCSP using HTTP itself. OCSP responses are cached and saved to a file for reloading later, but are refreshed every time the certificate is validated, at least once a day. The new server property OcspSrvStapling enables OCSP checks and stapling only with AUTO_X509_CERTS define since it adds extra HTTP client code. A revoked certificate will be auto ordered.  OCSP checking is done in LoadOneCert and the stapled response sent in TriggerSslServerName when checking SNI.  The same OCSP support is available in all ICS servers that use IcsHosts, including FTP, HTTP and TIcsIpStrmLog.
 
#All three main HTTP SSL client sample applications FrameBrowserIcs, OverbyteIcsHttpsTst and OverbyteIcsHttpRestTst now support interactive authentication with a new Login window that displays the different methods the server will accept (from the new property WWWAuthInfos array) allowing one to be selected from Basic, Digest MD5, Digest SHA256 and NTLM logins. This window is displayed after an 401 error and the request then repeated.
 
#The OverbyteIcsHttpsTst SSL sample now has all the missing features from the non-SSL samples, Content Encoding Gzip tick box to support compression, persistent cookie support, POST/PUT support to either send simple data or upload files in various ways (from OverbyteIcsHttpPost1 sample), may be tested against the ICS web server samples.
 
#The OverbyteIcsDDWebService SSL web server sample now builds on unicode compilers. Added authentication for POST requests and new 'Password protected page (POST)' button on the demo menu to test authentication using POST. Fixed web logging to log correct multiple listener.  Builds on unicode compilers. Added Digest SHA-256 authentication page DemoDigest2Auth.html and DemoDigestsAll.html that does both digests.  DemoAuthAll.html no longer does NTLM, use the separate page. Now displays server response headers if box ticked, only displayed request headers before. File Upload Form and Email Form pages now work without exceptions.  The OverbyteIcsSslMultiWebServ SSL web sample has similar new authentication features and logging fixes.
 
#Updated OpenSSL to 3.0.3 and ZLIB (HTTP compression) to 1.2.12, sorry for long delay in updating zlib, now including some important bug fixes, although never saw  any issues with the minimal use ICS makes of it.  Updated the various ICS CA Trusted Stores.
 
#The OverbyteIcsPemtool SSL sample now does OCSP checks when examining certificate files.  There is also a new Test Host Certificates tab that tests SSL/TLS handshake and certificates (using TIcsIpStrmLog) for a list of host names and  ports, building a list of host and intermediate certificates that may be further checked and saved as files or added to an intermediate bundle. This new tester should prove useful for debugging sites that return SSL or certificate errors.
 
  
More detailed release notes are at [[ICS_V8.69 | ICS 8.69 Release Notes]]
+
#Delphi 10.4 and later now use the same install groups and packages, IcsInstallFmx, IcsInstallVcl and IcsInstallVclFmx, making support a lot easier. Version specific groups remain for Delphi 10.3 and earlier, with new groups D(X)InstallVcl for VCL only replacing the old OverbyteIcs(X) groups, again to simplify support. Dozens of old packages have been removed for this release, so please delete all old groups and packages before installing V9.1, to avoid a mix of old and new packages.  Only C++ 10.4 and later are now supported, but untested.
 +
#The old samples directory has gone and many of the older and little used samples have been archived to a separate download.  The active samples used to test and demonstrate all ICS components are now split into the following paths, in the ICS root directory: All these samples can now be built for Win32 and Win64 platforms.
 +
##demos-delphi-vcl - 45 VCL samples for Windows.
 +
##demos-delphi-extra - four VCL samples that need third party components to build.
 +
##demos-delphi-fmx - seven FMX samples for Windows, not yet tested on MacOS.
 +
##demos-cpp-vcl - all old C++ samples that have not been tested for 10 years, need help.
 +
##demos-data - data files for samples, such as web pages.
 +
#To ease development, linking and future support, some new units have been added by splitting existing units with multiple components, unfortunately this means many existing projects will need one or more of the new units adding to their uses section.  Apologies for the pain, but this should have been done a long time ago.  The main change is splitting out much of the SSL/TLS related code from the massive OverbyteIcsWSocket unit to a new unit OverbyteIcsSslBase.
 +
#Distribution of the ICS OpenSSL files has changed.  Earlier ICS versions required the OpenSSL DLLs to be distributed with applications, and a root CA bundle file to verify SSL/TLS connections, and these needed to be loaded using code.  There was little standardisation over where the OpenSSL DLLs were located, applications tended to keep their own copies alongside other executables, leading to multiple DLL copies and needing the public variable GSSL_DLL_DIR set to a specific directory before OpenSSL was loaded.  Likewise, root CA bundle directories had to be distributed with applications and loaded with code. ICS V9.1 allows five different ways of loading OpenSSL: Which method ICS uses to load OpenSSL depends upon several defines in the .\Source\Include\OverbyteIcsDefs.inc file, please see the readme9.txt file for details. ICS currently includes resource files for three different OpenSSL releases, 3.0`13. 3.1.5 and 3.2.1, which version is linked is controlled by a define. If the OpenSSL DLLs are linked into the application, they are extracted to a version subdirectory, ie C:\ProgramData\ICS-OpenSSL\3012\ so different applications can use different OpenSSL versions.  This happens only once if the files have not already been extracted.  When updating existing projects without using any new defines, the ICS old behaviour of methods 3, 4 and 5 above remain with no changes needed.
 +
##DLLs linked into application as resource files
 +
##DLLs loaded from common directory C:\ProgramData\ICS-OpenSSL\
 +
##OpenSSL DCU linked into application using commercial YuOpenSSL
 +
##DLLs loaded from location specified in public variable GSSL_DLL_DIR
 +
##DLLs loaded according to path, may be found anywhere on PC
 +
#A common IcsSslRootCAStore component is now created at application start-up, to avoid different components needing their own CA stores to verify SSL/TLS certificates, and for applications to load those stores. The three different CA stores included with ICS are now supplied as resource files, with a define determining which is linked into applications.Another define causes OpenSSL and this store to be loaded at application startup, so OpenSSL is available for allcomponents, without it needing to be loaded again, perhaps repeatedly.  Without new defines, a CA Store can be loaded manually into IcsSslRootCAStore. The ICS servers use CA Stores now use IcsSslRootCAStore and no longer load any files specified.
 +
#All SSL/TLS servers need a certificate and private key to start, even when testing.  Previously ICS supplied some self signed certificates for testing, and also created such certificates automatically if they were missing or if the server was about to order a Let's Encrypt certificate.  Accessing such servers for testing using browsers raised various warnings.ICS now has it's own SSL root certificate 'ICS Root CA' and two intermediates, 'ICS Intermediate' and 'ICS Intermediate Short', the last of which includes a private key so can be used to automatically sign new certificates by ICS server applications, rather than just self signed certificates as before. If the 'ICS Root CA' certificate is installed in the Window Store and browser stores, it should stop certificate warnings appearing. ICS applications automatically trust the ICS root, so will give no warnings. The short intermediate has a maximum 100 day expiry, so new versions will be issued regularly. There is a single function CreateSelfSignCertEx that created signed certificates, and another IcsInstallIcsRoot that installs the ICS root into the Windows Store, so easy to use. It is possible to replace the ICS root with your own private root certificate and have servers create their own certificates against that root, for internal networks.
 +
#The TSslHttpRest component now allows TRestParams to be created as content type 'Form-Data Body' to create MIME multipart/form-data parameters that may include new TParamType of RPTypeFile that specifies a file name whose binary content will be added to the parameters as a file upload, allowing multiple files and extra parameters. TRestParams are now built into a TStream rather than a string to allow larger parameter sizes, tested up to 8GB. The ICS web server samples have improved MIME decoding to accept massive uploads.
 +
#Several client and server components have a new property NoSSL which if set will prevent those components using SSL/TLS for HTTPS or FTPS, even if the application is linked with OpenSSL code.  Beware the IcsSslRootCAStore component must not be initialised by the application.
  
Major Changes in '''ICS V8.68''' include:
+
Full release notes are at More detailed release notes are at [[ICS_V9.1 | ICS 9.1 Release Notes]]
  
#V8.68 is a minor release, mainly HTTP client and server improvements including new request and response headers to assist browser caching and conditional requests, improved error reporting to help diagnose failed HTTP requests, and improvements in the HTTP REST component allowing it to save files including resuming failed downloads and download files of any size.  There are minor fixes in various components, and updates to installing on MacOS and C++ Builder. There is also a new File Clean-Up demo ideal for deleting the old log files that many applications (including some ICS samples) leave on systems.
+
More detailed instructions for updating to V9.1 are at [[Updating_projects_to_V9.1 | pdating projects to V9.1]
#The HTTP client TSslHttpCli now keeps the Etag response header as ResponseEtag, allowing applications to save it with the page content, and when requesting a refresh to add the request method ReqIfNoneMatch or ReqIfMatch to avoid downloading the page again. Improved RequestDoneError to give more information than a simple abort, added httperrOutOfMemory and httperrBgException which happen while receiving and processing data in the OnDocData event and httperrSslHandShake. For range downloads, added the ContentIfRange request header which can send an RFC1123 date or Etag so a partial download only happens if the file is unchanged.
 
#Previously, the HTTPS REST client TSslHttpRest always downloaded content to a TMemoryStream with content size being limited to MaxBodySize (default 100 MByte), and generally restricted by memory to less than 250 MByte.  To remove this limitation, added the HttpMemStrategy property with THttpMemStrategy on how to handle downloads: HttpStratMem only TMemoryStream; HttpStratTemp uses a work file in the system temporary directory for sizes larger than MaxBodySize; HttpStratFile always writes a named file HttpDownFileName (with .part extension during download); HttpStratResume is similar to HttpStratFile but supports resume of failed partial downloads (with .http extension for resume information). Property ResumeMinSize defines the minimum sized partial file that should be resumed, rather than start again (default 64K). Added ShowProgress property that causes download information to be sent to the OnHttpRestProg event.
 
#The HTTP server TSslHttpServer now supports the If-Range, If-Match and If-None-Match request headers for conditional pages using Etag or last modified date, and sends 304 not modified for matches, to help with caching. Added an ETag header to responses in AnswerStream and AnswerPage when we can create one from a file modification date and size (base64 CRC32), or if the EntityTag property is specified in the client onGetDocument event before using hgSendDoc or hgSendStream, perhaps a CRC32 of the entire content from a cache. The 304 not modified response now includes more recommended headers. Also add a Date: header to AnswerStream and AnswerPage responses to help with caching.
 
#The Multi HTTPS client TIcsHttpMulti has been updated to a fix a problem that meant large files failed download with only an abort error if too large for TMemoryStream, now downloaded to TFileStream with .part extension and renamed up successful completion.
 
#The previous ICS release added support for the OpenSSL 3.0 release. Now it's been available for three months it has been added to the main distribution, the samples SslInternet directory now has both OpenSSL 1.1.1m and 3.0.1. ICS now supports YuOpenSSL 3.0 and 1.1.1 vrsions as commercial DCUs allowing applications to be used with OpenSSL without needing separate DLLs.
 
#In TIcsFileCopy, the DeleteFiles method now supports a new Zipped property so files are zipped with .zip extension before being deleted, useful for cleaning up old logs to save space (requires VCLZip).  The OverbyteIcsXferTst,dpr sample has a new File Clean-Up tab to test the multiple DeleteFiles method, it allow files older than x days or a specific date range to be archived/zipped (to save space) or deleted, ideal for deleting the old log files that many applications (including some ICS samples) leave on systems.
 
#In the FTP client TSslFtpClient, using the PORT command to set Active mode now prevents other FTP clients sharing the same port number and address, usually only a problem with a small port pool (which is not recommended).
 
#Updated the trusted root certificate bundle files, lots of changes from Microsoft since June, Google is now issuing it's own certificates. Updated the build-in sslRootCACertsBundle, few gone, now total 59 certificates commonly used.
 
#ICS should now build with C++ for RAD Studio 10.4 and 11.0, fixed the 11.0 packages and various Windows API related units, including for Win64.
 
  
More detailed release notes are at [[ICS_V8.68 | ICS 8.68 Release Notes]]
 
  
  
Major Changes in '''ICS V8.67''' include:
+
Major Changes in '''ICS V9.0''' include:
  
# Added support and packages for RAD Studio 11.0.  Updated SSL/TLS root certificate bundles, old certificates gone, new ones added, nothing major.
+
'''New samples'''
# Added support for OpenSSL 3.0 which is a major new release, primarily a lot of internal changes to ease long term support. There is an optional FIPS module with 3.0 but not available here since our DLLs are not built to the standards required for certification. The old engines for special extensions are replaced by new more versatile providers of which the FIPS module is one, a provider legacy.dll has obsolete ciphers and hash digests, including MD2, MD4, Blowfish, DES, IDEA, RC2, RC4, SEED, that most applications no longer need and which needs to loaded by the application by setting global variable GSSLEAY_LOAD_LEGACY to true before loading OpenSSL.
 
# OpenSSL 3.0 does not offer any specific new features of benefit to ICS at present, although HTTP/3 support is planned for 3.1 or later, so the main ICS distribution retains OpenSSL 1.1.1i which is fully supported until September 2023. OpenSSL 3.0 may be downloaded from the download page.
 
# The main implication for ICS with OpenSSL 3.0 is for SSL/TLS certificate private keys saved with password protection, which is required for PKCS12 certificates for importing into the Windows certificate store. The new PKCS12 default password encryption AES256 is not recognised until Windows Server 2016 v1709  and Windows 10 v1709, so Server 2012, Windows 10 RTM and earlier won't load AES passworded keys, only 3DES, for which the legacy.dll must be loaded.
 
# There are two new classes to write and read SSL/TLS certificates to and from the Windows Certificate Store, including private keys. This is primarily so Let's Encrypt certificates can be installed automatically for use with the IIS web server.
 
# Various improvements for the OverbyteIcsPemTool sample.  It includes new buttons to list the  contents of Windows certificate and private key stores and allow old items to be deleted.  This may be useful for cleaning up old certificates and private keys from the Windows stores.
 
# For the TX509Certs component, the default cipher for encrypting PFX/P12 files is now PrivKeyEncAES256 with 3.0 unless the legacy DLL is loaded when still PrivKeyEncTripleDES so older versions of Windows can load them. Changed extraction of download PEM bundle so that main certificate does not need to be  first in file, log them all, and ignore any self signed root certificates.
 
# Fixed two problems in the FTP client, support option ftpFixPasvLanIP for PUT/APPE uploads as well as  downloads, and support IPv6 for PUT/APPE uploads as well as downloads.
 
# In the Application Web Server TSslHttpAppSrv, added an optional LastModified parameter to the AnswerStream, AnswerPage, and AnswerString methods to avoid adding a custom header line with the date.  Added NO_CACHE_EX and NO_STORE_EX literals. Added PUT and DELETE verb handlers, similar to GET and POST.
 
# For the HTTP client TSslHttpCli, fixed a relocation problem where the Location: header included a path with a space, encode the space. Fixed another relocation problem where HEAD sometimes stalled. Remove # fragment or anchor from URL in relocation, only used by browsers and not by servers.
 
# Added a new SSL sample, OverbyteIcsDDWebService.dpr which is very similar to OverbyteIcsSslMultiWebServ.dpr, but designed as a Windows service, although it will also run as a GUI for debugging.  It requires DDService service framework to be installed from https://www.magsys.co.uk/delphi/ddservice.asp. It also includes a REST server with simple lookup responses from a SQL database, which optionally requires DISQLite3 5.36.5 or later to be installed from http://www.yunqa.de. Note this sample in not in the project groups due to these pre-requisites.
 
# Moved TRestParams from the OverbyteIcsSslHttpRest unit to OverbyteIcsUrl to ease circular references. Added a new method AddItemNULL to add a null, in Json this will be unquoted. Added a new TRestParamsSrv component which provides methods for creating REST server Json responses from a SQL database esultset, one or more rows, also error responses. Note this is only compiled if DATABASE is defined in OverbyteIcsDefs.inc to avoid bringing in database units that are not available on all Delphi editions.  There is a REST server sample OverbyteIcsDDWebService.dpr that illustrates SQL lookups.
 
# In the proxy component TIcsHttpProxy, don't send an HTTP request header until after HTTP body has been processed in case the body length changes. HTTP Forward Proxy using HTTP works again, broken in V8.65. Using HTTP Forward Proxy, convert absolute URL to path only since some servers can not process an absolute URL and sulk.
 
# In the Jose unit, rewrote the functions converting private keys to and from Json Web Keys with new OpenSSL 3.0 provider functions. Use AnsiStrings and functions when dealing with binary data to avoid possible issues with string conversions and nulls.  Json now created with TRestParams.
 
# Added two new sample project groups, OtherDemos64 and SslDemos64 which include Win64 versions of all the main active samples with 64 added to the project name, so they can be regularly built alongside the Win32 versions without changing platforms and overwriting executables.
 
  
More detailed release notes are at [[ICS_V8.67 | ICS 8.67 Release Notes]]
+
Samples/Delphi/SslInternet/OverbyteIcsSnippets - Small samples of codes for FTP, HTTP, sockets and email.
 +
 
 +
Samples/Delphi/OtherDemos/OverbyteIcsNetMon - Internet Packet Monitoring Components, display packets and traffic using Npcap and raw sockets.
 +
 
 +
Samples/Delphi/OtherDemos/OverbyteIcsNetTools - Network Tools Demo, uses all the main IP Helper functions, also TTIcsNeighbDevices, TIcsDomainNameCache, IcsDnsQueuy, TDnsQueryHttps, TIcsWhoisCli, TIcsIpChanges, TPing and TPingThread.
 +
 
 +
Samples/Delphi/PlatformDemos/IcsHttpRestTstFmx - FMX HTTPS REST and OAuth, Send SMS and DNS over HTTPS functions demo.
 +
 
 +
Samples/Delphi/PlatformDemos/IcsSslMultiWebServ - FMX Advanced multi host web server demo.
 +
 
 +
Samples/Delphi/SslInternet/OverbyteIcsMQTTst - MQ Telemetry Transport message queuing service.
 +
 
 +
 
 +
'''Major sample updates for new components'''
 +
 
 +
Samples/Delphi/SslInternet/OverbyteIcsHttpRestTst1 - Uses TSslWebSocketCli for WebSocket Client, New embedded TOAuthLoginForm window using TOAuthBrowser for OAuth2 logins. Select client SSL certificate from the Windows Certificate Store.
 +
 
 +
Samples/Delphi/SslInternet/OverbyteIcsSslMultiWebServ.dpr, OverbyteIcsDDWebService - Uses THttpWSSrvConn for WebSocket Server. IcsHosts can use server SSL certificate from the Windows Certificate Store. IcsHosts can now request a SSL certificate from the remote client. WebSocket server support. Uses TIcsDomainNameCache for multiple reverse DNS lookups.
 +
 
 +
Samples/Delphi/SslInternet/OverbyteIcsPemTool - Can now export an SSL certificate from the Windows Certificate Store with its private key.
 +
 
 +
Samples/delphi/OtherDemos/OverbyteIcsBatchDnsLookup - Uses TIcsDomainNameCache for multiple lookups.
 +
 
 +
Samples/Delphi/SslInternet/OverbyteIcsSslMailSnd, OverbyteIcsSslMailRcv, OverbyteIcsMailQuTst - New embedded TOAuthLoginForm window using TOAuthBrowser for OAuth2 logins.
 +
 
 +
Samples/delphi/OtherDemos/OverbyteIcsNsLookup - Uses single or multiple DNS servers, including built-in list of public servers, also sync requests.
 +
 
 +
 
 +
'''New Components'''
 +
 
 +
TIcsDomainNameCache and TIcsDomNameCacheHttps - cache forward and reverse DNS lookup requests, using several methods.
 +
 
 +
TIcsMonSocket - Internet monitoring using raw sockets.
 +
 
 +
TIcsMonPcap - Internet monitoring using Npcap NDIS driver.
 +
 
 +
TIcsIpChanges - Monitors IP address changes dynamically.
 +
 
 +
TIcsNeighbDevices - Builds historic LAN MAC device and IPv4 and IPv6 address table using ARP, neighbourhood and IP range scanning with reverse host lookup.
 +
 
 +
TOAuthBrowser - OAuth authentication browser window VCL/FMX form.
 +
 
 +
TSslWebSocketCli - WebSocket client protocol.
 +
 
 +
TIcsMQTTServer and TIcsMQTTClient - MQ Telemetry Transport message queuing service, client and server.
 +
 
 +
 
 +
'''Major Component Upgrades'''
 +
 
 +
TDnsQuery - Add synchronous methods and more response properties. Check multiple DNS server hosts including public DNS lists.
 +
 
 +
TSslWSocketServer - IcsHosts can use server SSL certificate from the Windows Certificate Store. IcsHosts can now request a SSL certificate from the remote client.
 +
 
 +
TIcsFtpMulti - Send NOOP command periodically during multi hour transfers so connections are not closed accidentally.
 +
 
 +
 
 +
'''New classes and Functions'''
 +
 
 +
THttpWSSrvConn - WebSocket server protocol.
 +
 
 +
Internet Helper Functions - Unit OverbyteIcsIpHlpApi.pas includes IpHlpConnsTable, IpHlpAdaptersInfo, IpHlpAdaptersAddr, IpHlpIpAddrTable, IpHlpIpNeighbTable, IpHlpIPForwardTable, IpHlpIpPathTable, IpHlpGetDnsServers, IpHlpIfTable2,
 +
 
 +
IpHlpIPStatistics, IpHlpUDPStatistics and many other functions.
 +
 
 +
TIcsMonFilterClass - Filter network traffic on protocols or IP addresses.
 +
 
 +
TIcsTrafficClass - Maintains network traffic statistics by protocols and IP addresses.
 +
 
 +
 
 +
More detailed release notes are at [[ICS_V9.0 | ICS 9.0 Release Notes]]
 +
 
 +
 
 +
Major Changes in '''ICS V8.70''' include:
 +
 
 +
#V8.70 has various minor improvements providing better compatibility with modern compilers such as more unicode overloads to avoid ANSI string warnings and casts, and more use of TBytes to avoid ANSI strings. Updated various samples to use TIcsRestEmail to support OAuth2 authentication for GMail and Outlook that no longer allow old authentication protocols.
 +
#The TIcsFileCopy, TIcsFtpMulti and TIcsHttpMulti file transfer components now support file zipping and unzipping using System.Zip in recent Delphi compilers, instead of the obsolete VclZip which is no longer available. Before a file copy or FTP upload, files may be automatically zipped, useful for large log files, after a file copy, FTP or HTTP download, files may be unzipped in various ways. 
 +
#Added support to TIcsFileCopy to copy file names longer than 259 characters by adding \\?\ to the start of long names passed to Windows APIs, if supported by the disk file system, unicode APIs only. Fixed a problem deleting empty directories after copying. Fixed a problem with BuildDirList2 with COMPILER16_UP.
 +
#The OverbyteIcsXferTst sample has a new tabs, 'Single File Copy' to test the CopyOneFile method and 'Zip/Unzipping Files' to test zipping and unzipping that has always been supported by the components but not this demo.
 +
#Allow content compression for HTTP and FTP using System.Zlib in newer versions of Delphi instead of the OverbyteIcsZLibObj unit to avoid duplication. Only Delphi 11.1 and later have the same ZLIB 1.2.12 as ICS, so will automatically used System.Zip.  Beware a new version of OverbyteIcsDefs.inc is required to allow ZLIB to work correctly, otherwise it will default to using the DLL which is unlikely to be available, it is not in the distribution.  So either install the new inc file and customise it, or copy the ZLIB changes to your own inc file.
 +
#In TWsocket, added ReceiveTB(var Data : TBytes; MaxLen : Integer = -1): Integer; where MaxLen is optional, to receive TCP data into a TBytes dynamic array of bytes. Also ReceiveFromTB and ReceiveFrom6TB for UDP datagrams. The last release added similar SendTB functions, so buffer pointers and ANSI strings can now be avoided.
 +
#Added UTF-8 support to TIcsIpStrmLog, to convert received lines from UTF-8 to Unicode with unicode compilers (as String) and converts sent data to UTF-8. Changed FRxBuffer to TBytes, use SendTB and ReceiveTB methods with TBytes.
 +
#Updated OpenSSL to 3.0.7 and 1.1.1s.  OpenSSL 3.0.6 was withdrawn shortly after  release, we never distributed it.
 +
#In OverbyteIcsSslHttpOAuth, added an OAuth2 and Rest Email Microsoft User Authority property to access different user authorities, defaults to 'consumers' but can be changed to 'common' or an Azure Active Directory tenant GUID for corporate accounts.
 +
#Added TIcsRestEmail to support OAuth2 authentication to the OverbyteIcsSslMultiWebServ, OverbyteIcsSslMultiFtpServ and  OverbyteIcsDDWebService samples, since GMail and Outlook that no longer allow old authentication protocols.
 +
#In the TIcsInetAlive component, added a new method AliveMethEither so internet alive checking works if either ping or HTTP works, instead of one or the other.
 +
 
 +
More detailed release notes are at [[ICS_V8.70 | ICS 8.70 Release Notes]]
  
 
== Overbyte Website ==
 
== Overbyte Website ==
Line 67: Line 136:
 
There are four options to obtain the source code.
 
There are four options to obtain the source code.
  
[http://www.overbyte.eu/eng/products/ics.html '''Download from Overbyte web site''']
+
[https://www.overbyte.eu/eng/products/ics.html '''Download from Overbyte web site''']
  
ICS-V8 is the main development version and needed for RAD Studio XE4 and later.
+
ICS-V9 is the long term development version and needed for RAD Studio XE4 and later, it supports Delphi 7 and later.
Older versions are only here for very old compilers and don't have current SSL support.
 
  
== Latest Stable Version ICS V8.69 - recommended ==
+
== Latest Stable Version ICS V9.1 - recommended ==
  
This is the latest recommended version, which has been tested and used for various published ICS application.  It is updated for new releases of RAD Studio and major changes. V8.69 is the version displayed when RAD Studio starts and by the main unit OverbyteIcsWSocket.  Note these versions include the latest version of the OpenSSL DLLs at the time of release.   
+
This is the latest recommended version, which has been tested and used for various published ICS application.  It is updated for new releases of RAD Studio and major changes. V9.1 is the version displayed when RAD Studio starts and by the main unit OverbyteIcsWSocket.  Note these versions include the latest version of the OpenSSL DLLs at the time of release.   
  
 
{| border="1" cellpadding="4" style="background:#eee;border:1px solid #ccc;text-align:left;border-collapse:collapse;"
 
{| border="1" cellpadding="4" style="background:#eee;border:1px solid #ccc;text-align:left;border-collapse:collapse;"
Line 80: Line 148:
 
! Download !! Platforms
 
! Download !! Platforms
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv869.zip ICS-V8.69] || Delphi 7 to XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0, C++ Builder 2006 to XE3, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0. Includes OpenSSL 3.0.3.  
+
| [https://{{SERVERNAME}}/arch/icsv91.zip ICS-V9.1] || Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12, C++ Builder 10.4, 11 and 12. Includes OpenSSL 3.0.13. 3.1.5 and 3.2.1.
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv91-new.zip ICS-V9.1] || Delphi 10.4, 11 and 12 only. Includes OpenSSL 3.0.13. 3.1.5 and 3.2.1.
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv90.zip ICS-V9.0] || Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4, 11 and 12. Includes OpenSSL 3.1.2.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv869-D110.zip ICS-V8.69] || Delphi 11.0 only. Includes OpenSSL 3.0.3.
+
| [https://{{SERVERNAME}}/arch/icsv90-D12.zip ICS-V9.0] || Delphi 12 only. Includes OpenSSL 3.1.2.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv869-D104.zip ICS-V8.69] || Delphi 10.4 Sydney only. Includes OpenSSL 3.0.3.
+
| [https://{{SERVERNAME}}/arch/icsv90-D11.zip ICS-V9.0] || Delphi 11 only. Includes OpenSSL 3.1.2.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv868.zip ICS-V8.68] || Delphi 7 to XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0, C++ Builder 2006 to XE3, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0. Includes OpenSSL 3.0.1.  
+
| [https://{{SERVERNAME}}/arch/icsv90-D104.zip ICS-V9.0] || Delphi 10.4 only. Includes OpenSSL 3.1.2.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv868-D110.zip ICS-V8.68] || Delphi 11.0 only. Includes OpenSSL 3.0.1.
+
| [https://{{SERVERNAME}}/arch/icsv870.zip ICS-V8.70] || Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.7.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv868-D104.zip ICS-V8.68] || Delphi 10.4 Sydney only. Includes OpenSSL 3.0.1.
+
| [https://{{SERVERNAME}}/arch/icsv870-D110.zip ICS-V8.70] || Delphi 11 only. Includes OpenSSL 3.0.7.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv867.zip ICS-V8.67] || Delphi 7 to XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0, C++ Builder 2006 to XE3, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney and 11.0. Includes OpenSSL 1.1.1i.  
+
| [https://{{SERVERNAME}}/arch/icsv870-D104.zip ICS-V8.70] || Delphi 10.4 only. Includes OpenSSL 3.0.7.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv867-D110.zip ICS-V8.67] || Delphi 11.0 only. Includes OpenSSL 1.1.1i.
+
| [https://{{SERVERNAME}}/arch/icsv869.zip ICS-V8.69] || Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.3.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv867-D104.zip ICS-V8.67] || Delphi 10.4 Sydney only. Includes OpenSSL 1.1.1i.
+
| [https://{{SERVERNAME}}/arch/icsv869-D110.zip ICS-V8.69] || Delphi 11 only. Includes OpenSSL 3.0.3.
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv869-D104.zip ICS-V8.69] || Delphi 10.4 only. Includes OpenSSL 3.0.3.
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv868.zip ICS-V8.68] || Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.1.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
 
|}
 
|}
Line 110: Line 186:
 
! Download !! Changes log
 
! Download !! Changes log
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv8w.zip ICS-V8 Snapshot] || [http://{{SERVERNAME}}/arch/change-log-icsv8.xml View]
+
| [https://{{SERVERNAME}}/arch/icsv9w.zip ICS-V9 Snapshot] || [http://{{SERVERNAME}}/arch/change-log-icsv9.xml View]
 
|}
 
|}
  
Line 120: Line 196:
  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv7w.zip ICS-V7 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv7.xml View]
+
| [https://{{SERVERNAME}}/arch/arch-samples-V9.1.zip ICS-V9.1 Archived Samples] ||
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv8w.zip ICS-V8 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv8.xml View]
 +
|- style="background:#fff;"
 +
| [https://{{SERVERNAME}}/arch/icsv7w.zip ICS-V7 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv7.xml View]
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv6w.zip ICS-V6 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv6.xml View]
+
| [https://{{SERVERNAME}}/arch/icsv6w.zip ICS-V6 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv6.xml View]
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| [http://{{SERVERNAME}}/arch/icsv5w.zip ICS-V5 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv5.xml View]
+
| [https://{{SERVERNAME}}/arch/icsv5w.zip ICS-V5 Archive] || [http://{{SERVERNAME}}/arch/change-log-icsv5.xml View]
 
|}
 
|}
  
Line 134: Line 214:
 
|-
 
|-
 
! ICS Version !! SVN URL !! HTTP URL
 
! ICS Version !! SVN URL !! HTTP URL
 +
|- style="background:#fff;"
 +
| ICS-V9 || svn://svn.overbyte.be/icsv9 || https://svn.overbyte.be/svn/icsv9
 
|- style="background:#fff;"
 
|- style="background:#fff;"
 
| ICS-V8 || svn://svn.overbyte.be/ics/trunk || https://svn.overbyte.be/svn/ics/trunk
 
| ICS-V8 || svn://svn.overbyte.be/ics/trunk || https://svn.overbyte.be/svn/ics/trunk
Line 146: Line 228:
 
Use username = '''ics''' and password = '''ics''' for read access. Write access is only available to TeamICS.
 
Use username = '''ics''' and password = '''ics''' for read access. Write access is only available to TeamICS.
  
== Download OpenSSL Binaries (required for SSL-enabled components) ==
+
== Download OpenSSL Binaries==
 +
 
 +
The OpenSSL binaries are required for all ICS SSL-enabled components.
 +
 
 +
The 64-bit DLLs are only for use with Delphi applications compiled for the 64-bit platform, the 32-bit DLLs work on both 32-bit and 64-bit Windows with 32-bit applications.
  
 
Please note older versions of the ICS source code had an internal check to only allow loading of the latest OpenSSL it was tested with, so you could not use new DLLs with an old application without recompiling with the latest version of ICS first.  
 
Please note older versions of the ICS source code had an internal check to only allow loading of the latest OpenSSL it was tested with, so you could not use new DLLs with an old application without recompiling with the latest version of ICS first.  
  
OpenSSL 1.0.2 and later are only supported by ICS v8, v7 is no longer updated for new OpenSSL versions. The 64-bit DLLs are only for use with Delphi applications compiled for the 64-bit platform, the 32-bit DLLs work on both 32-bit and 64-bit Windows with 32-bit applicationsNote that ICS V8.24 dated 3rd March 2016 and later included the latest OpenSSL 1.0.2 Win32 files to avoid a separate download. This was a long term support version for which free support ceased at the end of 2019, but paid support from OpenSSL continues for those needing it. ICS V8.65 is the last version to support 1.0.2.  
+
OpenSSL 1.0.2 and later were only supported by ICS v8, v7 is no longer updated for new OpenSSL versions.  This was a long term support version for which free support ceased at the end of 2019 unless you have an OpenSSL Premium Level Support contract for $50,000/year. ICS V8.65 was the last version to support 1.0.2.  
  
 
OpenSSL 1.1.0 is obsolete and no longer supported. ICS V8.65 is the last version to support 1.1.0.   
 
OpenSSL 1.1.0 is obsolete and no longer supported. ICS V8.65 is the last version to support 1.1.0.   
  
OpenSSL 1.1.1 is the latest long term support version and adds support for TLSv1.3 RFC8446 and various new cryptographic private key and hash digest types.  Delphi applications require ICS V8.57 or later.  ICS V8.57 and later include the Win32 and Win64 OpenSSL 1.1.1 files. This version will be supported until September 2023. OpenSSL 1.1.1 only supports Windows Vista and later, not XP.  
+
OpenSSL 1.1.1 was a long term support version and added support for TLSv1.3 RFC8446 and various new cryptographic private key and hash digest types.  Delphi applications require ICS V8.57 or later.  ICS V8.57 and later include the Win32 and Win64 OpenSSL 1.1.1 files. Support ceased in September 2023 unless you have an OpenSSL Premium Level Support contract for $50,000/year. OpenSSL 1.1.1 only supports Windows Vista and later, not XP. ICS V9.0 was the last version to support 1.1.1. 
  
 
OpenSSL 3.0 is a major new release, primarily a lot of internal changes to ease long term support. ICS 8.67 is required to support 3.0.  There is an optional FIPS module with 3.0 but not available here since our DLLs are not built to standards required for certification. The old engines for special extensions are replaced by new more versatile providers of which the FIPS module is one, a provider legacy.dll contained in the distribution has obsolete ciphers and hash digests that most applications no longer need and which needs to loaded by the application. This version will be supported until September 2026.
 
OpenSSL 3.0 is a major new release, primarily a lot of internal changes to ease long term support. ICS 8.67 is required to support 3.0.  There is an optional FIPS module with 3.0 but not available here since our DLLs are not built to standards required for certification. The old engines for special extensions are replaced by new more versatile providers of which the FIPS module is one, a provider legacy.dll contained in the distribution has obsolete ciphers and hash digests that most applications no longer need and which needs to loaded by the application. This version will be supported until September 2026.
  
Firefox version 63 and Chrome 71 both support TLSv1.3 final RFC8446, note Chrome has settings for older beta versions that must be disabled.
+
OpenSSL 3.1 is a minor new release, primarily FIPS improvements. ICS 8.67 is required to support 3.1. This version will be supported until March 2025.
 +
 
 +
OpenSSL 3.2 is a minor new release with QUIC client support for HTTP/3 and many other improvements. ICS 8.67 is required to support 3.2.  This version will be supported until November 2025.
 +
 
 +
OpenSSL 3.3 is a minor new release, minor QUIC and other features. ICS 8.67 is required to support 3.3. This version will be supported until April 2026.
 +
 
 +
Please note that ICS does not use any of the new features in OpenSSL 3.1, 3.2 or 3.3 at present, so continuing to use the latest patch version of 3.0 with security fixes is generally fine.
  
 
The OpenSSL DLLs and EXE files included in the zips above are digitally code signed 'Magenta Systems Ltd', one of the organisations that maintains ICS.  The Magenta Systems Code Signing Trust and Certificate Check component may be used to check the correctly signed DLLs are being used by ICS, with this functionality included in  ICS V8.38 and later.  Beware that Windows needs recent root certificates to check newly signed code, and may give an error if the root store has not been kept current by Windows Update, particularly on older versions of Windows such as XP, Vista and 7.
 
The OpenSSL DLLs and EXE files included in the zips above are digitally code signed 'Magenta Systems Ltd', one of the organisations that maintains ICS.  The Magenta Systems Code Signing Trust and Certificate Check component may be used to check the correctly signed DLLs are being used by ICS, with this functionality included in  ICS V8.38 and later.  Beware that Windows needs recent root certificates to check newly signed code, and may give an error if the root store has not been kept current by Windows Update, particularly on older versions of Windows such as XP, Vista and 7.
Line 166: Line 258:
 
! Date !! Download !! Description !! Comments
 
! Date !! Download !! Description !! Comments
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-05-06 || [http://{{SERVERNAME}}/arch/openssl-3.0.3-win64.zip OpenSSL Binaries Win-64 3.0.3 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-04-21 || [https://{{SERVERNAME}}/arch/openssl-3.3.0-win64.zip OpenSSL Binaries Win-64 3.3.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-05-06 || [http://{{SERVERNAME}}/arch/openssl-3.0.3-win32.zip OpenSSL Binaries Win-32 3.0.3 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-04-21 || [https://{{SERVERNAME}}/arch/openssl-3.3.0-win32.zip OpenSSL Binaries Win-32 3.3.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||  
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-05-06 || [http://{{SERVERNAME}}/arch/openssl-1.1.1o-win64.zip OpenSSL Binaries Win-64 1.1.1o requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.2.1-win64.zip OpenSSL Binaries Win-64 3.2.1 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-05-06 || [http://{{SERVERNAME}}/arch/openssl-1.1.1o-win32.zip OpenSSL Binaries Win-32 1.1.1o requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.2.1-win32.zip OpenSSL Binaries Win-32 3.2.1 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||  
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-03-15 || [http://{{SERVERNAME}}/arch/openssl-3.0.2-win64.zip OpenSSL Binaries Win-64 3.0.2 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.1.5-win64.zip OpenSSL Binaries Win-64 3.1.5 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-03-15 || [http://{{SERVERNAME}}/arch/openssl-3.0.2-win32.zip OpenSSL Binaries Win-32 3.0.2 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.1.5-win32.zip OpenSSL Binaries Win-32 3.1.5 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||  
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-03-15 || [http://{{SERVERNAME}}/arch/openssl-1.1.1n-win64.zip OpenSSL Binaries Win-64 1.1.1n requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.0.13-win64.zip OpenSSL Binaries Win-64 3.0.13 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2022-03-15 || [http://{{SERVERNAME}}/arch/openssl-1.1.1n-win32.zip OpenSSL Binaries Win-32 1.1.1n requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2024-02-05 || [https://{{SERVERNAME}}/arch/openssl-3.0.13-win32.zip OpenSSL Binaries Win-32 3.0.13 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-12-17 || [http://{{SERVERNAME}}/arch/openssl-3.0.1-win64.zip OpenSSL Binaries Win-64 3.0.1 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-26 || [https://{{SERVERNAME}}/arch/openssl-3.2.0-win64.zip OpenSSL Binaries Win-64 3.2.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-12-17 || [http://{{SERVERNAME}}/arch/openssl-3.0.1-win32.zip OpenSSL Binaries Win-32 3.0.1 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-26 || [https://{{SERVERNAME}}/arch/openssl-3.2.0-win32.zip OpenSSL Binaries Win-32 3.2.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||  
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-12-17 || [http://{{SERVERNAME}}/arch/openssl-1.1.1m-win64.zip OpenSSL Binaries Win-64 1.1.1m requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-09 || [https://{{SERVERNAME}}/arch/openssl-3.1.4-win64.zip OpenSSL Binaries Win-64 3.1.4 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-12-17 || [http://{{SERVERNAME}}/arch/openssl-1.1.1m-win32.zip OpenSSL Binaries Win-32 1.1.1m requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-09 || [https://{{SERVERNAME}}/arch/openssl-3.1.4-win32.zip OpenSSL Binaries Win-32 3.1.4 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||  
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-09-07 || [http://{{SERVERNAME}}/arch/openssl-3.0.0-win64.zip OpenSSL Binaries Win-64 3.0.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-09 || [https://{{SERVERNAME}}/arch/openssl-3.0.12-win64.zip OpenSSL Binaries Win-64 3.0.12 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2021-09-07 || [http://{{SERVERNAME}}/arch/openssl-3.0.0-win32.zip OpenSSL Binaries Win-32 3.0.0 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-11-09 || [https://{{SERVERNAME}}/arch/openssl-3.0.12-win32.zip OpenSSL Binaries Win-32 3.0.12 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2020-03-18 || [http://{{SERVERNAME}}/arch/openssl-1.0.2u-win64.zip OpenSSL Binaries Win-64 1.0.2u requires ICS V8.24 to ICS V8.65] || Built with Visual Studio Build Tools 2017 || For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-3.1.3-win64.zip OpenSSL Binaries Win-64 3.1.3 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
| 2020-03-18 || [http://{{SERVERNAME}}/arch/openssl-1.0.2u-win32.zip OpenSSL Binaries Win-32 1.0.2u requires ICS V8.24 to ICS V8.65] || Built with Visual Studio Build Tools 2017 || Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
+
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-3.1.3-win32.zip OpenSSL Binaries Win-32 3.1.3 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 ||
 +
Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-3.0.11-win64.zip OpenSSL Binaries Win-64 3.0.11 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-3.0.11-win32.zip OpenSSL Binaries Win-32 3.0.11 requires ICS V8.67 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-1.1.1w-win64.zip OpenSSL Binaries Win-64 1.1.1w requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2023-09-21 || [https://{{SERVERNAME}}/arch/openssl-1.1.1w-win32.zip OpenSSL Binaries Win-32 1.1.1w requires ICS V8.57 or later] || Built with Visual Studio Build Tools 2017 || Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2020-03-18 || [https://{{SERVERNAME}}/arch/openssl-1.0.2u-win64.zip OpenSSL Binaries Win-64 1.0.2u requires ICS V8.24 to ICS V8.65] || Built with Visual Studio Build Tools 2017 || For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
 +
|- style="background:#fff;"
 +
| 2020-03-18 || [https://{{SERVERNAME}}/arch/openssl-1.0.2u-win32.zip OpenSSL Binaries Win-32 1.0.2u requires ICS V8.24 to ICS V8.65] || Built with Visual Studio Build Tools 2017 || Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.  
 
|- style="background:#fff;"
 
|- style="background:#fff;"
 
|}
 
|}
Line 203: Line 313:
  
 
OpenSSL website also [http://www.openssl.org/related/binaries.html links] to [http://www.slproweb.com/products/Win32OpenSSL.html Win32OpenSSL website] providing another build of Win32 DLL binaries. Note note that unlike the builds above builds on that site may have dependencies on Visual C++ 2008 Redistributables (to keep dll files smaller) so make sure you include all the required (and correct) redistributable files in your software installation. You probably don't have to care about that if you use binaries above at the cost of slightly larger DLLs. Also note that site does not keep archives of older versions so you may want to watch their page if you prefer their binaries.
 
OpenSSL website also [http://www.openssl.org/related/binaries.html links] to [http://www.slproweb.com/products/Win32OpenSSL.html Win32OpenSSL website] providing another build of Win32 DLL binaries. Note note that unlike the builds above builds on that site may have dependencies on Visual C++ 2008 Redistributables (to keep dll files smaller) so make sure you include all the required (and correct) redistributable files in your software installation. You probably don't have to care about that if you use binaries above at the cost of slightly larger DLLs. Also note that site does not keep archives of older versions so you may want to watch their page if you prefer their binaries.
 
== Browser Demo Application using HtmlViewer ==
 
 
This is an example internet browser using the HtmlViewer component from [https://github.com/BerndGabriel/HtmlViewer GitHub (11.8)].
 
 
The browser demo is in the ICS nightly zip, in the folder samples\delphi\browserdemo, the project is FrameBrowserIcs.dpr. An  executable version of the new demo may also be downloaded from here, built with HtmlViewer 11.8 and ICS V8.69, using Delphi 11.0. 
 
 
{| border="1" cellpadding="4" style="background:#eee;border:1px solid #ccc;text-align:left;border-collapse:collapse;"
 
|-
 
! Download
 
|- style="background:#fff;"
 
| [http://{{SERVERNAME}}/arch/BrowserDemoIcs.zip Executable Browser Demo - last update V8.69]
 
|}
 
 
The HtmlViewer component must be downloaded and installed before the demo can be built.  The demo is based on FrameBrowserIndy project but with various enhancements, specifically display of all HTTP, SSL and some or all HTML traffic which makes it very useful for debugging the THttpCli component. Recent versions of HtmlViewer also include FrameBrowserIcs.dpr but it has been changed substantially from the ICS version and I've been unable to build it.
 
 
The Options, Settings window allow the SSL security level to be adjusted to various TLS and cipher variations, which can be useful testing web sites that ICS has difficulty accessing. 
 
 
The project is a good basic browser for HTML4, but does not support any scripting, so most sites without backward compatibility may appear strange.
 

Latest revision as of 12:48, 21 April 2024

ICS is available as source code only. You need Delphi to build the sample programs and create your own application.

ICS versions available:

  • ICS-V9 for Delphi 7 to Delphi 12 / C++ Builder 10.2 to 12, FireMonkey cross platform support for POSIX/MacOS (long term support release, 32 and 64-bit).
  • ICS-V8 for Delphi 7 to Delphi 11 (stable release, no new development, please upgrade to V9).
  • ICS-V7 for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder XE3 (discontinued and obsolete, please upgrade to V9).
  • ICS-V6 for Delphi 7 / C++ Builder 2006 to Delphi / C++ Builder 2007 (discontinued and obsolete, please upgrade to V9 if you do not have to support Windows versions < W2K).
  • ICS-V5 for Delphi / BCB 1 to Delphi / C++ Builder 2007 and Delphi .NET (discontinued and obsolete, please upgrade to V9).

ICS News

Major Changes in ICS V9.1:

Although ICS V9.1 does not contain any new components, there are many other SSL/TLS changes that will affect existing applications, but make ICS easier to use and support for the future.

  1. Delphi 10.4 and later now use the same install groups and packages, IcsInstallFmx, IcsInstallVcl and IcsInstallVclFmx, making support a lot easier. Version specific groups remain for Delphi 10.3 and earlier, with new groups D(X)InstallVcl for VCL only replacing the old OverbyteIcs(X) groups, again to simplify support. Dozens of old packages have been removed for this release, so please delete all old groups and packages before installing V9.1, to avoid a mix of old and new packages. Only C++ 10.4 and later are now supported, but untested.
  2. The old samples directory has gone and many of the older and little used samples have been archived to a separate download. The active samples used to test and demonstrate all ICS components are now split into the following paths, in the ICS root directory: All these samples can now be built for Win32 and Win64 platforms.
    1. demos-delphi-vcl - 45 VCL samples for Windows.
    2. demos-delphi-extra - four VCL samples that need third party components to build.
    3. demos-delphi-fmx - seven FMX samples for Windows, not yet tested on MacOS.
    4. demos-cpp-vcl - all old C++ samples that have not been tested for 10 years, need help.
    5. demos-data - data files for samples, such as web pages.
  3. To ease development, linking and future support, some new units have been added by splitting existing units with multiple components, unfortunately this means many existing projects will need one or more of the new units adding to their uses section. Apologies for the pain, but this should have been done a long time ago. The main change is splitting out much of the SSL/TLS related code from the massive OverbyteIcsWSocket unit to a new unit OverbyteIcsSslBase.
  4. Distribution of the ICS OpenSSL files has changed. Earlier ICS versions required the OpenSSL DLLs to be distributed with applications, and a root CA bundle file to verify SSL/TLS connections, and these needed to be loaded using code. There was little standardisation over where the OpenSSL DLLs were located, applications tended to keep their own copies alongside other executables, leading to multiple DLL copies and needing the public variable GSSL_DLL_DIR set to a specific directory before OpenSSL was loaded. Likewise, root CA bundle directories had to be distributed with applications and loaded with code. ICS V9.1 allows five different ways of loading OpenSSL: Which method ICS uses to load OpenSSL depends upon several defines in the .\Source\Include\OverbyteIcsDefs.inc file, please see the readme9.txt file for details. ICS currently includes resource files for three different OpenSSL releases, 3.0`13. 3.1.5 and 3.2.1, which version is linked is controlled by a define. If the OpenSSL DLLs are linked into the application, they are extracted to a version subdirectory, ie C:\ProgramData\ICS-OpenSSL\3012\ so different applications can use different OpenSSL versions. This happens only once if the files have not already been extracted. When updating existing projects without using any new defines, the ICS old behaviour of methods 3, 4 and 5 above remain with no changes needed.
    1. DLLs linked into application as resource files
    2. DLLs loaded from common directory C:\ProgramData\ICS-OpenSSL\
    3. OpenSSL DCU linked into application using commercial YuOpenSSL
    4. DLLs loaded from location specified in public variable GSSL_DLL_DIR
    5. DLLs loaded according to path, may be found anywhere on PC
  5. A common IcsSslRootCAStore component is now created at application start-up, to avoid different components needing their own CA stores to verify SSL/TLS certificates, and for applications to load those stores. The three different CA stores included with ICS are now supplied as resource files, with a define determining which is linked into applications.Another define causes OpenSSL and this store to be loaded at application startup, so OpenSSL is available for allcomponents, without it needing to be loaded again, perhaps repeatedly. Without new defines, a CA Store can be loaded manually into IcsSslRootCAStore. The ICS servers use CA Stores now use IcsSslRootCAStore and no longer load any files specified.
  6. All SSL/TLS servers need a certificate and private key to start, even when testing. Previously ICS supplied some self signed certificates for testing, and also created such certificates automatically if they were missing or if the server was about to order a Let's Encrypt certificate. Accessing such servers for testing using browsers raised various warnings.ICS now has it's own SSL root certificate 'ICS Root CA' and two intermediates, 'ICS Intermediate' and 'ICS Intermediate Short', the last of which includes a private key so can be used to automatically sign new certificates by ICS server applications, rather than just self signed certificates as before. If the 'ICS Root CA' certificate is installed in the Window Store and browser stores, it should stop certificate warnings appearing. ICS applications automatically trust the ICS root, so will give no warnings. The short intermediate has a maximum 100 day expiry, so new versions will be issued regularly. There is a single function CreateSelfSignCertEx that created signed certificates, and another IcsInstallIcsRoot that installs the ICS root into the Windows Store, so easy to use. It is possible to replace the ICS root with your own private root certificate and have servers create their own certificates against that root, for internal networks.
  7. The TSslHttpRest component now allows TRestParams to be created as content type 'Form-Data Body' to create MIME multipart/form-data parameters that may include new TParamType of RPTypeFile that specifies a file name whose binary content will be added to the parameters as a file upload, allowing multiple files and extra parameters. TRestParams are now built into a TStream rather than a string to allow larger parameter sizes, tested up to 8GB. The ICS web server samples have improved MIME decoding to accept massive uploads.
  8. Several client and server components have a new property NoSSL which if set will prevent those components using SSL/TLS for HTTPS or FTPS, even if the application is linked with OpenSSL code. Beware the IcsSslRootCAStore component must not be initialised by the application.

Full release notes are at More detailed release notes are at ICS 9.1 Release Notes

More detailed instructions for updating to V9.1 are at [[Updating_projects_to_V9.1 | pdating projects to V9.1]


Major Changes in ICS V9.0 include:

New samples

Samples/Delphi/SslInternet/OverbyteIcsSnippets - Small samples of codes for FTP, HTTP, sockets and email.

Samples/Delphi/OtherDemos/OverbyteIcsNetMon - Internet Packet Monitoring Components, display packets and traffic using Npcap and raw sockets.

Samples/Delphi/OtherDemos/OverbyteIcsNetTools - Network Tools Demo, uses all the main IP Helper functions, also TTIcsNeighbDevices, TIcsDomainNameCache, IcsDnsQueuy, TDnsQueryHttps, TIcsWhoisCli, TIcsIpChanges, TPing and TPingThread.

Samples/Delphi/PlatformDemos/IcsHttpRestTstFmx - FMX HTTPS REST and OAuth, Send SMS and DNS over HTTPS functions demo.

Samples/Delphi/PlatformDemos/IcsSslMultiWebServ - FMX Advanced multi host web server demo.

Samples/Delphi/SslInternet/OverbyteIcsMQTTst - MQ Telemetry Transport message queuing service.


Major sample updates for new components

Samples/Delphi/SslInternet/OverbyteIcsHttpRestTst1 - Uses TSslWebSocketCli for WebSocket Client, New embedded TOAuthLoginForm window using TOAuthBrowser for OAuth2 logins. Select client SSL certificate from the Windows Certificate Store.

Samples/Delphi/SslInternet/OverbyteIcsSslMultiWebServ.dpr, OverbyteIcsDDWebService - Uses THttpWSSrvConn for WebSocket Server. IcsHosts can use server SSL certificate from the Windows Certificate Store. IcsHosts can now request a SSL certificate from the remote client. WebSocket server support. Uses TIcsDomainNameCache for multiple reverse DNS lookups.

Samples/Delphi/SslInternet/OverbyteIcsPemTool - Can now export an SSL certificate from the Windows Certificate Store with its private key.

Samples/delphi/OtherDemos/OverbyteIcsBatchDnsLookup - Uses TIcsDomainNameCache for multiple lookups.

Samples/Delphi/SslInternet/OverbyteIcsSslMailSnd, OverbyteIcsSslMailRcv, OverbyteIcsMailQuTst - New embedded TOAuthLoginForm window using TOAuthBrowser for OAuth2 logins.

Samples/delphi/OtherDemos/OverbyteIcsNsLookup - Uses single or multiple DNS servers, including built-in list of public servers, also sync requests.


New Components

TIcsDomainNameCache and TIcsDomNameCacheHttps - cache forward and reverse DNS lookup requests, using several methods.

TIcsMonSocket - Internet monitoring using raw sockets.

TIcsMonPcap - Internet monitoring using Npcap NDIS driver.

TIcsIpChanges - Monitors IP address changes dynamically.

TIcsNeighbDevices - Builds historic LAN MAC device and IPv4 and IPv6 address table using ARP, neighbourhood and IP range scanning with reverse host lookup.

TOAuthBrowser - OAuth authentication browser window VCL/FMX form.

TSslWebSocketCli - WebSocket client protocol.

TIcsMQTTServer and TIcsMQTTClient - MQ Telemetry Transport message queuing service, client and server.


Major Component Upgrades

TDnsQuery - Add synchronous methods and more response properties. Check multiple DNS server hosts including public DNS lists.

TSslWSocketServer - IcsHosts can use server SSL certificate from the Windows Certificate Store. IcsHosts can now request a SSL certificate from the remote client.

TIcsFtpMulti - Send NOOP command periodically during multi hour transfers so connections are not closed accidentally.


New classes and Functions

THttpWSSrvConn - WebSocket server protocol.

Internet Helper Functions - Unit OverbyteIcsIpHlpApi.pas includes IpHlpConnsTable, IpHlpAdaptersInfo, IpHlpAdaptersAddr, IpHlpIpAddrTable, IpHlpIpNeighbTable, IpHlpIPForwardTable, IpHlpIpPathTable, IpHlpGetDnsServers, IpHlpIfTable2,

IpHlpIPStatistics, IpHlpUDPStatistics and many other functions.

TIcsMonFilterClass - Filter network traffic on protocols or IP addresses.

TIcsTrafficClass - Maintains network traffic statistics by protocols and IP addresses.


More detailed release notes are at ICS 9.0 Release Notes


Major Changes in ICS V8.70 include:

  1. V8.70 has various minor improvements providing better compatibility with modern compilers such as more unicode overloads to avoid ANSI string warnings and casts, and more use of TBytes to avoid ANSI strings. Updated various samples to use TIcsRestEmail to support OAuth2 authentication for GMail and Outlook that no longer allow old authentication protocols.
  2. The TIcsFileCopy, TIcsFtpMulti and TIcsHttpMulti file transfer components now support file zipping and unzipping using System.Zip in recent Delphi compilers, instead of the obsolete VclZip which is no longer available. Before a file copy or FTP upload, files may be automatically zipped, useful for large log files, after a file copy, FTP or HTTP download, files may be unzipped in various ways.
  3. Added support to TIcsFileCopy to copy file names longer than 259 characters by adding \\?\ to the start of long names passed to Windows APIs, if supported by the disk file system, unicode APIs only. Fixed a problem deleting empty directories after copying. Fixed a problem with BuildDirList2 with COMPILER16_UP.
  4. The OverbyteIcsXferTst sample has a new tabs, 'Single File Copy' to test the CopyOneFile method and 'Zip/Unzipping Files' to test zipping and unzipping that has always been supported by the components but not this demo.
  5. Allow content compression for HTTP and FTP using System.Zlib in newer versions of Delphi instead of the OverbyteIcsZLibObj unit to avoid duplication. Only Delphi 11.1 and later have the same ZLIB 1.2.12 as ICS, so will automatically used System.Zip. Beware a new version of OverbyteIcsDefs.inc is required to allow ZLIB to work correctly, otherwise it will default to using the DLL which is unlikely to be available, it is not in the distribution. So either install the new inc file and customise it, or copy the ZLIB changes to your own inc file.
  6. In TWsocket, added ReceiveTB(var Data : TBytes; MaxLen : Integer = -1): Integer; where MaxLen is optional, to receive TCP data into a TBytes dynamic array of bytes. Also ReceiveFromTB and ReceiveFrom6TB for UDP datagrams. The last release added similar SendTB functions, so buffer pointers and ANSI strings can now be avoided.
  7. Added UTF-8 support to TIcsIpStrmLog, to convert received lines from UTF-8 to Unicode with unicode compilers (as String) and converts sent data to UTF-8. Changed FRxBuffer to TBytes, use SendTB and ReceiveTB methods with TBytes.
  8. Updated OpenSSL to 3.0.7 and 1.1.1s. OpenSSL 3.0.6 was withdrawn shortly after release, we never distributed it.
  9. In OverbyteIcsSslHttpOAuth, added an OAuth2 and Rest Email Microsoft User Authority property to access different user authorities, defaults to 'consumers' but can be changed to 'common' or an Azure Active Directory tenant GUID for corporate accounts.
  10. Added TIcsRestEmail to support OAuth2 authentication to the OverbyteIcsSslMultiWebServ, OverbyteIcsSslMultiFtpServ and OverbyteIcsDDWebService samples, since GMail and Outlook that no longer allow old authentication protocols.
  11. In the TIcsInetAlive component, added a new method AliveMethEither so internet alive checking works if either ping or HTTP works, instead of one or the other.

More detailed release notes are at ICS 8.70 Release Notes

Overbyte Website

There are four options to obtain the source code.

Download from Overbyte web site

ICS-V9 is the long term development version and needed for RAD Studio XE4 and later, it supports Delphi 7 and later.

Latest Stable Version ICS V9.1 - recommended

This is the latest recommended version, which has been tested and used for various published ICS application. It is updated for new releases of RAD Studio and major changes. V9.1 is the version displayed when RAD Studio starts and by the main unit OverbyteIcsWSocket. Note these versions include the latest version of the OpenSSL DLLs at the time of release.

Download Platforms
ICS-V9.1 Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12, C++ Builder 10.4, 11 and 12. Includes OpenSSL 3.0.13. 3.1.5 and 3.2.1.
ICS-V9.1 Delphi 10.4, 11 and 12 only. Includes OpenSSL 3.0.13. 3.1.5 and 3.2.1.
ICS-V9.0 Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4, 11 and 12, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4, 11 and 12. Includes OpenSSL 3.1.2.
ICS-V9.0 Delphi 12 only. Includes OpenSSL 3.1.2.
ICS-V9.0 Delphi 11 only. Includes OpenSSL 3.1.2.
ICS-V9.0 Delphi 10.4 only. Includes OpenSSL 3.1.2.
ICS-V8.70 Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.7.
ICS-V8.70 Delphi 11 only. Includes OpenSSL 3.0.7.
ICS-V8.70 Delphi 10.4 only. Includes OpenSSL 3.0.7.
ICS-V8.69 Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.3.
ICS-V8.69 Delphi 11 only. Includes OpenSSL 3.0.3.
ICS-V8.69 Delphi 10.4 only. Includes OpenSSL 3.0.3.
ICS-V8.68 Delphi 7 to XE8, 10, 10.1, 10.2, 10.3, 10.4 and 11, C++ Builder 2006 to XE3, 10.2, 10.3, 10.4 and 11. Includes OpenSSL 3.0.1.

From XE8 onwards, Delphi includes a new GetIt tool that offers a catalog of third party components, and allows them to be automatically downloaded and installed. The same stable ICS versions listed above should be available from GetIt.

Zipped Daily Snapshots

This is the easiest way to get the latest version. These packages are built from the version control repositories automatically when they change and are refreshed once a day. To use the latest OpenSSL version, download this snapshot. Note the snapshot includes the latest version of the OpenSSL DLLs.

Download Changes log
ICS-V9 Snapshot View

Archives

Download Changes log
ICS-V9.1 Archived Samples
ICS-V8 Archive View
ICS-V7 Archive View
ICS-V6 Archive View
ICS-V5 Archive View

Version Control System

Using the version control repository is the best choice if you want to get live access to current development files. Overbyte uses a Subversion server and you need to use a Subversion client such as TortoiseSVN or your favorite browser. The URLs are as follows:

ICS Version SVN URL HTTP URL
ICS-V9 svn://svn.overbyte.be/icsv9 https://svn.overbyte.be/svn/icsv9
ICS-V8 svn://svn.overbyte.be/ics/trunk https://svn.overbyte.be/svn/ics/trunk
ICS-V7 svn://svn.overbyte.be/ics/tags/icsv7 https://svn.overbyte.be/svn/ics/tags/icsv7
ICS-V6 svn://svn.overbyte.be/ics/tags/v6_obsolete https://svn.overbyte.be/svn/ics/tags/v6_obsolete
ICS-V5 svn://svn.overbyte.be/icsv5 https://svn.overbyte.be/svn/icsv5

Use username = ics and password = ics for read access. Write access is only available to TeamICS.

Download OpenSSL Binaries

The OpenSSL binaries are required for all ICS SSL-enabled components.

The 64-bit DLLs are only for use with Delphi applications compiled for the 64-bit platform, the 32-bit DLLs work on both 32-bit and 64-bit Windows with 32-bit applications.

Please note older versions of the ICS source code had an internal check to only allow loading of the latest OpenSSL it was tested with, so you could not use new DLLs with an old application without recompiling with the latest version of ICS first.

OpenSSL 1.0.2 and later were only supported by ICS v8, v7 is no longer updated for new OpenSSL versions. This was a long term support version for which free support ceased at the end of 2019 unless you have an OpenSSL Premium Level Support contract for $50,000/year. ICS V8.65 was the last version to support 1.0.2.

OpenSSL 1.1.0 is obsolete and no longer supported. ICS V8.65 is the last version to support 1.1.0.

OpenSSL 1.1.1 was a long term support version and added support for TLSv1.3 RFC8446 and various new cryptographic private key and hash digest types. Delphi applications require ICS V8.57 or later. ICS V8.57 and later include the Win32 and Win64 OpenSSL 1.1.1 files. Support ceased in September 2023 unless you have an OpenSSL Premium Level Support contract for $50,000/year. OpenSSL 1.1.1 only supports Windows Vista and later, not XP. ICS V9.0 was the last version to support 1.1.1.

OpenSSL 3.0 is a major new release, primarily a lot of internal changes to ease long term support. ICS 8.67 is required to support 3.0. There is an optional FIPS module with 3.0 but not available here since our DLLs are not built to standards required for certification. The old engines for special extensions are replaced by new more versatile providers of which the FIPS module is one, a provider legacy.dll contained in the distribution has obsolete ciphers and hash digests that most applications no longer need and which needs to loaded by the application. This version will be supported until September 2026.

OpenSSL 3.1 is a minor new release, primarily FIPS improvements. ICS 8.67 is required to support 3.1. This version will be supported until March 2025.

OpenSSL 3.2 is a minor new release with QUIC client support for HTTP/3 and many other improvements. ICS 8.67 is required to support 3.2. This version will be supported until November 2025.

OpenSSL 3.3 is a minor new release, minor QUIC and other features. ICS 8.67 is required to support 3.3. This version will be supported until April 2026.

Please note that ICS does not use any of the new features in OpenSSL 3.1, 3.2 or 3.3 at present, so continuing to use the latest patch version of 3.0 with security fixes is generally fine.

The OpenSSL DLLs and EXE files included in the zips above are digitally code signed 'Magenta Systems Ltd', one of the organisations that maintains ICS. The Magenta Systems Code Signing Trust and Certificate Check component may be used to check the correctly signed DLLs are being used by ICS, with this functionality included in ICS V8.38 and later. Beware that Windows needs recent root certificates to check newly signed code, and may give an error if the root store has not been kept current by Windows Update, particularly on older versions of Windows such as XP, Vista and 7.

Date Download Description Comments
2024-04-21 OpenSSL Binaries Win-64 3.3.0 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2024-04-21 OpenSSL Binaries Win-32 3.3.0 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.

2024-02-05 OpenSSL Binaries Win-64 3.2.1 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2024-02-05 OpenSSL Binaries Win-32 3.2.1 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.

2024-02-05 OpenSSL Binaries Win-64 3.1.5 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2024-02-05 OpenSSL Binaries Win-32 3.1.5 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.

2024-02-05 OpenSSL Binaries Win-64 3.0.13 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2024-02-05 OpenSSL Binaries Win-32 3.0.13 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2023-11-26 OpenSSL Binaries Win-64 3.2.0 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2023-11-26 OpenSSL Binaries Win-32 3.2.0 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.

2023-11-09 OpenSSL Binaries Win-64 3.1.4 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2023-11-09 OpenSSL Binaries Win-32 3.1.4 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.

2023-11-09 OpenSSL Binaries Win-64 3.0.12 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2023-11-09 OpenSSL Binaries Win-32 3.0.12 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP. Includes a compiled RES resource file with the same files.
2023-09-21 OpenSSL Binaries Win-64 3.1.3 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2023-09-21 OpenSSL Binaries Win-32 3.1.3 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017

Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.

2023-09-21 OpenSSL Binaries Win-64 3.0.11 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2023-09-21 OpenSSL Binaries Win-32 3.0.11 requires ICS V8.67 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2023-09-21 OpenSSL Binaries Win-64 1.1.1w requires ICS V8.57 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2023-09-21 OpenSSL Binaries Win-32 1.1.1w requires ICS V8.57 or later Built with Visual Studio Build Tools 2017 Supports TLSv1.3. Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2020-03-18 OpenSSL Binaries Win-64 1.0.2u requires ICS V8.24 to ICS V8.65 Built with Visual Studio Build Tools 2017 For 64-bit applications only (XE2+). Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.
2020-03-18 OpenSSL Binaries Win-32 1.0.2u requires ICS V8.24 to ICS V8.65 Built with Visual Studio Build Tools 2017 Use with 32-bit applications on Windows 64-bit. Digitally code signed. Only supports Windows Vista/Server 2008, and later, not Windows XP.

Download OpenSSL Binaries (alternative)

OpenSSL website also links to Win32OpenSSL website providing another build of Win32 DLL binaries. Note note that unlike the builds above builds on that site may have dependencies on Visual C++ 2008 Redistributables (to keep dll files smaller) so make sure you include all the required (and correct) redistributable files in your software installation. You probably don't have to care about that if you use binaries above at the cost of slightly larger DLLs. Also note that site does not keep archives of older versions so you may want to watch their page if you prefer their binaries.