mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-17 22:23:10 +03:00
extremely ugly hack to fix bad behaviour of java6 when dealing with SSL
This commit is contained in:
@ -16,6 +16,7 @@ import processing.app.debug.RunnerException;
|
|||||||
import processing.app.debug.TargetPlatform;
|
import processing.app.debug.TargetPlatform;
|
||||||
import processing.app.helpers.PreferencesMap;
|
import processing.app.helpers.PreferencesMap;
|
||||||
|
|
||||||
|
import javax.net.ssl.SSLSocket;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
@ -90,6 +91,10 @@ public class HttpUploader extends Uploader {
|
|||||||
try {
|
try {
|
||||||
socket = new Socket();
|
socket = new Socket();
|
||||||
socket.connect(new InetSocketAddress(ipAddress, 9876), 5000);
|
socket.connect(new InetSocketAddress(ipAddress, 9876), 5000);
|
||||||
|
socket = new EasySSLProtocolSocketFactory().createSocket(socket, ipAddress, 9876, true);
|
||||||
|
SSLSocket sslSocket = (SSLSocket) socket;
|
||||||
|
sslSocket.setEnabledProtocols(EasySSLProtocolSocketFactory.SSL_PROTOCOLS);
|
||||||
|
sslSocket.setEnabledCipherSuites(EasySSLProtocolSocketFactory.SSL_CYPHER_SUITES);
|
||||||
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
|
OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream());
|
||||||
osw.write(uploadRequest.toString());
|
osw.write(uploadRequest.toString());
|
||||||
osw.flush();
|
osw.flush();
|
||||||
|
@ -97,6 +97,8 @@ public class EasySSLProtocolSocketFactory implements SecureProtocolSocketFactory
|
|||||||
* Log object for this class.
|
* Log object for this class.
|
||||||
*/
|
*/
|
||||||
private static final Log LOG = LogFactory.getLog(EasySSLProtocolSocketFactory.class);
|
private static final Log LOG = LogFactory.getLog(EasySSLProtocolSocketFactory.class);
|
||||||
|
public static final String[] SSL_PROTOCOLS = {"SSLv3", "TLSv1"};
|
||||||
|
public static final String[] SSL_CYPHER_SUITES = {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "TLS_ECDHE_RSA_WITH_RC4_128_SHA", "SSL_RSA_WITH_RC4_128_SHA", "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "TLS_ECDH_RSA_WITH_RC4_128_SHA", "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_RC4_128_MD5", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"};
|
||||||
|
|
||||||
private SSLContext sslcontext = null;
|
private SSLContext sslcontext = null;
|
||||||
|
|
||||||
@ -188,9 +190,11 @@ public class EasySSLProtocolSocketFactory implements SecureProtocolSocketFactory
|
|||||||
socket.bind(localaddr);
|
socket.bind(localaddr);
|
||||||
socket.connect(remoteaddr, timeout);
|
socket.connect(remoteaddr, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
SSLSocket sslSocket = (SSLSocket) socket;
|
SSLSocket sslSocket = (SSLSocket) socket;
|
||||||
String[] protocolsWithoutSSLv2Hello = {"SSLv3", "TLSv1"};
|
sslSocket.setEnabledProtocols(SSL_PROTOCOLS);
|
||||||
sslSocket.setEnabledProtocols(protocolsWithoutSSLv2Hello);
|
sslSocket.setEnabledCipherSuites(SSL_CYPHER_SUITES);
|
||||||
|
|
||||||
return socket;
|
return socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user