Natywny TLS (iohNativeTLS)
Implementacja TLS 1.3 i TLS 1.2 napisana w całości w Object Pascal na bazie jednostek sgcCrypto, więc nie wymaga wdrażania niczego, ani na Windows, ani na Linux, macOS, iOS czy Android. Ustaw TLSOptions.IOHandler := iohNativeTLS na kliencie albo SSLOptions.IOHandler := iohNativeTLS na serwerze, wraz z silnikami serwera IOCP i EPOLL. TLSOptions.NativeTLS_Options.Groups oraz TLSOptions.NativeTLS_Options.CipherSuites przyjmują listy rozdzielone dwukropkami, w stylu OpenSSL. Domyślnie są to X25519MLKEM768:X25519:secp256r1:secp384r1 oraz TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 wraz z domyślnymi ustawieniami TLS 1.2, więc uzgadnianie z drugim końcem, który je obsługuje, jest hybrydowo post-kwantowe bez żadnej konfiguracji.
TLS 1.3 i TLS 1.2. TLSOptions.Version na kliencie oraz SSLOptions.Version na serwerze to najniższa dopuszczalna wersja: tls1_2 lub tlsUndefined negocjuje TLS 1.3 albo TLS 1.2, a tls1_3 dopuszcza wyłącznie TLS 1.3. Aby wymusić wyłącznie TLS 1.2, wpisz w NativeTLS_Options.CipherSuites tylko zestawy szyfrów dla TLS 1.2. TLS 1.2 domyślnie oferuje ECDHE_ECDSA i ECDHE_RSA z AES-128-GCM, AES-256-GCM oraz ChaCha20-Poly1305, natomiast zestawy ECDHE AES-CBC oraz wymiana kluczy RSA są dostępne tylko wtedy, gdy zostaną wskazane z nazwy. Korzysta z X25519, secp256r1 lub secp384r1, ponieważ hybrydowe grupy post-kwantowe istnieją wyłącznie w TLS 1.3. TLS 1.2 obejmuje rozszerzony sekret główny z RFC 7627 oraz ochronę przed obniżeniem wersji z RFC 8446 po obu stronach, a także odrzuca renegocjację i podpisy SHA-1.
Czego nie robi. Silnik obsługuje wyłącznie TLS 1.3 i TLS 1.2, bez TLS 1.1, TLS 1.0 ani SSL. Nie ma wznawiania sesji ani PSK, nie ma 0-RTT ani QUIC. Zaufane korzenie pochodzą z TLSOptions.RootCertFile, a dodatkowo z korzeni zaufanych przez system operacyjny, gdy NativeTLS_Options.UseSystemRoots ma wartość True, odczytywanych z magazynu ROOT systemu Windows lub z pliku pakietu CA, a nigdy z pęku kluczy macOS czy iOS ani z magazynu Android, a zdarzenie komponentu OnSSLVerifyPeer nie jest dla niego dostępne, silnik ma własne punkty zaczepienia weryfikacji. Jeśli potrzebujesz którejkolwiek z tych rzeczy, pozostań przy OpenSSL lub backendzie platformowym.
Jest częścią pakietu sgcCrypto, więc dostarczany jest od edycji Standard wzwyż oraz w samodzielnym pakiecie sgcCrypto.