Native TLS (iohNativeTLS)
Uma implementação de TLS 1.3 e TLS 1.2 escrita inteiramente em Object Pascal sobre as unidades do sgcCrypto, de modo que não há absolutamente nada para implantar, no Windows, Linux, macOS, iOS ou Android. Defina TLSOptions.IOHandler := iohNativeTLS em um cliente, ou SSLOptions.IOHandler := iohNativeTLS em um servidor, incluindo os mecanismos de servidor IOCP e EPOLL. TLSOptions.NativeTLS_Options.Groups e TLSOptions.NativeTLS_Options.CipherSuites recebem listas separadas por dois-pontos, no estilo do OpenSSL. Os padrões são X25519MLKEM768:X25519:secp256r1:secp384r1 e TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 mais os padrões de TLS 1.2, então um handshake contra um par que o suporte já é híbrido pós-quântico sem nenhuma configuração.
TLS 1.3 e TLS 1.2. TLSOptions.Version em um cliente, e SSLOptions.Version em um servidor, é a versão mínima permitida: tls1_2 ou tlsUndefined negocia TLS 1.3 ou TLS 1.2, e tls1_3 permite apenas TLS 1.3. Para usar somente TLS 1.2, liste apenas as suítes de TLS 1.2 em NativeTLS_Options.CipherSuites. O TLS 1.2 oferece ECDHE_ECDSA e ECDHE_RSA com AES-128-GCM, AES-256-GCM e ChaCha20-Poly1305 por padrão, enquanto as suítes ECDHE AES-CBC e a troca de chaves RSA só entram quando você as nomeia. Ele usa X25519, secp256r1 ou secp384r1, porque os grupos híbridos pós-quânticos existem apenas na TLS 1.3. O TLS 1.2 vem com o extended master secret da RFC 7627 e a proteção contra downgrade da RFC 8446 nos dois lados, e recusa renegociação e assinaturas SHA-1.
O que ele não faz. O mecanismo fala apenas TLS 1.3 e TLS 1.2, sem TLS 1.1, TLS 1.0 ou SSL. Não há retomada de sessão nem PSK, nem 0-RTT, nem QUIC. As raízes confiáveis vêm de TLSOptions.RootCertFile, além das raízes em que o sistema operacional confia quando NativeTLS_Options.UseSystemRoots é True, lidas do repositório ROOT do Windows ou de um arquivo de pacote de CAs, e nunca do chaveiro do macOS ou do iOS nem do repositório do Android, e o evento de componente OnSSLVerifyPeer não está disponível para ele, o mecanismo tem seus próprios ganchos de verificação. Continue no OpenSSL ou em um backend da plataforma quando precisar de algum desses recursos.
Ele faz parte do sgcCrypto, então vem da edição Standard em diante e também no pacote sgcCrypto separado.