CSockt не работает с ошибками OpenSSL Ssl_connect - PullRequest
0 голосов
/ 26 октября 2018

Хочу использовать CSocket с OpenSsl. ошибка в SSL_connect. с ошибкой SSL_ERROR_WANT_READ.

Я подключаю сокет Linux Linux к сокету MFC. сбой только SSL_connect.

образец кода добавлен ниже:

if(this->Create() == FALSE)
{
    return false;
}

if(this->Connect(hostip.c_str(),port) == FALSE)
{
    return false;
}
pSslCtx = SSL_CTX_new(SSLv23_method());

if (SSL_CTX_load_verify_locations(pSslCtx,strSslFile, NULL) != 1)
{
    return false;
}
if (SSL_CTX_set_default_verify_paths(pSslCtx) != 1)
{
    return false;
}
pSSLConn          = SSL_new(pSslCtx);
if(!pSSLConn)
    return false;

SSL_set_fd(pSSLConn, this->m_hSocket);

pBIOConn = BIO_new_socket(this->m_hSocket, BIO_NOCLOSE);

SSL_set_bio(pSSLConn, pBIOConn, pBIOConn);

SSL_set_connect_state(pSSLConn);
if (SSL_connect(pSSLConn) <= 0)
{
    return false;
}

1 Ответ

0 голосов
/ 26 октября 2018

верно это:

SOCKET q = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
BIO *u7 = BIO_new_socket(q, BIO_NOCLOSE);
connect(q, (sockaddr*)&server, sizeof(server));
SSL_set_bio(cSSL, u7, u7);
SSL_connect(cSSL);

https://github.com/alexeyneu/BlockZero/blob/b8eec009208cbef5d644a1026678cb1f09e1a19b/trew/trew/trew.cpp#L81
и я не вижу ни реального метода ssl, ни шифра, ни сертификатов.

...