Есть программа клиент-сервер на winsock. Мне посоветовали для защиты инфы использовать SSL. Подскажите как это сделать и что необходимо VC для возможности использования SSL
On Thu, 29 Dec 2005 17:02:19 +0300, Аноним <0@users.rsdn.ru> wrote:
> Есть программа клиент-сервер на winsock. Мне посоветовали для защиты инфы использовать SSL. Подскажите как это сделать и что необходимо VC для возможности использования SSL
http://www.openssl.org/
Скачай исходники, там есть примеры.
--
Maxim YegorushkinPosted via RSDN NNTP Server 2.0
Здравствуйте, MaximE, Вы писали:
>http://www.openssl.org/
>Скачай исходники, там есть примеры.
Спасибо за ссылку, но с моим знанием английского это проблемно. Вы не знаете, случаем, рускоязычного источника.
>>http://www.openssl.org/
>>Скачай исходники, там есть примеры.
>Спасибо за ссылку, но с моим знанием английского это проблемно. Вы не знаете, случаем, рускоязычного источника.
----------------------------------------------------------------------------------
Я скажу тебе, что тот ресурс, на который тебя посылают — полное фуфло! Но, деваться некуда...
Не одинь день я ломал себе голову над ихними BIO_read'ами и hand_shak'ами...
В результате написал класс для работы с этим эсэсэлем.. Только ты уж почитай немного про
серификаты.. Если чё — пиши на мыло. Refactor@mail.ru Могу один выслать

Удачи!
//------------------
//header:
//------------------
#pragma once
#pragma comment (lib, "../openssl/lib/ssleay32.lib")
#pragma comment (lib, "../openssl/lib/libeay32.lib")
#include "../openssl/err.h"
#include "../openssl/ssl.h"
class __DLLSPEC__ XSOCKET {
public:
LPTSTR host;
int port;
public:
XSOCKET(LPTSTR host, int port);
int Bind();
int Connect();
int Receive(char *buffer, int size);
int Send(char *buffer, int size);
int Shutdown();
private:
bool Init();
private:
BIO *sbio;
int len;
char tmpbuf[1024];
SSL_CTX *ctx;
SSL *ssl;
};
//------------------
XSOCKET::XSOCKET(LPTSTR host, int port) {
this->host = host;
this->port = port;
}
bool XSOCKET::Init() {
OpenSSL_add_all_algorithms();
ctx = SSL_CTX_new(SSLv23_client_method());
sbio = BIO_new_ssl_connect(ctx);
BIO_set_nbio(sbio, 0);
BIO_get_ssl(sbio, &ssl);
if(!ssl) {
return false;
}
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
return true;
}
int XSOCKET::Bind() {
return 0;
}
int XSOCKET::Connect() {
int res = 0;
if (false == Init())
return -1;
char adr[125];
sprintf(adr,"%d", port);
BIO_set_conn_hostname(sbio, host);
BIO_set_conn_port(sbio, adr);
for (int i = 0; i<5; i++) {
res = BIO_do_connect(sbio);
if( res < 0 ) return res;
if( res > 0 ) break;
}
return res;
}
int XSOCKET::Receive(char *buffer, int size) {
int _result;
_result = BIO_read(sbio, buffer, size);
if (_result < 0) {
_result = 0;
}
return _result;
}
int XSOCKET::Send(char *buffer, int size){
return BIO_write(sbio, (void *) buffer, size);
}
int XSOCKET::Shutdown(){
BIO_ssl_shutdown(sbio);
return 0;
}
Здравствуйте, FenoMin, Вы писали:
>>>http://www.openssl.org/
>>>Скачай исходники, там есть примеры.
>>Спасибо за ссылку, но с моим знанием английского это проблемно. Вы не знаете, случаем, рускоязычного источника.
FM>----------------------------------------------------------------------------------
FM>Я скажу тебе, что тот ресурс, на который тебя посылают — полное фуфло! Но, деваться некуда...
FM>Не одинь день я ломал себе голову над ихними BIO_read'ами и hand_shak'ами...
FM>В результате написал класс для работы с этим эсэсэлем.. Только ты уж почитай немного про
FM>серификаты.. Если чё — пиши на мыло. Refactor@mail.ru Могу один выслать
FM>Удачи!
OpenSSL очень удобная и приятная библиотечка. Если че надо по ней — в поис по этому форуму я в свое врея тут всех задолбал пока сам не разобрался
Есть какие — набудь доки по ССЛ... кроме сайта ...там мало