LINUX.ORG.RU

c++ & openssl


0

0

Привет всем. Что я делаю не так?

SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
SSL_CTX *ctx = SSL_CTX_new(SSLv2_client_method());

BIO *cbio = BIO_new_ssl_connect(ctx);
BIO_set_conn_hostname(cbio, "https://localhost:443");
SSL *ssl_connection = SSL_new(ctx);
BIO_get_ssl(cbio,&ssl_connection);

if (!SSL_connect(ssl_connection))
cout << "Connection fault", exit (-1);
if (!SSL_write(ssl_connection, _post.c_str(), _post.length()))
cout << "Write error", exit(-1);

char *buf = new char[1024];
int readSz;

if (!(readSz=SSL_read(ssl_connection, buf, 1023)))
cout << "error while reading", exit(0);
buf[readSz]='\0';

Вроде бы все ок, коннектится, пишется, читается, но читается пару байт непечатаемых символов...
----------------------------------------
При этом в логах httpd нет ни одной записи о запросе!
----------------------------------------
netstat -tanp|grep 443
tcp 0 0 :::443 :::* LISTEN 6577/httpd
----------------------------------------
Post-запрос формируется так:

// Make Post Request
string _postContent;
map<string, string>::iterator iter;
for (iter = post.begin(); iter != post.end(); iter++)
{
_postContent+= "--03f2e6464aa7a610a84f0ae3072106fa\r\nContent-Disposition: form-data; name=\"" +
iter->first + "\"\r\n\r\n" +
iter->second + "\r\n--03f2e6464aa7a610a84f0ae3072106fa\r\n";
}
_postContent+="\r\n";

// POST Request string
string _post = "POST " + getPath + " HTTP/1.1\r\n"
"Accept: */*\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n"
"Host: " + host + "\r\n"
"Connection: Close\r\n"
"Content-Type: multipart/form-data; boundary=03f2e6464aa7a610a84f0ae3072106fa\r\n"
"Content-Length: " + toString(_postContent.length()) + "\r\n\r\n" + _postContent;

cout << buf << endl;


Подскажите в чем проблема и/или где почитать вообще про C++ & OpenSSL. На http://openssl.org только man по функциям, это полезно, но мало '(

anonymous

Re: c++ & openssl

Отвечу сам себе =)
Нет нормальной доки - берем сырцы того, что использует эту либу, к примеру толково и доступно написанный wget =)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.