Native TLS (iohNativeTLS)
Une implémentation de TLS 1.3 et TLS 1.2 écrite entièrement en Object Pascal au-dessus des unités sgcCrypto, qui ne déploie donc absolument rien, sous Windows, Linux, macOS, iOS ou Android. Affectez TLSOptions.IOHandler := iohNativeTLS sur un client, ou SSLOptions.IOHandler := iohNativeTLS sur un serveur, moteurs de serveur IOCP et EPOLL compris. TLSOptions.NativeTLS_Options.Groups et TLSOptions.NativeTLS_Options.CipherSuites acceptent des listes séparées par des deux-points, dans le style OpenSSL. Elles valent par défaut X25519MLKEM768:X25519:secp256r1:secp384r1 et TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 plus les valeurs par défaut de TLS 1.2, si bien qu'une négociation face à un pair compatible est déjà hybride post-quantique sans aucune configuration.
TLS 1.3 et TLS 1.2. TLSOptions.Version sur un client, et SSLOptions.Version sur un serveur, indique la version minimale autorisée : tls1_2 ou tlsUndefined négocie TLS 1.3 ou TLS 1.2, et tls1_3 n'autorise que TLS 1.3. Pour rester en TLS 1.2 uniquement, ne listez que des suites TLS 1.2 dans NativeTLS_Options.CipherSuites. TLS 1.2 propose par défaut ECDHE_ECDSA et ECDHE_RSA avec AES-128-GCM, AES-256-GCM et ChaCha20-Poly1305, tandis que les suites ECDHE AES-CBC et l'échange de clés RSA ne sont présents que si vous les nommez. Il utilise X25519, secp256r1 ou secp384r1, car les groupes hybrides post-quantiques n'existent qu'en TLS 1.3. TLS 1.2 intègre l'extended master secret de la RFC 7627 et la protection anti-rétrogradation de la RFC 8446 des deux côtés, et refuse la renégociation ainsi que les signatures SHA-1.
Ce qu'il ne fait pas. Le moteur ne parle que TLS 1.3 et TLS 1.2, sans TLS 1.1, TLS 1.0 ni SSL. Il n'y a ni reprise de session ni PSK, pas de 0-RTT et pas de QUIC. Les racines de confiance proviennent de TLSOptions.RootCertFile, ainsi que des racines approuvées par le système d'exploitation quand NativeTLS_Options.UseSystemRoots vaut True, lues depuis le magasin ROOT de Windows ou un fichier CA bundle, jamais depuis le trousseau macOS ou iOS ni depuis le magasin Android, et l'événement de composant OnSSLVerifyPeer n'est pas disponible pour lui, le moteur possède ses propres points d'accroche de vérification. Restez sur OpenSSL ou sur un backend de plateforme si vous avez besoin de l'un de ces éléments.
Il fait partie de sgcCrypto, il est donc livré à partir de l'édition Standard et dans le pack sgcCrypto autonome.