diff options
author | Alex Klyubin <klyubin@google.com> | 2013-11-07 17:08:07 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2013-11-07 17:08:08 +0000 |
commit | 3a33c8aa9c68df87f46a1d78080b7b526aee939e (patch) | |
tree | 5040282ffa53361f5845b6b10753946448fbe9fd /luni | |
parent | 35dca2033cdc015b528e01a1f97d2bcc65cdceaf (diff) | |
parent | 038cb91ddb127750737055649f6171dc1af3985a (diff) | |
download | libcore-3a33c8aa9c68df87f46a1d78080b7b526aee939e.zip libcore-3a33c8aa9c68df87f46a1d78080b7b526aee939e.tar.gz libcore-3a33c8aa9c68df87f46a1d78080b7b526aee939e.tar.bz2 |
Merge "BEAST attack mitigation for OpenSSL-backed SSLSockets."
Diffstat (limited to 'luni')
-rw-r--r-- | luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java index 98bcdc6..456a1e3 100644 --- a/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java +++ b/luni/src/test/java/libcore/javax/net/ssl/SSLSocketTest.java @@ -54,6 +54,7 @@ import javax.net.ssl.TrustManager; import javax.net.ssl.X509KeyManager; import javax.net.ssl.X509TrustManager; import junit.framework.TestCase; +import libcore.io.Streams; import libcore.java.security.StandardNames; import libcore.java.security.TestKeyStore; @@ -177,17 +178,32 @@ public class SSLSocketTest extends TestCase { SSLSocket server = pair[0]; SSLSocket client = pair[1]; + + // Check that the client can read the message sent by the server server.getOutputStream().write(serverToClient); + byte[] clientFromServer = new byte[serverToClient.length]; + Streams.readFully(client.getInputStream(), clientFromServer); + assertEquals(serverToClientString, new String(clientFromServer)); + + // Check that the server can read the message sent by the client client.getOutputStream().write(clientToServer); - // arrays are too big to make sure we get back only what we expect - byte[] clientFromServer = new byte[serverToClient.length+1]; - byte[] serverFromClient = new byte[clientToServer.length+1]; - int readFromServer = client.getInputStream().read(clientFromServer); - int readFromClient = server.getInputStream().read(serverFromClient); - assertEquals(serverToClient.length, readFromServer); - assertEquals(clientToServer.length, readFromClient); - assertEquals(clientToServerString, new String(serverFromClient, 0, readFromClient)); - assertEquals(serverToClientString, new String(clientFromServer, 0, readFromServer)); + byte[] serverFromClient = new byte[clientToServer.length]; + Streams.readFully(server.getInputStream(), serverFromClient); + assertEquals(clientToServerString, new String(serverFromClient)); + + // Check that the server and the client cannot read anything else + // (reads should time out) + server.setSoTimeout(10); + try { + server.getInputStream().read(); + fail(); + } catch (IOException expected) {} + client.setSoTimeout(10); + try { + client.getInputStream().read(); + fail(); + } catch (IOException expected) {} + client.close(); server.close(); assertFalse(errorExpected); |