sgcCustomIndy: The Custom Indy Library for sgcWebSockets Core
Add-on for sgcWebSockets Core Delphi 7 to 13 & C++ Builder

sgcCustomIndy: The Custom Indy Library for sgcWebSockets Core

Indy is the open source client and server communications library that sgcWebSockets uses as the base for some of its components. The standard Indy library does not support ALPN, and it does not support TLS 1.3 through OpenSSL 1.1.1 or 3.x, so sgcWebSockets Enterprise ships a custom build of Indy that does. sgcCustomIndy brings that same custom build to sgcWebSockets Core, which would otherwise mean stepping up to the Enterprise edition to get it.

Full source code
Nothing to uninstall
Installed side by side One IDE The custom units carry an sgc prefix, so both libraries live in the same IDE
Standard Indy IdGlobal.pas
Custom Indy sgcIdGlobal.pas
0 Indy libraries to uninstall The Indy already in your IDE stays installed
0 Indy 10 installs on Delphi 7 The library comes with the pack
3 Capabilities standard Indy lacks ALPN, TLS 1.3 over OpenSSL 1.1.1 and 3.x, static linking
1 Unit for static OpenSSL sgcIdSSLOpenSSL_Static in the uses clause
2 Static linking targets Windows 32 bit and 64 bit, Delphi XE2 or newer

Two Things Worth Knowing First

Who this pack is for, and who already has it. Both answers are short.

It is an add-on, not a separate order

sgcCustomIndy attaches to a sgcWebSockets Core licence. It is not ordered on its own: it appears as the first recommended add-on inside a Core order, which is the order the sgcAI, sgcMQ and sgcSocial packs go through.

Full source code ships with the licence, so the Indy units compile and step through in your own project exactly like the rest of the library.

Check first

Enterprise and All-Access already include it

The custom Indy library is part of sgcWebSockets Enterprise and of eSeGeCe All-Access, where it is enabled by default through the SGC_CUSTOM_INDY compiler define in sgcVer.inc. If you hold either of those, you already have everything on this page and there is nothing to add.

The Standard and Professional editions use the standard Indy library. See which edition you need if you are weighing an edition upgrade against this pack.

Three Things the Standard Indy Library Cannot Do

Every item below is a capability of the Indy layer itself, not of a component sitting above it. That is why swapping the Indy library is what turns them on.

ALPNProtocol negotiation

The extension HTTP/2 is built on

HTTP/2 is negotiated during the TLS handshake: the client advertises the protocols it can speak and the server picks one. That negotiation is Application-Layer Protocol Negotiation, and it happens inside the TLS layer, below anything an HTTP component can reach. The standard Indy library does not support it, so the custom Indy library is what makes ALPN, and with it HTTP/2, available.

ALPN HTTP/2
TLS 1.3OpenSSL 1.1.1 and 3.x

The modern OpenSSL branches, reachable at last

TLS 1.3 needs OpenSSL 1.1.1 or OpenSSL 3.0.0, and the standard Indy library does not support those branches. The custom Indy library does, so a client or server built on it negotiates TLS 1.3 against endpoints that require it, instead of being capped at what the older OpenSSL API offers.

TLS 1.3 OpenSSL 1.1.1 OpenSSL 3.x
Static OpenSSLWindows, Delphi XE2 or newer

OpenSSL inside the executable

OpenSSL can be linked directly into your application instead of being loaded at runtime from the libcrypto and libssl DLLs, so a TLS application deploys as a single file. It takes effect only when the custom Indy library is in use, which is what this pack provides. The scope is Windows 32 bit and 64 bit on Delphi XE2 or newer, covered in detail further down.

sgcIdSSLOpenSSL_Static Windows only Delphi XE2+

It Sits Beside the Indy You Already Have

Replacing the Indy library in an IDE is the part nobody wants to do, so this pack does not ask for it. The custom Indy files are renamed with an sgc prefix, IdGlobal becomes sgcIdGlobal, and both versions coexist without problems.

Standard Indy, already in your IDECustom Indy, added by this packWhat that means
IdGlobal.passgcIdGlobal.pasDifferent unit names, so nothing collides on the search path
IdTCPClient.passgcIdTCPClient.pasBoth libraries compile into the same IDE and the same project
IdSSLOpenSSL.passgcIdSSLOpenSSL.pasYour existing TLS code keeps using the unit it already uses
Nothing to uninstall

Whatever Indy your IDE already has stays installed and stays registered. There is no step where you remove a package, restore it later, or keep two IDE profiles around.

Existing projects are untouched

Anything you already build against the standard Indy library keeps compiling against it, byte for byte the same units. The custom build is additional, it is not a replacement and it is not an upgrade applied to your IDE.

One compiler define

Use of the custom Indy library is controlled by SGC_CUSTOM_INDY in sgcVer.inc, in the source folder. It is a single define, so turning the custom build off again is a one-line change.

Full source, as always

The renamed Indy units ship as source with the licence, so they compile with your project settings and step through in your debugger like the rest of the library.

No Separate Indy 10 Install

Delphi 7 ships with an older Indy. Using sgcWebSockets there would otherwise mean installing Indy 10 into the IDE yourself first, which is the step that stops a lot of people before they have written a line of code. With the custom Indy library bundled in, that step disappears.

What the prerequisite used to be

Source Indy 10, install it into a Delphi 7 IDE that was never shipped with it, get the packages to build, then come back and start on sgcWebSockets. It is an entirely separate piece of work, done before the part you actually wanted to do.

For a shop still maintaining Delphi 7 code, that prerequisite is often what decides whether a component library gets evaluated at all.

What it is with this pack

The custom Indy library comes with the pack, in the same source folder as everything else. There is no Indy 10 to find, no Indy 10 to install into the IDE, and no Indy 10 version to keep matched against the components.

This one is about the Indy 10 prerequisite only. Static OpenSSL linking is a separate feature with its own scope, Windows and Delphi XE2 or newer, so it does not apply on Delphi 7.

One Unit, One File to Deploy

There is nothing to configure. Add sgcIdSSLOpenSSL_Static to the uses clause of your project, for example in the main .dpr, and the application uses the OpenSSL linked into the executable the next time it runs, for client and server components alike.

// Project1.dpr
uses
  sgcIdSSLOpenSSL_Static;

// That is the whole configuration. No compiler directive to enable,
// no OpenSSL API version to choose. Remove the unit again and the
// application goes back to loading the OpenSSL DLLs exactly as before.
Platforms Where an object file in this format can be linked
Windows 32 bit Windows 64 bit macOS iOS Android
Compiler Older versions report E2045 Bad object file format
Delphi XE2 and newer Delphi 7 to XE
Prerequisite Static linking has no effect without it
Custom Indy library in use SGC_CUSTOM_INDY defined
Linked OpenSSL Updated from time to time to pick up the latest OpenSSL fixes
OpenSSL 3.5.7

On a version or platform where static linking is not available, nothing breaks. The application keeps loading the OpenSSL DLLs as it did before, so the same source builds everywhere.

Which Indy Each Edition Uses

The custom Indy library is not new. It is what sgcWebSockets Enterprise has been built on, and this pack is the route to it for Core.

What you holdIndy libraryNotes
sgcWebSockets StandardStandardNo ALPN, no TLS 1.3 over OpenSSL 1.1.1 or 3.x
sgcWebSockets ProfessionalStandardNo ALPN, no TLS 1.3 over OpenSSL 1.1.1 or 3.x
sgcWebSockets EnterpriseCustomIncluded, enabled by default
eSeGeCe All-AccessCustomIncluded, enabled by default
sgcWebSockets Core on its ownStandardThis is what the pack changes
sgcWebSockets Core with sgcCustomIndyCustomThe same custom build Enterprise uses

Not the same thing as sgcIndy

sgcCustomIndy is the sgc-prefixed build that lives beside your existing Indy and is used by the sgcWebSockets components. sgcIndy is the separate full Indy package, with the units under their original names, which you install in place of the Indy in your IDE so that standard Indy components such as SMTP and FTP get the same modern TLS. Different products, different jobs.

Added During a Core Order

sgcCustomIndy starts at €149 for a single developer. All licences include full source code, 1 year of updates and a 50% to 70% renewal discount: 50% when you renew one pack, 60% for two, 70% for three or more. sgcAI, sgcMQ, sgcSocial and sgcCustomIndy each count as a pack.

sgcCustomIndy

€149

Single €149, Team €249 and Site €399 licences available.

  • The custom Indy library sgcWebSockets Enterprise uses
  • ALPN, and with it HTTP/2
  • TLS 1.3 over OpenSSL 1.1.1 and 3.x
  • Static OpenSSL linking on Windows, Delphi XE2 or newer
  • sgc-prefixed units, so your installed Indy is untouched
  • No separate Indy 10 install on Delphi 7
  • Full source code
  • 1 year of updates

There is no separate sgcCustomIndy order page, because the pack is never the item you start an order with. It is offered as the first recommended add-on inside a sgcWebSockets Core order, so you add it with one click while you are ordering sgcAI, sgcMQ or sgcSocial, and it arrives on the same licence.

Already on sgcWebSockets Enterprise or eSeGeCe All-Access? The custom Indy library is already yours, see the sgcWebSockets pricing for what those editions cover.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30-Day Money-Back GuaranteeNot satisfied? Request a full refund within 30 days of purchase. See refund policy

The Indy Layer, Brought Up to Date

ALPN and therefore HTTP/2, TLS 1.3 over OpenSSL 1.1.1 and 3.x, and OpenSSL linked inside the executable on Windows. All of it beside the Indy you already have, with nothing to uninstall and no Indy 10 to install on Delphi 7.

Other Products by eSeGeCe

Pair sgcCustomIndy with our other Delphi, C++ Builder and .NET component libraries.

sgcWebSockets

The full library: WebSocket clients and servers, HTTP/2, IoT, P2P and AI components. Enterprise is built on this custom Indy library.

Learn more →

sgcIndy

The full Indy package under the original unit names, installed in place of your IDE's Indy so SMTP, FTP and the rest get modern TLS.

Learn more →

sgcAI

AI, LLM and MCP components. One chat component reaches OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok and Mistral.

Learn more →

sgcMQ

Native MQTT, AMQP 0.9.1, AMQP 1.0, Apache Kafka and STOMP clients. Standalone, the sgcWebSockets Core runtime is included.

Learn more →

sgcSocial

WhatsApp Business Cloud API and Telegram TDLib clients. Standalone, the sgcWebSockets Core runtime is included.

Learn more →

sgcQUIC

QUIC (RFC 9000) and HTTP/3 (RFC 9114) client and server components built on the native OpenSSL 3.5 QUIC engine.

Learn more →

sgcHTML

Data-aware server-side HTML/UI components for Delphi, C++ Builder and .NET, with Bootstrap 5 and htmx.

Learn more →

sgcSign

Enterprise digital signatures. XAdES, PAdES, CAdES and ASiC with 10 key providers and 21 EU country profiles.

Learn more →

sgcOpenAPI

OpenAPI 3.0 parser and SDK generator. Turn any OpenAPI spec into a strongly-typed Delphi client in seconds.

Learn more →