您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ BIO_set_fd函数代码示例

51自学网 2021-06-01 19:50:17
  C++
这篇教程C++ BIO_set_fd函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中BIO_set_fd函数的典型用法代码示例。如果您正苦于以下问题:C++ BIO_set_fd函数的具体用法?C++ BIO_set_fd怎么用?C++ BIO_set_fd使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了BIO_set_fd函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: transport_attach

BOOL transport_attach(rdpTransport* transport, int sockfd){	BIO* socketBio = NULL;	BIO* bufferedBio;	socketBio = BIO_new(BIO_s_simple_socket());	if (!socketBio)		goto fail;	BIO_set_fd(socketBio, sockfd, BIO_CLOSE);	bufferedBio = BIO_new(BIO_s_buffered_socket());	if (!bufferedBio)		goto fail;	bufferedBio = BIO_push(bufferedBio, socketBio);	transport->frontBio = bufferedBio;	return TRUE;fail:	if (socketBio)		BIO_free_all(socketBio);	else		close(sockfd);	return FALSE;}
开发者ID:ilammy,项目名称:FreeRDP,代码行数:27,


示例2: my_SSL_set_fd

/* This should exactly match OpenSSL's SSL_set_fd except for using my BIO */static intmy_SSL_set_fd(Port *port, int fd){	int			ret = 0;	BIO		   *bio;	BIO_METHOD *bio_method;	bio_method = my_BIO_s_socket();	if (bio_method == NULL)	{		SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB);		goto err;	}	bio = BIO_new(bio_method);	if (bio == NULL)	{		SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB);		goto err;	}	BIO_set_data(bio, port);	BIO_set_fd(bio, fd, BIO_NOCLOSE);	SSL_set_bio(port->ssl, bio, bio);	ret = 1;err:	return ret;}
开发者ID:adityavs,项目名称:postgres,代码行数:29,


示例3: SSL_free

status_tBSecureSocket::_SetupCommon(const char* host){	// Do this only after BSocket::Connect has checked wether we're already	// connected. We don't want to kill an existing SSL session, as that would	// likely crash the protocol loop for it.	if (fPrivate->fSSL != NULL) {		SSL_free(fPrivate->fSSL);	}	fPrivate->fSSL = SSL_new(BSecureSocket::Private::Context());	if (fPrivate->fSSL == NULL) {		BSocket::Disconnect();		return B_NO_MEMORY;	}	BIO_set_fd(fPrivate->fBIO, fSocket, BIO_NOCLOSE);	SSL_set_bio(fPrivate->fSSL, fPrivate->fBIO, fPrivate->fBIO);	SSL_set_ex_data(fPrivate->fSSL, Private::sDataIndex, this);	if (host != NULL) {		BString hostString = host;		if (hostString != "")			SSL_set_tlsext_host_name(fPrivate->fSSL, host);	}	return B_OK;}
开发者ID:looncraz,项目名称:haiku,代码行数:28,


示例4: BIO_set_fd

BIO *BIO_new_fd(int fd,int close_flag)	{	BIO *ret;	ret=BIO_new(BIO_s_fd());	if (ret == NULL) return(NULL);	BIO_set_fd(ret,fd,close_flag);	return(ret);	}
开发者ID:002301,项目名称:node,代码行数:8,


示例5: BIO_new

BIO *BIO_new_fd(int fd, int close_flag) {  BIO *ret = BIO_new(BIO_s_fd());  if (ret == NULL) {    return NULL;  }  BIO_set_fd(ret, fd, close_flag);  return ret;}
开发者ID:RobinWuDev,项目名称:Qt,代码行数:8,


示例6: BIO_set_fd

void OpenSSLUtils::setBioFd(BIO* b, int fd, int flags) {#ifdef _WIN32  SOCKET sock = portability::sockets::fd_to_socket(fd);#else  int sock = fd;#endif  BIO_set_fd(b, sock, flags);}
开发者ID:GYGit,项目名称:folly,代码行数:8,


示例7: BIO_set_fd

EXPORT_C BIO *BIO_new_dgram(int fd, int close_flag)	{	BIO *ret;	ret=BIO_new(BIO_s_datagram());	if (ret == NULL) return(NULL);	BIO_set_fd(ret,fd,close_flag);	return(ret);	}
开发者ID:cdaffara,项目名称:symbiandump-os2,代码行数:9,


示例8: rdg_tls_out_connect

BOOL rdg_tls_out_connect(rdpRdg* rdg, const char* hostname, UINT16 port, int timeout){	int sockfd = 0;	int status = 0;	BIO* socketBio = NULL;	BIO* bufferedBio = NULL;	rdpSettings* settings = rdg->settings;	assert(hostname != NULL);	sockfd = freerdp_tcp_connect(rdg->context, settings, settings->GatewayHostname,					settings->GatewayPort, timeout);	if (sockfd < 1)	{		return FALSE;	}	socketBio = BIO_new(BIO_s_simple_socket());	if (!socketBio)	{		closesocket(sockfd);		return FALSE;	}	BIO_set_fd(socketBio, sockfd, BIO_CLOSE);	bufferedBio = BIO_new(BIO_s_buffered_socket());	if (!bufferedBio)	{		BIO_free(socketBio);		return FALSE;	}	bufferedBio = BIO_push(bufferedBio, socketBio);	status = BIO_set_nonblock(bufferedBio, TRUE);	if (!status)	{		BIO_free_all(bufferedBio);		return FALSE;	}	rdg->tlsOut->hostname = settings->GatewayHostname;	rdg->tlsOut->port = settings->GatewayPort;	rdg->tlsOut->isGatewayTransport = TRUE;	status = tls_connect(rdg->tlsOut, bufferedBio);	if (status < 1)	{		return FALSE;	}	return TRUE;}
开发者ID:BrianChangchien,项目名称:FiWoRDC,代码行数:56,


示例9: int

X509 *SSL_read_X509(FILE *fp, X509 **x509, int (*cb)(char *, int, int, void*))#endif{    X509 *rc;    BIO *bioS;    BIO *bioF;    /* 1. try PEM (= DER+Base64+headers) */#if SSL_LIBRARY_VERSION < 0x00904000    rc = PEM_read_X509(fp, x509, cb);#else    rc = PEM_read_X509(fp, x509, cb, NULL);#endif    if (rc == NULL) {        /* 2. try DER+Base64 */        fseek(fp, 0L, SEEK_SET);        if ((bioS = BIO_new(BIO_s_fd())) == NULL)            return NULL;        BIO_set_fd(bioS, fileno(fp), BIO_NOCLOSE);        if ((bioF = BIO_new(BIO_f_base64())) == NULL) {            BIO_free(bioS);            return NULL;        }        bioS = BIO_push(bioF, bioS);        rc = d2i_X509_bio(bioS, NULL);        BIO_free_all(bioS);        if (rc == NULL) {            /* 3. try plain DER */            fseek(fp, 0L, SEEK_SET);            if ((bioS = BIO_new(BIO_s_fd())) == NULL)                return NULL;            BIO_set_fd(bioS, fileno(fp), BIO_NOCLOSE);            rc = d2i_X509_bio(bioS, NULL);            BIO_free(bioS);        }    }    if (rc != NULL && x509 != NULL) {        if (*x509 != NULL)            X509_free(*x509);        *x509 = rc;    }    return rc;}
开发者ID:AzerTyQsdF,项目名称:osx,代码行数:43,


示例10: BIO_new

BIO *BIO_new_socket(int fd, int close_flag){    BIO *ret;    ret = BIO_new(BIO_s_socket());    if (ret == NULL)        return NULL;    BIO_set_fd(ret, fd, close_flag);    return ret;}
开发者ID:RTEMS,项目名称:rtems-libbsd,代码行数:10,


示例11: uh_tls_client_ctx_setup

static int uh_tls_client_ctx_setup(SSL *ssl, int socket){	BIO *b;	if (!(b = BIO_new(&uh_openssl_bio_methods)))		return 0;	BIO_set_fd(b, socket, BIO_NOCLOSE);	SSL_set_bio(ssl, b, b);	return 1;}
开发者ID:Cribstone,项目名称:linino,代码行数:12,


示例12: fprintf

BIO *BIO_new_tou_socket(int fd, int close_flag)	{	BIO *ret;#ifdef DEBUG_TOU_BIO	fprintf(stderr, "BIO_new_tou_socket(%d)/n", fd);#endif	ret=BIO_new(BIO_s_tou_socket());	if (ret == NULL) return(NULL);	BIO_set_fd(ret,fd,close_flag);	return(ret);	}
开发者ID:MrKID,项目名称:RetroShare,代码行数:12,


示例13: SSL_set_fd_bsd

static int SSL_set_fd_bsd(SSL *s, int fd){  int result= -1;  BIO_METHOD *BIO_s_bsdsocket();  BIO *bio;  if ((bio= BIO_new(BIO_s_bsdsocket())))  {    result= BIO_set_fd(bio, fd, BIO_NOCLOSE);    SSL_set_bio(s, bio, bio);  }  return result;}
开发者ID:1024wow,项目名称:TrinityCore,代码行数:13,


示例14: poco_assert

void SecureSocketImpl::connectSSL(bool performHandshake){	poco_assert (!_pSSL);	poco_assert (_pSocket->initialized());		BIO* pBIO = BIO_new(BIO_s_socket());	if (!pBIO) throw SSLException("Cannot create SSL BIO object");	BIO_set_fd(pBIO, static_cast<int>(_pSocket->sockfd()), BIO_NOCLOSE);	_pSSL = SSL_new(_pContext->sslContext());	if (!_pSSL) 	{		BIO_free(pBIO);		throw SSLException("Cannot create SSL object");	}	SSL_set_bio(_pSSL, pBIO, pBIO);	#if OPENSSL_VERSION_NUMBER >= 0x0908060L && !defined(OPENSSL_NO_TLSEXT)	if (!_peerHostName.empty())	{		SSL_set_tlsext_host_name(_pSSL, _peerHostName.c_str());	}#endif	if (_pSession)	{		SSL_set_session(_pSSL, _pSession->sslSession());	}		try	{		if (performHandshake && _pSocket->getBlocking())		{			int ret = SSL_connect(_pSSL);			handleError(ret);			verifyPeerCertificate();		}		else		{			SSL_set_connect_state(_pSSL);			_needHandshake = true;		}	}	catch (...)	{		SSL_free(_pSSL);		_pSSL = 0;		throw;	}}
开发者ID:JerkWisdom,项目名称:zpublic,代码行数:50,


示例15: BIO_set_fd

BIO *BIO_new_fd(int fd,int close_flag)#endif	{	BIO *ret;#ifndef BIO_FD	ret=BIO_new(BIO_s_socket());#else	ret=BIO_new(BIO_s_fd());#endif	if (ret == NULL) return(NULL);	BIO_set_fd(ret,fd,close_flag);	return(ret);	}
开发者ID:houzhenggang,项目名称:mt7688_mips_ecos,代码行数:14,


示例16: tcp_attach

int tcp_attach(rdpTcp* tcp, int sockfd){	tcp->sockfd = sockfd;	SetEventFileDescriptor(tcp->event, tcp->sockfd);	ringbuffer_commit_read_bytes(&tcp->xmitBuffer, ringbuffer_used(&tcp->xmitBuffer));	if (tcp->socketBio)	{		if (BIO_set_fd(tcp->socketBio, sockfd, 1) < 0)			return -1;	}	else	{		tcp->socketBio = BIO_new(BIO_s_simple_socket());		if (!tcp->socketBio)			return -1;		BIO_set_fd(tcp->socketBio, sockfd, BIO_CLOSE);	}	if (!tcp->bufferedBio)	{		tcp->bufferedBio = BIO_new(BIO_s_buffered_socket());		if (!tcp->bufferedBio)			return FALSE;		tcp->bufferedBio->ptr = tcp;		tcp->bufferedBio = BIO_push(tcp->bufferedBio, tcp->socketBio);	}	return 0;}
开发者ID:Auto-Droid,项目名称:FreeRDP,代码行数:36,


示例17: ocsp_receive_fd

/* we got a connection to the ocsp responder */intocsp_receive_fd(struct iked *env, struct imsg *imsg){	struct iked_ocsp_entry	*ioe = NULL;	struct iked_ocsp	*ocsp = NULL;	struct iked_socket	*sock;	char			*path = NULL;	int			 ret = -1;	log_debug("%s: received socket fd %d", __func__, imsg->fd);	if ((ioe = TAILQ_FIRST(&env->sc_ocsp)) == NULL) {		log_debug("%s: oops, no request for", __func__);		close(imsg->fd);		return (-1);	}	TAILQ_REMOVE(&env->sc_ocsp, ioe, ioe_entry);	ocsp = ioe->ioe_ocsp;	free(ioe);	if ((sock = calloc(1, sizeof(*sock))) == NULL)		fatal("ocsp_receive_fd: calloc sock");	/* note that sock_addr is not set */	sock->sock_fd = imsg->fd;	sock->sock_env = env;	ocsp->ocsp_sock = sock;	/* fetch 'path' and 'fd' from imsg */	if ((path = get_string(imsg->data, IMSG_DATA_SIZE(imsg))) == NULL)		goto done;	BIO_set_fd(ocsp->ocsp_cbio, imsg->fd, BIO_NOCLOSE);	if ((ocsp->ocsp_req_ctx = OCSP_sendreq_new(ocsp->ocsp_cbio,	    path, NULL, -1)) == NULL)		goto done;	if (!OCSP_REQ_CTX_set1_req(ocsp->ocsp_req_ctx, ocsp->ocsp_req))		goto done;	event_set(&sock->sock_ev, sock->sock_fd, EV_WRITE, ocsp_callback, ocsp);	event_add(&sock->sock_ev, NULL);	ret = 0; done:	if (ret == -1)		ocsp_validate_finish(ocsp, 0);	/* failed */	free(path);	return (ret);}
开发者ID:jymigeon,项目名称:openiked,代码行数:49,


示例18: LLVMFuzzerTestOneInput

int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len){    if (RAND_reset_for_fuzzing) {        RAND_reset_for_fuzzing();    }    SSL* server = SSL_new(ctx);    BIO* in = BIO_new(BIO_s_mem());    BIO_write(in, buf, len);    BIO* out = BIO_new(BIO_s_fd());    BIO_set_fd(out, 1, BIO_NOCLOSE);    SSL_set_bio(server, in, out);    if (SSL_accept(server) == 1) {        X509* peer;        if ((peer = SSL_get_peer_certificate(server)) != NULL) {            SSL_get_verify_result(server);            X509_free(peer);        }        uint8_t tmp[1024 * 1024];        for (;;) {            ssize_t r = SSL_read(server, tmp, sizeof(tmp));            if (r <= 0) {                SSL_shutdown(server);                break;            }            if (SSL_write(server, tmp, r) <= 0) {                SSL_shutdown(server);                break;            }#ifndef OPENSSL_NO_HEARTBEATS            SSL_heartbeat(server);#endif /* ifndef OPENSSL_NO_HEARTBEATS */        }    } else {        ERR_print_errors_fp(stderr);    }    SSL_free(server);    return 0;}
开发者ID:chubbymaggie,项目名称:honggfuzz,代码行数:45,


示例19: connection_exception

connection::connection(int socketin,SSL_CTX* ctx,const unsigned int timeoutSec,const unsigned int timeoutMic){	socket = socketin;	timeout.tv_sec = timeoutSec;	timeout.tv_usec = timeoutMic;	int ssl_int;	if(setsockopt(socket,SOL_SOCKET,SO_RCVTIMEO,reinterpret_cast<char*>(&timeout),sizeof(timeout)) < 0)		throw connection_exception("Set sock opt failed");	ssl = SSL_new(ctx);	bio = BIO_new(BIO_s_socket());	BIO_set_fd(bio,socket,BIO_NOCLOSE);	SSL_set_bio(ssl,bio,bio);	if((ssl_int = SSL_accept(ssl)) < 1)	{		throw connection_exception("SSL Accept failed.");		}}
开发者ID:Traviis,项目名称:bitcascade-server,代码行数:18,


示例20: ssl_server_accept

ssl_server_con * ssl_server_accept(ssl_server_client * scli, int fd){  BIO_set_fd(SSL_get_rbio(scli->ssl), fd, BIO_NOCLOSE);  BIO_ctrl(SSL_get_rbio(scli->ssl), BIO_CTRL_DGRAM_SET_CONNECTED, 0, &scli->addr);  int ret = 0;  do{ret = SSL_accept(scli->ssl);}  while(ret == 0);  if(ret < 0){    handle_ssl_error(scli->ssl, ret);    return NULL;  }  ASSERT(ret > 0);  struct timeval timeout;  timeout.tv_sec = 5;  timeout.tv_usec = 0;  BIO_ctrl(SSL_get_rbio(scli->ssl), BIO_CTRL_DGRAM_SET_RECV_TIMEOUT, 0, &timeout);  ssl_server_con * con = alloc0(sizeof(ssl_server_con));  con->ssl = scli->ssl;  return con;}
开发者ID:rolfrm,项目名称:UDP-Client,代码行数:19,


示例21: my_SSL_set_fd

/* This should exactly match openssl's SSL_set_fd except for using my BIO */static intmy_SSL_set_fd(SSL *s, int fd){	int			ret = 0;	BIO		   *bio = NULL;	bio = BIO_new(my_BIO_s_socket());	if (bio == NULL)	{		SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB);		goto err;	}	BIO_set_fd(bio, fd, BIO_NOCLOSE);	SSL_set_bio(s, bio, bio);	ret = 1;err:	return ret;}
开发者ID:denishpatel,项目名称:postgres,代码行数:20,


示例22: LUA_FUNCTION

static LUA_FUNCTION(openssl_bio_fd){  BIO* bio = CHECK_OBJECT(1, BIO, "openssl.bio");  int typ = BIO_method_type(bio);  if (typ & BIO_TYPE_FD)  {    int fd = -1;    if (!lua_isnoneornil(L, 2))    {      fd = lua_tointeger(L, 2);      BIO_set_fd(bio, fd, BIO_NOCLOSE);    }    else      fd = BIO_get_fd(bio, 0);    lua_pushinteger(L, fd);  }  else    luaL_error(L, "BIO type miss match");  return 1;}
开发者ID:Shaddy1884,项目名称:lua-openssl,代码行数:20,


示例23: my_SSL_set_fd

/* This should exactly match openssl's SSL_set_fd except for using my BIO */static intmy_SSL_set_fd(Port *port, int fd){	int			ret = 0;	BIO		   *bio = NULL;	bio = BIO_new(my_BIO_s_socket());	if (bio == NULL)	{		SSLerr(SSL_F_SSL_SET_FD, ERR_R_BUF_LIB);		goto err;	}	/* Use 'ptr' to store pointer to PGconn */	bio->ptr = port;	BIO_set_fd(bio, fd, BIO_NOCLOSE);	SSL_set_bio(port->ssl, bio, bio);	ret = 1;err:	return ret;}
开发者ID:RelentlessMike,项目名称:postgres,代码行数:23,


示例24: transport_attach

BOOL transport_attach(rdpTransport* transport, int sockfd){	BIO* socketBio;	BIO* bufferedBio;	socketBio = BIO_new(BIO_s_simple_socket());	if (!socketBio)		return FALSE;	BIO_set_fd(socketBio, sockfd, BIO_CLOSE);	bufferedBio = BIO_new(BIO_s_buffered_socket());	if (!bufferedBio)		return FALSE;	bufferedBio = BIO_push(bufferedBio, socketBio);	transport->frontBio = bufferedBio;	return TRUE;}
开发者ID:bceverly,项目名称:FreeRDP,代码行数:23,


示例25: doit

int doit(io_channel chan, SSL_CTX *s_ctx ){    int status, length, link_state;     struct rpc_msg msg;	static char cbuf[200],sbuf[200];	SSL *s_ssl=NULL;	BIO *c_to_s=NULL;	BIO *s_to_c=NULL;	BIO *c_bio=NULL;	BIO *s_bio=NULL;	int i;	int done=0;	s_ssl=SSL_new(s_ctx);	if (s_ssl == NULL) goto err;	c_to_s=BIO_new(BIO_s_rtcp());	s_to_c=BIO_new(BIO_s_rtcp());	if ((s_to_c == NULL) || (c_to_s == NULL)) goto err;/* original, DRM 24-SEP-1997	BIO_set_fd ( c_to_s, "", chan );	BIO_set_fd ( s_to_c, "", chan );*/	BIO_set_fd ( c_to_s, 0, chan );	BIO_set_fd ( s_to_c, 0, chan );	c_bio=BIO_new(BIO_f_ssl());	s_bio=BIO_new(BIO_f_ssl());	if ((c_bio == NULL) || (s_bio == NULL)) goto err;	SSL_set_accept_state(s_ssl);	SSL_set_bio(s_ssl,c_to_s,s_to_c);	BIO_set_ssl(s_bio,s_ssl,BIO_CLOSE);	/* We can always do writes */	printf("Begin doit main loop/n");	/*	 * Link states: 0-idle, 1-read pending, 2-write pending, 3-closed.	 */	for (link_state = 0; link_state < 3; ) {	    /*	     * Wait for remote end to request data action on A channel.	     */	    while ( link_state == 0 ) {		status = get ( chan, (char *) &msg, sizeof(msg), &length );		if ( (status&1) == 0 ) {		    printf("Error in main loop get: %d/n", status );		    link_state = 3;		    break;		}	   	if ( length < RPC_HDR_SIZE ) {		    printf("Error in main loop get size: %d/n", length );		    break;		    link_state = 3;		}	   	if ( msg.channel != 'A' ) {		    printf("Error in main loop, unexpected channel: %c/n", 			msg.channel );		    break;		    link_state = 3;		}		if ( msg.function == 'G' ) {		    link_state = 1;		} else if ( msg.function == 'P' ) {		    link_state = 2;	/* write pending */		} else if ( msg.function == 'X' ) {		    link_state = 3;		} else {		    link_state = 3;		}	    }	    if ( link_state == 1 ) {		i = BIO_read ( s_bio, msg.data, msg.length );		if ( i < 0 ) link_state = 3;		else {		    msg.channel = 'A';		    msg.function = 'C';		/* confirm */		    msg.length = i;		    status = put ( chan, (char *) &msg, i+RPC_HDR_SIZE );		    if ( (status&1) == 0 ) break;		    link_state = 0;		}	    } else if ( link_state == 2 ) {		i = BIO_write ( s_bio, msg.data, msg.length );		if ( i < 0 ) link_state = 3;		else {		    msg.channel = 'A';		    msg.function = 'C';		/* confirm */		    msg.length = 0;		    status = put ( chan, (char *) &msg, RPC_HDR_SIZE );		    if ( (status&1) == 0 ) break;		    link_state = 0;		}	    }	}	fprintf(stdout,"DONE/n");err:	/* We have to set the BIO's to NULL otherwise they will be	 * free()ed twice.  Once when th s_ssl is SSL_free()ed and	 * again when c_ssl is SSL_free()ed.//.........这里部分代码省略.........
开发者ID:ahenroid,项目名称:ptptl-0.2,代码行数:101,


示例26: idevice_connection_enable_ssl

 idevice_error_t idevice_connection_enable_ssl(idevice_connection_t connection){	if (!connection || connection->ssl_data)		return IDEVICE_E_INVALID_ARG;	idevice_error_t ret = IDEVICE_E_SSL_ERROR;	uint32_t return_me = 0;	plist_t pair_record = NULL;	userpref_read_pair_record(connection->udid, &pair_record);	if (!pair_record) {		debug_info("ERROR: Failed enabling SSL. Unable to read pair record for udid %s.", connection->udid);		return ret;	}#ifdef HAVE_OPENSSL	key_data_t root_cert = { NULL, 0 };	key_data_t root_privkey = { NULL, 0 };	pair_record_import_crt_with_name(pair_record, USERPREF_ROOT_CERTIFICATE_KEY, &root_cert);	pair_record_import_key_with_name(pair_record, USERPREF_ROOT_PRIVATE_KEY_KEY, &root_privkey);	if (pair_record)		plist_free(pair_record);	/* Set up OpenSSL */	if (openssl_init_done == 0) {		SSL_library_init();		openssl_init_done = 1;	}	BIO *ssl_bio = BIO_new(BIO_s_socket());	if (!ssl_bio) {		debug_info("ERROR: Could not create SSL bio.");		return ret;	}	BIO_set_fd(ssl_bio, (int)(long)connection->data, BIO_NOCLOSE);	//SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv3_method());	SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv3_client_method());	if (ssl_ctx == NULL) {		debug_info("ERROR: Could not create SSL context.");		BIO_free(ssl_bio);		return ret;	}	BIO* membp;	X509* rootCert = NULL;	membp = BIO_new_mem_buf(root_cert.data, root_cert.size);	PEM_read_bio_X509(membp, &rootCert, NULL, NULL);	BIO_free(membp);	if (SSL_CTX_use_certificate(ssl_ctx, rootCert) != 1) {		debug_info("WARNING: Could not load RootCertificate");	}	X509_free(rootCert);	free(root_cert.data);	RSA* rootPrivKey = NULL;	membp = BIO_new_mem_buf(root_privkey.data, root_privkey.size);	PEM_read_bio_RSAPrivateKey(membp, &rootPrivKey, NULL, NULL);	BIO_free(membp);	if (SSL_CTX_use_RSAPrivateKey(ssl_ctx, rootPrivKey) != 1) {		debug_info("WARNING: Could not load RootPrivateKey");	}	RSA_free(rootPrivKey);	free(root_privkey.data);	SSL *ssl = SSL_new(ssl_ctx);	if (!ssl) {		debug_info("ERROR: Could not create SSL object");		BIO_free(ssl_bio);		SSL_CTX_free(ssl_ctx);		return ret;	}	SSL_set_connect_state(ssl);	SSL_set_verify(ssl, 0, ssl_verify_callback);	SSL_set_bio(ssl, ssl_bio, ssl_bio);	return_me = SSL_do_handshake(ssl);	if (return_me != 1) {		debug_info("ERROR in SSL_do_handshake: %s", ssl_error_to_string(SSL_get_error(ssl, return_me)));		SSL_free(ssl);		SSL_CTX_free(ssl_ctx);	} else {		ssl_data_t ssl_data_loc = (ssl_data_t)malloc(sizeof(struct ssl_data_private));		ssl_data_loc->session = ssl;		ssl_data_loc->ctx = ssl_ctx;		connection->ssl_data = ssl_data_loc;		ret = IDEVICE_E_SUCCESS;		debug_info("SSL mode enabled, cipher: %s", SSL_get_cipher(ssl));	}	/* required for proper multi-thread clean up to prevent leaks */#ifdef HAVE_ERR_REMOVE_THREAD_STATE	ERR_remove_thread_state(NULL);#else	ERR_remove_state(0);#endif#else	ssl_data_t ssl_data_loc = (ssl_data_t)malloc(sizeof(struct ssl_data_private));	/* Set up GnuTLS... */	debug_info("enabling SSL mode");//.........这里部分代码省略.........
开发者ID:HSHtime,项目名称:libiphone,代码行数:101,


示例27: tcp_connect

BOOL tcp_connect(rdpTcp* tcp, const char* hostname, int port, int timeout){	int status;	UINT32 option_value;	socklen_t option_len;	if (!hostname)		return FALSE;	if (hostname[0] == '/')	{		tcp->sockfd = freerdp_uds_connect(hostname);		if (tcp->sockfd < 0)			return FALSE;		tcp->socketBio = BIO_new_fd(tcp->sockfd, 1);		if (!tcp->socketBio)			return FALSE;	}	else	{		fd_set cfds;		struct timeval tv;		tcp->socketBio = BIO_new(BIO_s_connect());		if (!tcp->socketBio)			return FALSE;		if (BIO_set_conn_hostname(tcp->socketBio, hostname) < 0 || BIO_set_conn_int_port(tcp->socketBio, &port) < 0)			return FALSE;		BIO_set_nbio(tcp->socketBio, 1);		status = BIO_do_connect(tcp->socketBio);		if ((status <= 0) && !BIO_should_retry(tcp->socketBio))			return FALSE;		tcp->sockfd = BIO_get_fd(tcp->socketBio, NULL);		if (tcp->sockfd < 0)			return FALSE;		if (status <= 0)		{			FD_ZERO(&cfds);			FD_SET(tcp->sockfd, &cfds);			tv.tv_sec = timeout;			tv.tv_usec = 0;			status = select(tcp->sockfd + 1, NULL, &cfds, NULL, &tv);			if (status == 0)			{				return FALSE; /* timeout */			}		}		BIO_set_close(tcp->socketBio, BIO_NOCLOSE);		BIO_free(tcp->socketBio);		tcp->socketBio = BIO_new(BIO_s_simple_socket());		if (!tcp->socketBio)			return -1;		BIO_set_fd(tcp->socketBio, tcp->sockfd, BIO_CLOSE);	}	SetEventFileDescriptor(tcp->event, tcp->sockfd);	tcp_get_ip_address(tcp);	tcp_get_mac_address(tcp);	option_value = 1;	option_len = sizeof(option_value);	if (setsockopt(tcp->sockfd, IPPROTO_TCP, TCP_NODELAY, (void*) &option_value, option_len) < 0)		fprintf(stderr, "%s: unable to set TCP_NODELAY/n", __FUNCTION__);	/* receive buffer must be a least 32 K */	if (getsockopt(tcp->sockfd, SOL_SOCKET, SO_RCVBUF, (void*) &option_value, &option_len) == 0)	{		if (option_value < (1024 * 32))		{			option_value = 1024 * 32;			option_len = sizeof(option_value);			if (setsockopt(tcp->sockfd, SOL_SOCKET, SO_RCVBUF, (void*) &option_value, option_len) < 0)			{				fprintf(stderr, "%s: unable to set receive buffer len/n", __FUNCTION__);				return FALSE;			}		}	}//.........这里部分代码省略.........
开发者ID:Auto-Droid,项目名称:FreeRDP,代码行数:101,


示例28: rdg_tls_connect

static BOOL rdg_tls_connect(rdpRdg* rdg, rdpTls* tls, const char* peerAddress, int timeout){	int sockfd = 0;	int status = 0;	BIO* socketBio = NULL;	BIO* bufferedBio = NULL;	rdpSettings* settings = rdg->settings;	const char* peerHostname = settings->GatewayHostname;	UINT16 peerPort = settings->GatewayPort;	const char* proxyUsername, *proxyPassword;	BOOL isProxyConnection = proxy_prepare(settings, &peerHostname, &peerPort, &proxyUsername,	                                       &proxyPassword);	sockfd = freerdp_tcp_connect(rdg->context, settings,	                             peerAddress ? peerAddress : peerHostname,	                             peerPort, timeout);	if (sockfd < 0)	{		return FALSE;	}	socketBio = BIO_new(BIO_s_simple_socket());	if (!socketBio)	{		closesocket(sockfd);		return FALSE;	}	BIO_set_fd(socketBio, sockfd, BIO_CLOSE);	bufferedBio = BIO_new(BIO_s_buffered_socket());	if (!bufferedBio)	{		closesocket(sockfd);		BIO_free(socketBio);		return FALSE;	}	bufferedBio = BIO_push(bufferedBio, socketBio);	status = BIO_set_nonblock(bufferedBio, TRUE);	if (isProxyConnection)	{		if (!proxy_connect(settings, bufferedBio, proxyUsername, proxyPassword, settings->GatewayHostname,		                   settings->GatewayPort))			return FALSE;	}	if (!status)	{		BIO_free_all(bufferedBio);		return FALSE;	}	tls->hostname = settings->GatewayHostname;	tls->port = settings->GatewayPort;	tls->isGatewayTransport = TRUE;	status = tls_connect(tls, bufferedBio);	return (status >= 1);}
开发者ID:mfleisz,项目名称:FreeRDP,代码行数:61,



注:本文中的BIO_set_fd函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ BIO_set_flags函数代码示例
C++ BIO_set_conn_hostname函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。