Home / Function/ handshake() — netty Function Reference

handshake() — netty Function Reference

Architecture documentation for the handshake() function in SSLEngineTest.java from the netty codebase.

Function java Buffer Allocators calls 3 called by 28

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

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