handshake() — netty Function Reference
Architecture documentation for the handshake() function in SSLEngineTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 7380f50e_d3f0_3078_ee65_de1cb780c79d["handshake()"] 9150c92a_2afc_b83a_c3bf_86dfac6e9d9b["SSLEngineTest"] 7380f50e_d3f0_3078_ee65_de1cb780c79d -->|defined in| 9150c92a_2afc_b83a_c3bf_86dfac6e9d9b 207c9557_d4be_64b2_a88f_1251635bc36e["testIncompatibleCiphers()"] 207c9557_d4be_64b2_a88f_1251635bc36e -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d b43d4da2_10b1_b469_b24d_a84be34c5194["testSessionInvalidate()"] b43d4da2_10b1_b469_b24d_a84be34c5194 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 5375e3e4_ce21_a9c7_f00f_e17068b8f5dd["testSSLSessionId()"] 5375e3e4_ce21_a9c7_f00f_e17068b8f5dd -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d bfe6f0b3_5387_9664_b28e_4090d9fe2eca["clientInitiatedRenegotiationWithFatalAlertDoesNotInfiniteLoopServer()"] bfe6f0b3_5387_9664_b28e_4090d9fe2eca -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d e2e50c11_3d50_49ea_6ae2_fe300aceb7e7["testUnwrapBehavior()"] e2e50c11_3d50_49ea_6ae2_fe300aceb7e7 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d a3e37cac_f0f9_6df0_2442_2e6c0ca1b5a8["testProtocol()"] a3e37cac_f0f9_6df0_2442_2e6c0ca1b5a8 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d ee8aab19_172a_3808_dcd3_fafb773c3be7["testHandshakeCompletesWithNonContiguousProtocolsTLSv1_2CipherOnly()"] ee8aab19_172a_3808_dcd3_fafb773c3be7 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 22054a12_fd53_a771_de5c_0b8aa8c31cd1["testHandshakeCompletesWithoutFilteringSupportedCipher()"] 22054a12_fd53_a771_de5c_0b8aa8c31cd1 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 52fddb55_d5b7_b4de_fce5_ae7da59a403d["testPacketBufferSizeLimit()"] 52fddb55_d5b7_b4de_fce5_ae7da59a403d -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d de1c51ac_1e6a_c9e2_ab64_b5f00fba9a79["testCloseNotifySequence()"] de1c51ac_1e6a_c9e2_ab64_b5f00fba9a79 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 99ba8b15_4f6c_e29c_c402_d945e9d65fec["testWrapAfterCloseOutbound()"] 99ba8b15_4f6c_e29c_c402_d945e9d65fec -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 883adc08_0321_6bb9_506d_aed4d3605c60["testMultipleRecordsInOneBufferWithNonZeroPosition()"] 883adc08_0321_6bb9_506d_aed4d3605c60 -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d 1d0378a4_6160_6b4f_500f_a54ef5547d2f["testMultipleRecordsInOneBufferBiggerThenPacketBufferSize()"] 1d0378a4_6160_6b4f_500f_a54ef5547d2f -->|calls| 7380f50e_d3f0_3078_ee65_de1cb780c79d style 7380f50e_d3f0_3078_ee65_de1cb780c79d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java lines 1652–1771
protected void handshake(BufferType type, boolean delegate, SSLEngine clientEngine, SSLEngine serverEngine)
throws Exception {
ByteBuffer cTOs = allocateBuffer(type, clientEngine.getSession().getPacketBufferSize());
ByteBuffer sTOc = allocateBuffer(type, serverEngine.getSession().getPacketBufferSize());
ByteBuffer serverAppReadBuffer = allocateBuffer(type, serverEngine.getSession().getApplicationBufferSize());
ByteBuffer clientAppReadBuffer = allocateBuffer(type, clientEngine.getSession().getApplicationBufferSize());
assertEquals(SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING, clientEngine.getHandshakeStatus());
assertEquals(SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING, serverEngine.getHandshakeStatus());
clientEngine.beginHandshake();
serverEngine.beginHandshake();
ByteBuffer empty = allocateBuffer(type, 0);
SSLEngineResult clientResult;
SSLEngineResult serverResult;
boolean clientHandshakeFinished = false;
boolean serverHandshakeFinished = false;
boolean cTOsHasRemaining;
boolean sTOcHasRemaining;
do {
int cTOsPos = cTOs.position();
int sTOcPos = sTOc.position();
if (!clientHandshakeFinished) {
clientResult = clientEngine.wrap(empty, cTOs);
runDelegatedTasks(delegate, clientResult, clientEngine);
assertEquals(empty.remaining(), clientResult.bytesConsumed());
assertEquals(cTOs.position() - cTOsPos, clientResult.bytesProduced());
clientHandshakeFinished = assertHandshakeStatus(clientEngine, clientResult);
if (clientResult.getStatus() == Status.BUFFER_OVERFLOW) {
cTOs = increaseDstBuffer(clientEngine.getSession().getPacketBufferSize(), type, cTOs);
}
}
if (!serverHandshakeFinished) {
serverResult = serverEngine.wrap(empty, sTOc);
runDelegatedTasks(delegate, serverResult, serverEngine);
assertEquals(empty.remaining(), serverResult.bytesConsumed());
assertEquals(sTOc.position() - sTOcPos, serverResult.bytesProduced());
serverHandshakeFinished = assertHandshakeStatus(serverEngine, serverResult);
if (serverResult.getStatus() == Status.BUFFER_OVERFLOW) {
sTOc = increaseDstBuffer(serverEngine.getSession().getPacketBufferSize(), type, sTOc);
}
}
cTOs.flip();
sTOc.flip();
cTOsPos = cTOs.position();
sTOcPos = sTOc.position();
if (!clientHandshakeFinished ||
// After the handshake completes it is possible we have more data that was send by the server as
// the server will send session updates after the handshake. In this case continue to unwrap.
SslProtocols.TLS_v1_3.equals(clientEngine.getSession().getProtocol())) {
if (sTOc.hasRemaining() ||
// We need to special case conscrypt due a bug.
Conscrypt.isEngineSupported(clientEngine)) {
int clientAppReadBufferPos = clientAppReadBuffer.position();
clientResult = clientEngine.unwrap(sTOc, clientAppReadBuffer);
runDelegatedTasks(delegate, clientResult, clientEngine);
assertEquals(sTOc.position() - sTOcPos, clientResult.bytesConsumed());
assertEquals(clientAppReadBuffer.position() - clientAppReadBufferPos, clientResult.bytesProduced());
assertEquals(0, clientAppReadBuffer.position());
if (assertHandshakeStatus(clientEngine, clientResult)) {
clientHandshakeFinished = true;
}
if (clientResult.getStatus() == Status.BUFFER_OVERFLOW) {
clientAppReadBuffer = increaseDstBuffer(
clientEngine.getSession().getApplicationBufferSize(), type, clientAppReadBuffer);
Domain
Subdomains
Called By
- clientInitiatedRenegotiationWithFatalAlertDoesNotInfiniteLoopServer()
- doHandshakeVerifyReusedAndClose()
- testBufferUnderFlow()
- testBufferUnderflowPacketSizeDependency()
- testCloseNotifySequence()
- testEnabledProtocolsAndCiphers()
- testGetCiphersuite()
- testHandshakeCompletesWithNonContiguousProtocolsTLSv1_2CipherOnly()
- testHandshakeCompletesWithoutFilteringSupportedCipher()
- testHandshakeSession()
- testIncompatibleCiphers()
- testInvalidSNIIsIgnoredAndNotThrow()
- testMultipleRecordsInOneBufferBiggerThenPacketBufferSize()
- testMultipleRecordsInOneBufferWithNonZeroPosition()
- testPacketBufferSizeLimit()
- testProtocol()
- testSSLSessionId()
- testSessionAfterHandshake0()
- testSessionBindingEvent()
- testSessionInvalidate()
- testSessionLocalWhenNonMutual()
- testSupportedSignatureAlgorithms()
- testTLSv13DisabledIfNoValidCipherSuiteConfigured()
- testTLSv13EnabledIfNoCipherSuiteConfigured()
- testUnwrapBehavior()
- testUsingX509TrustManagerVerifiesHostname()
- testWrapAfterCloseOutbound()
- testWrapDoesNotZeroOutSrc()
Source
Frequently Asked Questions
What does handshake() do?
handshake() is a function in the netty codebase, defined in handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java.
Where is handshake() defined?
handshake() is defined in handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java at line 1652.
What does handshake() call?
handshake() calls 3 function(s): assertHandshakeStatus, compactOrClear, runDelegatedTasks.
What calls handshake()?
handshake() is called by 28 function(s): clientInitiatedRenegotiationWithFatalAlertDoesNotInfiniteLoopServer, doHandshakeVerifyReusedAndClose, testBufferUnderFlow, testBufferUnderflowPacketSizeDependency, testCloseNotifySequence, testEnabledProtocolsAndCiphers, testGetCiphersuite, testHandshakeCompletesWithNonContiguousProtocolsTLSv1_2CipherOnly, and 20 more.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free