Add test to validate SSLEngine does not zero out src buffer on wrap. (#7914)
Motivation: We had a bug-report that claimed the src buffer used by OpenSslEngine will be zero out. Modifications: Add testcase to ensure correct behaviour Result: Testcase for https://github.com/netty/netty/issues/7753
This commit is contained in:
parent
d03bd44e9d
commit
54c3de0f8a
@ -2311,4 +2311,48 @@ public abstract class SSLEngineTest {
|
||||
assertEquals(0, result.bytesConsumed());
|
||||
assertEquals(0, result.bytesProduced());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWrapDoesNotZeroOutSrc() throws Exception {
|
||||
SelfSignedCertificate cert = new SelfSignedCertificate();
|
||||
|
||||
clientSslCtx = SslContextBuilder
|
||||
.forClient()
|
||||
.trustManager(cert.cert())
|
||||
.sslProvider(sslClientProvider())
|
||||
.build();
|
||||
SSLEngine client = clientSslCtx.newEngine(UnpooledByteBufAllocator.DEFAULT);
|
||||
|
||||
serverSslCtx = SslContextBuilder
|
||||
.forServer(cert.certificate(), cert.privateKey())
|
||||
.sslProvider(sslServerProvider())
|
||||
.build();
|
||||
SSLEngine server = serverSslCtx.newEngine(UnpooledByteBufAllocator.DEFAULT);
|
||||
|
||||
try {
|
||||
ByteBuffer plainServerOut = allocateBuffer(server.getSession().getApplicationBufferSize() / 2);
|
||||
|
||||
handshake(client, server);
|
||||
|
||||
// Fill the whole buffer and flip it.
|
||||
for (int i = 0; i < plainServerOut.capacity(); i++) {
|
||||
plainServerOut.put(i, (byte) i);
|
||||
}
|
||||
plainServerOut.position(plainServerOut.capacity());
|
||||
plainServerOut.flip();
|
||||
|
||||
ByteBuffer encryptedServerToClient = allocateBuffer(server.getSession().getPacketBufferSize());
|
||||
SSLEngineResult result = server.wrap(plainServerOut, encryptedServerToClient);
|
||||
assertEquals(SSLEngineResult.Status.OK, result.getStatus());
|
||||
assertTrue(result.bytesConsumed() > 0);
|
||||
|
||||
for (int i = 0; i < plainServerOut.capacity(); i++) {
|
||||
assertEquals((byte) i, plainServerOut.get(i));
|
||||
}
|
||||
} finally {
|
||||
cleanupClientSslEngine(client);
|
||||
cleanupServerSslEngine(server);
|
||||
cert.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user