здравтвуйте, данный вопрос уже подымался в форуме, но к сожалению мне это не помогло пока.
Необходимо в клиент серверное приложение внедрить поддержку ssl. Пытаюсь адаптировать под свои нужды
пример из openssl-0.9.7i.tar.gz, до вызова SSL_accept отрабатывает вроде все нормально, подскажите пожайлуста
в чем я протупил, где ошибся?, зарание благодарен.
#include "winsock2.h"
#include <openssl/bio.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
SSL_METHOD *sm = NULL;
SSL_load_error_strings();
SSL_library_init();
SSL_CTX *ctx = SSL_CTX_new( sm );
ctx = SSL_CTX_new( SSLv23_server_method() );
SSL_CTX_use_certificate_file( ctx, "server.pem", SSL_FILETYPE_PEM ) != 1 )
SSL_CTX_set_default_passwd_cb( ctx, password_cb );
SSL_CTX_use_PrivateKey_file( ctx, "server.pem", SSL_FILETYPE_PEM );
SSL_CTX_check_private_key( ctx )ж
WSADATA wsaData;
WSAStartup( MAKEWORD(1, 1), &wsaData );
sockaddr_in _sin;
_sin.sin_family = AF_INET;
_sin.sin_port = 0;
_sin.sin_addr.s_addr = 0;
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons( 443 );
sin.sin_addr.s_addr = htonl( INADDR_ANY );
BOOL b = TRUE;
DWORD arg = 0;
SOCKET mainsock = socket( AF_INET, 1, 0 );
setsockopt( mainsock, IPPROTO_TCP, TCP_NODELAY, (char*)&b, sizeof(BOOL) );
ioctlsocket( mainsock, FIONBIO, &arg );
bind( mainsock, (struct sockaddr*)&sin, sizeof( sin ) );
listen( mainsock, SOMAXCONN );
int nLengthAddr = sizeof(SOCKADDR);
int clisock = accept( mainsock,(struct sockaddr*)&_sin, &nLengthAddr );
//SOCKET clisock = accept( mainsock,(struct sockaddr*)&_sin, &nLengthAddr );
/// 1 --------------------------------------------
BIO *conn = BIO_new( BIO_s_socket() );
BIO_set_fd( conn, clisock, BIO_NOCLOSE );
SSL *ssl = SSL_new( ctx );
SSL_set_bio( ssl, conn, conn );
if( SSL_accept( ssl ) <= 0 )
{
printf( "\nSSL_accept error..." ); /// !!!! тут Error
return FALSE;
}
/// --------------------------------------------
ИЛИ
/// 2 --------------------------------------------
SSL_set_fd( ssl, clisock );
int err = SSL_accept( ssl );
if( err <= 0 ) /// !!!! тут Error
printf("\nzaebalo");
/// --------------------------------------------
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить