SSL_accept () выдает ошибку «Неверный аргумент» - PullRequest
3 голосов
/ 04 сентября 2010

Я пытаюсь создать программу клиент / сервер, но у меня возникают трудности с продолжением работы с к сожалению редким количеством документации OpenSSL.

Моя проблема: SSL_accept выдает «Неверный аргумент»после выполнения следующего кода (упрощенно):

SSL* ssl = SSL_new(ctx); // ctx is created earlier
SSL_set_fd(ssl, socket); // socket is created earlier as well
BIO * bio = BIO_new(BIO_s_accept());
BIO_set_fd(bio, socket, BIO_NOCLOSE);
SSL_set_bio(ssl, bio, bio);
SSL_accept(ssl); 

Я проверяю ошибки после каждого вызова метода, и ни сокет, ни биография не выходят из строя.Нет никаких признаков того, что происходит что-то странное, пока я не попытаюсь вызвать SSL_accept.Я предполагаю, что объект ssl был поврежден где-то по пути, но я понятия не имею, как ~

Edit Объект SSL и объект BIO не являются ноль в точке вызова SSL_accept ().

Будем весьма благодарны за любые указатели в правильном направлении: D

Ответы [ 2 ]

2 голосов
/ 04 сентября 2010

SSL_set_fd() - это удобная альтернатива для ручной настройки BIO. Он автоматически создает BIO и устанавливает его, поэтому все, что вам нужно сделать, это:

SSL* ssl = SSL_new(ctx);
SSL_set_fd(ssl, socket);
SSL_accept(ssl); 
1 голос
/ 04 сентября 2010

Как и у вас, у меня были трудные времена с недостатком документации. Поэтому я не могу сказать, являются ли вызовы set_fd неправильными или правильными, но я получил их без них. Последовательность вызовов, которые я успешно использовал:

BIO *sbio = BIO_new_socket( socket, BIO_NOCLOSE );
SSL* ssl = SSL_new(ctx); 
SSL_set_bio( ssl, sbio, sbio );
SSL_accept( ssl );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...