Миграция по умолчанию BIO_METHOD из OpenSSL 1.0.2 в 1.1.1 - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь перенести код своего приложения с OpenSSL 1.0.2 на 1.1.1, и я наткнулся на изменение, которое, похоже, не понимаю.

В 1.0.2 мы заменили стандартные bread и bwrite методы BIO_s_socket на вызов:

orig_bread = BIO_s_socket()->bread;
orig_bwrite = BIO_s_socket()->bwrite;
BIO_s_socket()->bread = my_bread;
BIO_s_socket()->bwrite = my_bwrite;

Однако в OpenSSL 1.1.1 BIO_s_socket(), как говорят, возвращает const BIO_METHOD* вместо BIO_METHOD*. Как я могу изменить поведение по умолчанию в этой версии?

Редактировать: (... и если я больше не могу это сделать, как мне установить bwrite для каждого соединения ssl?)

1 Ответ

0 голосов
/ 24 апреля 2019

Я пытаюсь перенести код своего приложения с OpenSSL 1.0.2 на 1.1.0

Во-первых, я рекомендую вам перейти на 1.1.1, а не 1.1.0. 1.1.1 является долгосрочной версией поддержки (LTS) и будет поддерживаться до 2023 года. Поддержка 1.1.0 заканчивается в этом году.

Вам необходимо создать пользовательский BIO_METHOD. Вкратце, вы создаете один из них, используя BIO_meth_new(), а затем устанавливаете пользовательские функции чтения и записи, используя BIO_meth_set_read() и BIO_meth_set_write(). В зависимости от того, что делает ваш BIO_METHOD, вам может потребоваться вызвать другие функции набора. Все они документированы здесь:

https://www.openssl.org/docs/man1.1.1/man3/BIO_meth_new.html

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