Native TLS (iohNativeTLS)
Una implementación de TLS 1.3 y TLS 1.2 escrita íntegramente en Object Pascal sobre las unidades de sgcCrypto, así que no despliega absolutamente nada, ni en Windows, ni en Linux, ni en macOS, iOS o Android. Establece TLSOptions.IOHandler := iohNativeTLS en un cliente, o SSLOptions.IOHandler := iohNativeTLS en un servidor, incluidos los motores de servidor IOCP y EPOLL. TLSOptions.NativeTLS_Options.Groups y TLSOptions.NativeTLS_Options.CipherSuites aceptan listas separadas por dos puntos, al estilo de OpenSSL. Por defecto valen X25519MLKEM768:X25519:secp256r1:secp384r1 y TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 más los valores por defecto de TLS 1.2, así que un handshake contra un par que lo admita es híbrido poscuántico sin ninguna configuración.
TLS 1.3 y TLS 1.2. TLSOptions.Version en un cliente, y SSLOptions.Version en un servidor, es la versión mínima permitida: tls1_2 o tlsUndefined negocia TLS 1.3 o TLS 1.2, y tls1_3 permite solo TLS 1.3. Para usar solo TLS 1.2, incluye en NativeTLS_Options.CipherSuites únicamente conjuntos de cifrado de TLS 1.2. TLS 1.2 ofrece por defecto ECDHE_ECDSA y ECDHE_RSA con AES-128-GCM, AES-256-GCM y ChaCha20-Poly1305, mientras que los conjuntos ECDHE AES-CBC y el intercambio de claves RSA solo aparecen si los nombras. Usa X25519, secp256r1 o secp384r1, porque los grupos híbridos poscuánticos solo existen en TLS 1.3. TLS 1.2 incorpora el extended master secret de la RFC 7627 y la protección contra downgrade de la RFC 8446 en ambos lados, y rechaza la renegociación y las firmas SHA-1.
Lo que no hace. El motor solo habla TLS 1.3 y TLS 1.2, sin TLS 1.1, TLS 1.0 ni SSL. No hay reanudación de sesión ni PSK, ni 0-RTT, ni QUIC. Las raíces de confianza vienen de TLSOptions.RootCertFile, más las raíces en las que confía el sistema operativo cuando NativeTLS_Options.UseSystemRoots es True, leídas del almacén ROOT de Windows o de un archivo de paquete CA, y nunca del llavero de macOS o iOS ni del almacén de Android, y el evento de componente OnSSLVerifyPeer no está disponible para él, el motor tiene sus propios puntos de enganche de verificación. Sigue con OpenSSL o con un backend de plataforma cuando necesites alguna de esas cosas.
Forma parte de sgcCrypto, así que se entrega desde la edición Standard en adelante y en el paquete independiente sgcCrypto.