Разница между `BIO_do_connect` и` BIO_do_handshake` - PullRequest
0 голосов
/ 20 марта 2020

Есть ли функциональная разница между BIO_do_connect и BIO_do_handshake?

Оба определены как один и тот же макрос:

/* BIO_s_accept() and BIO_s_connect() */
#  define BIO_do_connect(b)       BIO_do_handshake(b)
#  define BIO_do_accept(b)        BIO_do_handshake(b)
# endif /* OPENSSL_NO_SOCK */

# define BIO_do_handshake(b)     BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)

Большинство примеров написания вызова клиента TLS BIO_do_handshake после BIO_do_connect для инициации рукопожатия SSL и открытия соединения SSL , Но из того, что я видел при анализе сетевого трафика c с помощью Wireshark, BIO_do_connect выполняет как TCP-рукопожатие, так и TLS-рукопожатие и открывает SSL-соединение.

Вызов BIO_do_handshake впоследствии не имеет никакого эффекта.

Есть ли какое-либо состояние, в которое конечный автомат переходит после BIO_do_connect, что требует вызова BIO_do_handshake?

Является ли это некоторым пережитком предыдущих версий OpenSSL, и для поддержки обратной совместимости необходимы вызовы BIO_do_connect и BIO_do_handshake?

Эти вопросы возникли после того, как я задал этот вопрос на SE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...