Native TLS (iohNativeTLS)
Eine vollständig in Object Pascal auf den sgcCrypto-Units geschriebene TLS-1.3- und TLS-1.2-Implementierung, die daher überhaupt nichts ausliefert, ob unter Windows, Linux, macOS, iOS oder Android. Setze TLSOptions.IOHandler := iohNativeTLS an einem Client oder SSLOptions.IOHandler := iohNativeTLS an einem Server, die IOCP- und EPOLL-Server-Engines eingeschlossen. TLSOptions.NativeTLS_Options.Groups und TLSOptions.NativeTLS_Options.CipherSuites nehmen durch Doppelpunkte getrennte Listen im OpenSSL-Stil. Ihre Standardwerte sind X25519MLKEM768:X25519:secp256r1:secp384r1 und TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 zuzüglich der TLS-1.2-Standardwerte, sodass ein Handshake gegen einen Peer, der ihn unterstützt, ohne jede Konfiguration Post-Quanten-hybrid ist.
TLS 1.3 und TLS 1.2. TLSOptions.Version an einem Client und SSLOptions.Version an einem Server ist die niedrigste zulässige Version: tls1_2 oder tlsUndefined handelt TLS 1.3 oder TLS 1.2 aus, und tls1_3 lässt nur TLS 1.3 zu. Für ausschließlich TLS 1.2 gib nur TLS-1.2-Suiten in NativeTLS_Options.CipherSuites an. TLS 1.2 bietet standardmäßig ECDHE_ECDSA und ECDHE_RSA mit AES-128-GCM, AES-256-GCM und ChaCha20-Poly1305, während die ECDHE-AES-CBC-Suiten und der RSA-Schlüsselaustausch nur zur Verfügung stehen, wenn du sie namentlich angibst. Es verwendet X25519, secp256r1 oder secp384r1, da die hybriden Post-Quanten-Gruppen ausschließlich in TLS 1.3 existieren. TLS 1.2 bringt das Extended Master Secret nach RFC 7627 und den beidseitigen Downgrade-Schutz nach RFC 8446 mit und verweigert Renegotiation sowie SHA-1-Signaturen.
Was sie nicht kann. Die Engine spricht ausschließlich TLS 1.3 und TLS 1.2, ohne TLS 1.1, TLS 1.0 oder SSL. Es gibt keine Session-Resumption und kein PSK, kein 0-RTT und kein QUIC. Die vertrauenswürdigen Roots kommen aus TLSOptions.RootCertFile, zuzüglich der Roots, denen das Betriebssystem vertraut, wenn NativeTLS_Options.UseSystemRoots auf True steht, gelesen aus dem Windows-ROOT-Speicher oder einer CA-Bundle-Datei und nie aus dem macOS- oder iOS-Schlüsselbund oder dem Android-Speicher, und das Komponentenereignis OnSSLVerifyPeer steht für sie nicht zur Verfügung, die Engine hat ihre eigenen Verifikations-Hooks. Bleib bei OpenSSL oder einem Plattform-Backend, wenn du etwas davon brauchst.
Sie ist Teil von sgcCrypto, wird also ab der Standard-Edition und im eigenständigen sgcCrypto-Paket ausgeliefert.