
XboxTLS è una libreria statica standalone che porta il supporto completo per TLS 1.2 su Xbox 360 sfruttando BearSSL. Progettata per ambienti devkit o moddati (RGH/JTAG), questa libreria consente agli sviluppatori di homebrew di connettersi in modo sicuro a endpoint HTTPS moderni come GitHub, Discord, consolemods.org e altri, utilizzando una validazione robusta dei certificati X.509.
Cosa offre XboxTLS?
✅ Handshake TLS 1.2 completo + trasmissione dati sicura
🔐 Validazione dei certificati tramite anchor trust RSA o EC
⚡ Astrazione I/O ad alte prestazioni con Winsock + XNet
🧠 Utilizzo minimo dell’heap con ottimizzazione opzionale dei buffer
🔧 Generazione di entropia personalizzata via XeCryptRandom
📦 Solo statica – nessun linking dinamico a BearSSL
📷 Screenshot
Connessione riuscita a consolemods.org utilizzando P-384 ECC e validazione SHA-384 su homebrew Xbox 360.
🔧 Caratteristiche
Funzionalità | Supporto |
---|---|
Versione TLS | TLS 1.2 |
Core BearSSL | ✅ TLS & X.509 minimale |
Anchor Trust RSA | ✅ PKCS#1 |
Anchor Trust EC | ✅ P-256, P-384, ecc. |
Algoritmi SHA supportati | SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 |
SNI (Server Name Indication) | ✅ |
Modalità Socket Bloccante | ✅ (possibile anche non bloccante) |
Seed Random Personalizzato | ✅ XeCryptRandom |
Validazione Catena di Certificati | ❌ (solo trust anchor) |
TLS 1.3 | ❌ Non implementato |
Validazione Certificato Server | ✅ via BearSSL |
🛠️ Requisiti
- Xbox 360 (RGH/JTAG o devkit)
- XDK Xbox 360 + Visual Studio 2010
- Librerie XDK (
winsockx.h
,xtl.h
,xbox.h
, ecc.) - BearSSL (incluso staticamente nel progetto)
- Connessione Internet funzionante (via XNet)
🧠 Come Funziona
Struttura Interna
XboxTLS utilizza il motore TLS e il validatore X.509 minimale di BearSSL, astraendo i componenti specifici della piattaforma come:
- Socket I/O: tramite
recv
/send
+XNetStartup
- Generazione casuale: via
XeCryptRandom
- DNS: via
XNetDnsLookup
BearSSL non esegue una validazione completa della catena di certificati. XboxTLS consente invece l’inserimento manuale di chiavi pubbliche attendibili (trust anchor).
📦 Installazione
🔗 Clonare il Repository
git clone https://github.com/JakobRangel/XboxTLS.git
📄 Esempio di Utilizzo
XboxTLSContext ctx; XboxTLS_CreateContext(&ctx, "example.com"); ctx.hashAlgo = XboxTLS_Hash_SHA384; // Aggiungi un trust anchor EC XboxTLS_AddTrustAnchor_EC(&ctx, EC_DN, sizeof(EC_DN), EC_Q, sizeof(EC_Q), XboxTLS_Curve_secp384r1); // Opzionale: trust anchor RSA // XboxTLS_AddTrustAnchor_RSA(&ctx, RSA_DN, sizeof(RSA_DN), RSA_N, sizeof(RSA_N), RSA_E, sizeof(RSA_E)); char ip[64]; ResolveDNS("example.com", ip, sizeof(ip)); if (XboxTLS_Connect(&ctx, ip, "example.com", 443)) { const char* getReq = "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n"; XboxTLS_Write(&ctx, getReq, strlen(getReq)); char buf[2048]; int len; while ((len = XboxTLS_Read(&ctx, buf, sizeof(buf) - 1)) > 0) { buf[len] = '\0'; OutputDebugStringA(buf); // Stampa nel debugger } XboxTLS_Free(&ctx); }
✅ Per un esempio completo, consulta ExampleClient.cpp
nel repository.
🔐 Dettagli sui Trust Anchor
XboxTLS supporta il caricamento manuale di trust anchor tramite:
- Chiavi pubbliche RSA (modulo + esponente)
- Chiavi pubbliche EC (punto Q non compresso + ID curva)
È possibile estrarre queste informazioni con OpenSSL:
openssl x509 -in cert.pem -noout -pubkey -subject
📌 Conclusione
XboxTLS è una soluzione leggera e affidabile per abilitare comunicazioni HTTPS sicure su Xbox 360, ideale per progetti homebrew che necessitano di interagire con servizi web moderni.
🔗 Repository GitHub: https://github.com/JakobRangel/XboxTLS
🚀 Inizia a sviluppare con TLS 1.2 oggi stesso!