2013-07-14 1 views
0

On dirait que le support SSL/TLS a été récemment added à Dart via la classe SecureSocket, ce qui est génial.Activer TLS sur socket ouvert (STARTTLS)

Ainsi, par exemple, ce

SecureSocket.connect(_host, _port).then(
     (Socket socket) { 
      ... 

ouvre un socket avec TLS activé tout de suite. Cependant, ce que je voudrais faire est d'ouvrir une socket régulière (non sécurisée), d'envoyer et de recevoir des données non chiffrées en premier, et d'activer TLS dessus plus tard.

Voilà comment cela peut se faire en PHP:

$socket = fsockopen($server, $port, $errno, $errstr); 
// ... do some unencrypted stuff... 
stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); 

Toute façon de le faire à Dart?

EDIT: Je suppose que ce que je cherche est une implémentation Dart de STARTTLS.

Répondre

0

Je ne l'ai pas essayé moi-même, mais il semble que la méthode secure dans la documentation SecureSocket est exactement ce que vous cherchez (en supposant que vous souhaitez utiliser une poignée de main côté client, sinon voir secureServer):

Future<SecureSocket> secure(Socket socket, {host, 
     bool sendClientCertificate: false, String certificateName, bool 
     onBadCertificate(X509Certificate certificate)}) 

Prend une socket déjà connectée et commence poignée de main TLS côté client pour rendre la communication sécurisée.

+0

Fonctionne. Je ne peux pas croire que je n'ai pas vu ça dans le document. Merci! – Max