diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-22 20:42:50 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-22 20:42:50 +0000 |
commit | 8bf51c838095aabbb5ce9dbdb6721992da8b7232 (patch) | |
tree | 148f8f97dcdbdeb7b7c141b39bd18a07d9ac3363 | |
parent | c75c55acad78b1e55af9e1d598d24ea1feed5479 (diff) | |
parent | 6fa0c34c9eb845fbd312b02c889d97e3ff8070ab (diff) | |
download | libcore-oreo-m4-s7-release.tar.gz |
Merge cherrypicks of [3782287, 3782954, 3783025, 3783026, 3783027, 3783028, 3783029, 3783030, 3783164, 3783165, 3783167, 3783168, 3783170, 3783171, 3783172, 3782288, 3783031, 3782196, 3782955] into oc-m4-releaseandroid-8.1.0_r42android-8.1.0_r40android-8.1.0_r39android-8.1.0_r38android-8.1.0_r37android-8.1.0_r32android-8.1.0_r31oreo-m4-s9-releaseoreo-m4-s8-releaseoreo-m4-s7-releaseoreo-m4-s6-releaseoreo-m4-s5-releaseoreo-m4-s11-releaseoreo-m4-s10-release
Change-Id: Ic23c66ec8ccf12d038f74202f2380ad232d3150b
-rw-r--r-- | luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java index d9a7b4fadc8..a4d3e5f4c02 100644 --- a/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java +++ b/luni/src/test/java/libcore/javax/net/ssl/SSLEngineTest.java @@ -317,9 +317,49 @@ public class SSLEngineTest extends TestCase { assertEquals(sourceCipherSuite, 2, numUnwrapCalls); } else { assertEquals(sourceCipherSuite, 1, numUnwrapCalls); + assertSendsCorrectlyWhenSplit(sourceBytes, source, dest); } } + private static void assertSendsCorrectlyWhenSplit(final byte[] sourceBytes, SSLEngine source, + SSLEngine dest) throws SSLException { + // Split the input into three to test the version that accepts ByteBuffer[]. Three + // is chosen somewhat arbitrarily as a number larger than the minimum of 2 but small + // enough that it's not unwieldy. + ByteBuffer[] sourceBufs = new ByteBuffer[3]; + int sourceLen = sourceBytes.length; + sourceBufs[0] = ByteBuffer.wrap(sourceBytes, 0, sourceLen / 3); + sourceBufs[1] = ByteBuffer.wrap(sourceBytes, sourceLen / 3, sourceLen / 3); + sourceBufs[2] = ByteBuffer.wrap( + sourceBytes, 2 * (sourceLen / 3), sourceLen - 2 * (sourceLen / 3)); + SSLSession sourceSession = source.getSession(); + ByteBuffer sourceToDest = ByteBuffer.allocate(sourceSession.getPacketBufferSize()); + SSLEngineResult sourceOutRes = source.wrap(sourceBufs, sourceToDest); + sourceToDest.flip(); + + String sourceCipherSuite = source.getSession().getCipherSuite(); + assertEquals(sourceCipherSuite, sourceBytes.length, sourceOutRes.bytesConsumed()); + assertEquals(sourceCipherSuite, HandshakeStatus.NOT_HANDSHAKING, + sourceOutRes.getHandshakeStatus()); + + SSLSession destSession = dest.getSession(); + ByteBuffer destIn = ByteBuffer.allocate(destSession.getApplicationBufferSize()); + + int numUnwrapCalls = 0; + while (destIn.position() != sourceBytes.length) { + SSLEngineResult destRes = dest.unwrap(sourceToDest, destIn); + assertEquals(sourceCipherSuite, HandshakeStatus.NOT_HANDSHAKING, + destRes.getHandshakeStatus()); + numUnwrapCalls++; + } + + destIn.flip(); + byte[] actual = new byte[destIn.remaining()]; + destIn.get(actual); + assertEquals(sourceCipherSuite, Arrays.toString(sourceBytes), Arrays.toString(actual)); + assertEquals(sourceCipherSuite, 3, numUnwrapCalls); + } + public void test_SSLEngine_getEnabledCipherSuites_returnsCopies() throws Exception { TestSSLContext c = TestSSLContext.create(); SSLEngine e = c.clientContext.createSSLEngine(); |