import java.nio.file.Files;
import java.nio.file.Path;
import java.security.KeyStore;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;

public class KemampuanTls {

    public static void main(String[] args) throws Exception {
        // 1) Kemampuan protokol bawaan JDK.
        SSLContext konteks = SSLContext.getDefault();
        System.out.println("SSLContext bawaan      : " + konteks.getProtocol());

        try (SSLSocket soket = (SSLSocket) konteks.getSocketFactory().createSocket()) {
            System.out.println("Protokol aktif         : "
                    + String.join(", ", soket.getEnabledProtocols()));
            System.out.println("Cipher suite aktif     : "
                    + soket.getEnabledCipherSuites().length + " suite");
        }

        // 2) Muatan kepercayaan bawaan: daftar root CA di berkas cacerts.
        Path cacerts = Path.of(System.getProperty("java.home"), "lib", "security", "cacerts");
        KeyStore penyimpanan = KeyStore.getInstance(KeyStore.getDefaultType());
        try (var masukan = Files.newInputStream(cacerts)) {
            penyimpanan.load(masukan, "changeit".toCharArray());
        }
        System.out.println("Root CA terpercaya JDK : " + penyimpanan.size()
                + " entri (cacerts)");
    }
}
