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

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

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

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

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

示例1: dtls1_accept

//.........这里部分代码省略.........				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					ret= -1;					goto end;					}				s->init_buf=buf;				}			if (!ssl3_setup_buffers(s))				{				ret= -1;				goto end;				}			s->init_num=0;			if (s->state != SSL_ST_RENEGOTIATE)				{				/* Ok, we now need to push on a buffering BIO so that				 * the output is sent in a way that TCP likes :-)				 * ...but not with SCTP :-)				 */#ifndef OPENSSL_NO_SCTP				if (!BIO_dgram_is_sctp(SSL_get_wbio(s)))#endif					if (!ssl_init_wbio_buffer(s,1)) { ret= -1; goto end; }				ssl3_init_finished_mac(s);				s->state=SSL3_ST_SR_CLNT_HELLO_A;				s->ctx->stats.sess_accept++;				}			else				{				/* s->state == SSL_ST_RENEGOTIATE,				 * we will just send a HelloRequest */				s->ctx->stats.sess_accept_renegotiate++;				s->state=SSL3_ST_SW_HELLO_REQ_A;				}			break;		case SSL3_ST_SW_HELLO_REQ_A:		case SSL3_ST_SW_HELLO_REQ_B:			s->shutdown=0;			dtls1_clear_record_buffer(s);			dtls1_start_timer(s);			ret=ssl3_send_hello_request(s);			if (ret <= 0) goto end;			s->s3->tmp.next_state=SSL3_ST_SR_CLNT_HELLO_A;			s->state=SSL3_ST_SW_FLUSH;			s->init_num=0;			ssl3_init_finished_mac(s);			break;		case SSL3_ST_SW_HELLO_REQ_C:			s->state=SSL_ST_OK;			break;
开发者ID:0culus,项目名称:openssl,代码行数:66,


示例2: ssl23_connect

int ssl23_connect(SSL *s)	{	BUF_MEM *buf=NULL;	unsigned long Time=(unsigned long)time(NULL);	void (*cb)(const SSL *ssl,int type,int val)=NULL;	int ret= -1;	int new_state,state;	RAND_add(&Time,sizeof(Time),0);	ERR_clear_error();	clear_sys_error();	if (s->info_callback != NULL)		cb=s->info_callback;	else if (s->ctx->info_callback != NULL)		cb=s->ctx->info_callback;		s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s); 	for (;;)		{		state=s->state;		switch(s->state)			{		case SSL_ST_BEFORE:		case SSL_ST_CONNECT:		case SSL_ST_BEFORE|SSL_ST_CONNECT:		case SSL_ST_OK|SSL_ST_CONNECT:			if (s->session != NULL)				{				SSLerr(SSL_F_SSL23_CONNECT,SSL_R_SSL23_DOING_SESSION_ID_REUSE);				ret= -1;				goto end;				}			s->server=0;			if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);			/* s->version=TLS1_VERSION; */			s->type=SSL_ST_CONNECT;			if (s->init_buf == NULL)				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					ret= -1;					goto end;					}				s->init_buf=buf;				buf=NULL;				}			if (!ssl3_setup_buffers(s)) { ret= -1; goto end; }			ssl3_init_finished_mac(s);			s->state=SSL23_ST_CW_CLNT_HELLO_A;			s->ctx->stats.sess_connect++;			s->init_num=0;			break;		case SSL23_ST_CW_CLNT_HELLO_A:		case SSL23_ST_CW_CLNT_HELLO_B:			s->shutdown=0;			ret=ssl23_client_hello(s);			if (ret <= 0) goto end;			s->state=SSL23_ST_CR_SRVR_HELLO_A;			s->init_num=0;			break;		case SSL23_ST_CR_SRVR_HELLO_A:		case SSL23_ST_CR_SRVR_HELLO_B:			ret=ssl23_get_server_hello(s);			if (ret >= 0) cb=NULL;			goto end;			/* break; */		default:			SSLerr(SSL_F_SSL23_CONNECT,SSL_R_UNKNOWN_STATE);			ret= -1;			goto end;			/* break; */			}		if (s->debug) { (void)BIO_flush(s->wbio); }		if ((cb != NULL) && (s->state != state))			{			new_state=s->state;			s->state=state;			cb(s,SSL_CB_CONNECT_LOOP,1);//.........这里部分代码省略.........
开发者ID:venkatarajasekhar,项目名称:Qt,代码行数:101,


示例3: ssl23_accept

int ssl23_accept(SSL *s)	{	BUF_MEM *buf;	unsigned long Time=(unsigned long)time(NULL);	void (*cb)(const SSL *ssl,int type,int val)=NULL;	int ret= -1;	int new_state,state;	RAND_add(&Time,sizeof(Time),0);	ERR_clear_error();	clear_sys_error();	if (s->info_callback != NULL)		cb=s->info_callback;	else if (s->ctx->info_callback != NULL)		cb=s->ctx->info_callback;		s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s); 	for (;;)		{		state=s->state;		switch(s->state)			{		case SSL_ST_BEFORE:		case SSL_ST_ACCEPT:		case SSL_ST_BEFORE|SSL_ST_ACCEPT:		case SSL_ST_OK|SSL_ST_ACCEPT:			s->server=1;			if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);			/* s->version=SSL3_VERSION; */			s->type=SSL_ST_ACCEPT;			if (s->init_buf == NULL)				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					BUF_MEM_free(buf);					ret= -1;					goto end;					}				s->init_buf=buf;				}			ssl3_init_finished_mac(s);			s->state=SSL23_ST_SR_CLNT_HELLO_A;			s->ctx->stats.sess_accept++;			s->init_num=0;			break;		case SSL23_ST_SR_CLNT_HELLO_A:		case SSL23_ST_SR_CLNT_HELLO_B:			s->shutdown=0;			ret=ssl23_get_client_hello(s);			if (ret >= 0) cb=NULL;			goto end;			/* break; */		default:			SSLerr(SSL_F_SSL23_ACCEPT,SSL_R_UNKNOWN_STATE);			ret= -1;			goto end;			/* break; */			}		if ((cb != NULL) && (s->state != state))			{			new_state=s->state;			s->state=state;			cb(s,SSL_CB_ACCEPT_LOOP,1);			s->state=new_state;			}		}end:	s->in_handshake--;	if (cb != NULL)		cb(s,SSL_CB_ACCEPT_EXIT,ret);	return(ret);	}
开发者ID:Acidburn0zzz,项目名称:openssl,代码行数:90,


示例4: dtls1_accept

int dtls1_accept(SSL *s)	{	BUF_MEM *buf;	unsigned long l,Time=(unsigned long)time(NULL);	void (*cb)(const SSL *ssl,int type,int val)=NULL;	int ret= -1;	int new_state,state,skip=0;	int listen;	RAND_add(&Time,sizeof(Time),0);	ERR_clear_error();	clear_sys_error();	if (s->info_callback != NULL)		cb=s->info_callback;	else if (s->ctx->info_callback != NULL)		cb=s->ctx->info_callback;		listen = s->d1->listen;	/* init things to blank */	s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);	s->d1->listen = listen;	if (s->cert == NULL)		{		SSLerr(SSL_F_DTLS1_ACCEPT,SSL_R_NO_CERTIFICATE_SET);		return(-1);		}	for (;;)		{		state=s->state;		switch (s->state)			{		case SSL_ST_RENEGOTIATE:			s->new_session=1;			/* s->state=SSL_ST_ACCEPT; */		case SSL_ST_BEFORE:		case SSL_ST_ACCEPT:		case SSL_ST_BEFORE|SSL_ST_ACCEPT:		case SSL_ST_OK|SSL_ST_ACCEPT:			s->server=1;			if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);			if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00))				{				SSLerr(SSL_F_DTLS1_ACCEPT, ERR_R_INTERNAL_ERROR);				return -1;				}			s->type=SSL_ST_ACCEPT;			if (s->init_buf == NULL)				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					ret= -1;					goto end;					}				s->init_buf=buf;				}			if (!ssl3_setup_buffers(s))				{				ret= -1;				goto end;				}			s->init_num=0;			if (s->state != SSL_ST_RENEGOTIATE)				{				/* Ok, we now need to push on a buffering BIO so that				 * the output is sent in a way that TCP likes :-)				 */				if (!ssl_init_wbio_buffer(s,1)) { ret= -1; goto end; }				ssl3_init_finished_mac(s);				s->state=SSL3_ST_SR_CLNT_HELLO_A;				s->ctx->stats.sess_accept++;				}			else				{				/* s->state == SSL_ST_RENEGOTIATE,				 * we will just send a HelloRequest */				s->ctx->stats.sess_accept_renegotiate++;				s->state=SSL3_ST_SW_HELLO_REQ_A;				}			break;//.........这里部分代码省略.........
开发者ID:millken,项目名称:zhuxianB30,代码行数:101,


示例5: dtls1_connect

//.........这里部分代码省略.........				ret = -1;				goto end;			}			s->state=s->s3->tmp.next_state;			break;		case DTLS1_SCTP_ST_CW_WRITE_SOCK:			/* read app data until dry event */			ret = BIO_dgram_sctp_wait_for_dry(SSL_get_wbio(s));			if (ret < 0) goto end;			if (ret == 0)			{				s->s3->in_read_app_data=2;				s->rwstate=SSL_READING;				BIO_clear_retry_flags(SSL_get_rbio(s));				BIO_set_retry_read(SSL_get_rbio(s));				ret = -1;				goto end;			}			s->state=s->d1->next_state;			break;#endif		case SSL3_ST_CW_CLNT_HELLO_A:		case SSL3_ST_CW_CLNT_HELLO_B:			s->shutdown=0;			/* every DTLS ClientHello resets Finished MAC */			ssl3_init_finished_mac(s);			dtls1_start_timer(s);			ret=dtls1_client_hello(s);			if (ret <= 0) goto end;			if ( s->d1->send_cookie)				{				s->state=SSL3_ST_CW_FLUSH;				s->s3->tmp.next_state=SSL3_ST_CR_SRVR_HELLO_A;				}			else				s->state=SSL3_ST_CR_SRVR_HELLO_A;			s->init_num=0;#ifndef OPENSSL_NO_SCTP			/* Disable buffering for SCTP */			if (!BIO_dgram_is_sctp(SSL_get_wbio(s)))				{#endif				/* turn on buffering for the next lot of output */				if (s->bbio != s->wbio)					s->wbio=BIO_push(s->bbio,s->wbio);#ifndef OPENSSL_NO_SCTP				}#endif			break;		case SSL3_ST_CR_SRVR_HELLO_A:		case SSL3_ST_CR_SRVR_HELLO_B:			ret=ssl3_get_server_hello(s);
开发者ID:benlaurie,项目名称:openssl-old,代码行数:67,


示例6: ssl3_get_message

/* Obtain handshake message of message type 'mt' (any if mt == -1), * maximum acceptable body length 'max'. * The first four bytes (msg_type and length) are read in state 'st1', * the body is read in state 'stn'. */long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)	{	unsigned char *p;	unsigned long l;	long n;	int i,al;	if (s->s3->tmp.reuse_message)		{		s->s3->tmp.reuse_message=0;		if ((mt >= 0) && (s->s3->tmp.message_type != mt))			{			al=SSL_AD_UNEXPECTED_MESSAGE;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);			goto f_err;			}		*ok=1;		s->init_msg = s->init_buf->data + 4;		s->init_num = (int)s->s3->tmp.message_size;		return s->init_num;		}	p=(unsigned char *)s->init_buf->data;	if (s->state == st1) /* s->init_num < 4 */		{		int skip_message;		do			{			while (s->init_num < 4)				{				i=s->method->ssl_read_bytes(s,SSL3_RT_HANDSHAKE,					&p[s->init_num],4 - s->init_num, 0);				if (i <= 0)					{					s->rwstate=SSL_READING;					*ok = 0;					return i;					}				s->init_num+=i;				}						skip_message = 0;			if (!s->server)				if (p[0] == SSL3_MT_HELLO_REQUEST)					/* The server may always send 'Hello Request' messages --					 * we are doing a handshake anyway now, so ignore them					 * if their format is correct. Does not count for					 * 'Finished' MAC. */					if (p[1] == 0 && p[2] == 0 &&p[3] == 0)						{						s->init_num = 0;						skip_message = 1;						if (s->msg_callback)							s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, p, 4, s, s->msg_callback_arg);						}			}		while (skip_message);		/* s->init_num == 4 */		if ((mt >= 0) && (*p != mt))			{			al=SSL_AD_UNEXPECTED_MESSAGE;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);			goto f_err;			}		if ((mt < 0) && (*p == SSL3_MT_CLIENT_HELLO) &&					(st1 == SSL3_ST_SR_CERT_A) &&					(stn == SSL3_ST_SR_CERT_B))			{			/* At this point we have got an MS SGC second client			 * hello (maybe we should always allow the client to			 * start a new handshake?). We need to restart the mac.			 * Don't increment {num,total}_renegotiations because			 * we have not completed the handshake. */			ssl3_init_finished_mac(s);			}		s->s3->tmp.message_type= *(p++);		n2l3(p,l);		if (l > (unsigned long)max)			{			al=SSL_AD_ILLEGAL_PARAMETER;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_EXCESSIVE_MESSAGE_SIZE);			goto f_err;			}		if (l > (INT_MAX-4)) /* BUF_MEM_grow takes an 'int' parameter */			{			al=SSL_AD_ILLEGAL_PARAMETER;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_EXCESSIVE_MESSAGE_SIZE);			goto f_err;//.........这里部分代码省略.........
开发者ID:0culus,项目名称:openssl,代码行数:101,


示例7: dtls1_connect

int dtls1_connect(SSL *s) {  BUF_MEM *buf = NULL;  void (*cb)(const SSL *ssl, int type, int val) = NULL;  int ret = -1;  int new_state, state, skip = 0;  assert(s->handshake_func == dtls1_connect);  assert(!s->server);  assert(SSL_IS_DTLS(s));  ERR_clear_error();  ERR_clear_system_error();  if (s->info_callback != NULL) {    cb = s->info_callback;  } else if (s->ctx->info_callback != NULL) {    cb = s->ctx->info_callback;  }  s->in_handshake++;  for (;;) {    state = s->state;    switch (s->state) {      case SSL_ST_RENEGOTIATE:        s->renegotiate = 1;        s->state = SSL_ST_CONNECT;        s->ctx->stats.sess_connect_renegotiate++;      /* break */      case SSL_ST_CONNECT:      case SSL_ST_BEFORE | SSL_ST_CONNECT:        if (cb != NULL) {          cb(s, SSL_CB_HANDSHAKE_START, 1);        }        if (s->init_buf == NULL) {          buf = BUF_MEM_new();          if (buf == NULL ||              !BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {            ret = -1;            goto end;          }          s->init_buf = buf;          buf = NULL;        }        if (!ssl3_setup_buffers(s) ||            !ssl_init_wbio_buffer(s, 0)) {          ret = -1;          goto end;        }        /* don't push the buffering BIO quite yet */        s->state = SSL3_ST_CW_CLNT_HELLO_A;        s->ctx->stats.sess_connect++;        s->init_num = 0;        s->d1->send_cookie = 0;        s->hit = 0;        break;      case SSL3_ST_CW_CLNT_HELLO_A:      case SSL3_ST_CW_CLNT_HELLO_B:        s->shutdown = 0;        /* every DTLS ClientHello resets Finished MAC */        if (!ssl3_init_finished_mac(s)) {          OPENSSL_PUT_ERROR(SSL, dtls1_connect, ERR_R_INTERNAL_ERROR);          ret = -1;          goto end;        }        dtls1_start_timer(s);        ret = ssl3_send_client_hello(s);        if (ret <= 0) {          goto end;        }        if (s->d1->send_cookie) {          s->state = SSL3_ST_CW_FLUSH;          s->s3->tmp.next_state = SSL3_ST_CR_SRVR_HELLO_A;        } else {          s->state = DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A;        }        s->init_num = 0;        /* turn on buffering for the next lot of output */        if (s->bbio != s->wbio) {          s->wbio = BIO_push(s->bbio, s->wbio);        }        break;      case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A:      case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B:        ret = dtls1_get_hello_verify(s);        if (ret <= 0) {          goto end;        }//.........这里部分代码省略.........
开发者ID:randombit,项目名称:hacrypto,代码行数:101,


示例8: dtls1_connect

int dtls1_connect(SSL *s)	{	BUF_MEM *buf=NULL;	unsigned long Time=(unsigned long)TINYCLR_SSL_TIME(NULL);	void (*cb)(const SSL *ssl,int type,int val)=NULL;	int ret= -1;	int new_state,state,skip=0;;	RAND_add(&Time,sizeof(Time),0);	ERR_clear_error();	clear_sys_error();	if (s->info_callback != NULL)		cb=s->info_callback;	else if (s->ctx->info_callback != NULL)		cb=s->ctx->info_callback;		s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s); 	for (;;)		{		state=s->state;		switch(s->state)			{		case SSL_ST_RENEGOTIATE:			s->new_session=1;			s->state=SSL_ST_CONNECT;			s->ctx->stats.sess_connect_renegotiate++;			/* break */		case SSL_ST_BEFORE:		case SSL_ST_CONNECT:		case SSL_ST_BEFORE|SSL_ST_CONNECT:		case SSL_ST_OK|SSL_ST_CONNECT:			s->server=0;			if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);			if ((s->version & 0xff00 ) != (DTLS1_VERSION & 0xff00) &&			    (s->version & 0xff00 ) != (DTLS1_BAD_VER & 0xff00))				{				SSLerr(SSL_F_DTLS1_CONNECT, ERR_R_INTERNAL_ERROR);				ret = -1;				goto end;				}							/* s->version=SSL3_VERSION; */			s->type=SSL_ST_CONNECT;			if (s->init_buf == NULL)				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					ret= -1;					goto end;					}				s->init_buf=buf;				buf=NULL;				}			if (!ssl3_setup_buffers(s)) { ret= -1; goto end; }			/* setup buffing BIO */			if (!ssl_init_wbio_buffer(s,0)) { ret= -1; goto end; }			/* don't push the buffering BIO quite yet */			s->state=SSL3_ST_CW_CLNT_HELLO_A;			s->ctx->stats.sess_connect++;			s->init_num=0;			/* mark client_random uninitialized */			TINYCLR_SSL_MEMSET(s->s3->client_random,0,sizeof(s->s3->client_random));			s->d1->send_cookie = 0;			s->hit = 0;			break;		case SSL3_ST_CW_CLNT_HELLO_A:		case SSL3_ST_CW_CLNT_HELLO_B:			s->shutdown=0;			/* every DTLS ClientHello resets Finished MAC */			ssl3_init_finished_mac(s);			dtls1_start_timer(s);			ret=dtls1_client_hello(s);			if (ret <= 0) goto end;			if ( s->d1->send_cookie)				{				s->state=SSL3_ST_CW_FLUSH;				s->s3->tmp.next_state=SSL3_ST_CR_SRVR_HELLO_A;				}			else//.........这里部分代码省略.........
开发者ID:AustinWise,项目名称:Netduino-Micro-Framework,代码行数:101,


示例9: dtls1_accept

intdtls1_accept(SSL *s){	void (*cb)(const SSL *ssl, int type, int val) = NULL;	unsigned long alg_k;	int ret = -1;	int new_state, state, skip = 0;	int listen;	ERR_clear_error();	errno = 0;	if (s->info_callback != NULL)		cb = s->info_callback;	else if (s->ctx->info_callback != NULL)		cb = s->ctx->info_callback;	listen = s->d1->listen;	/* init things to blank */	s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s))		SSL_clear(s);	s->d1->listen = listen;	if (s->cert == NULL) {		SSLerr(SSL_F_DTLS1_ACCEPT, SSL_R_NO_CERTIFICATE_SET);		return (-1);	}	for (;;) {		state = s->state;		switch (s->state) {		case SSL_ST_RENEGOTIATE:			s->renegotiate = 1;			/* s->state=SSL_ST_ACCEPT; */		case SSL_ST_BEFORE:		case SSL_ST_ACCEPT:		case SSL_ST_BEFORE|SSL_ST_ACCEPT:		case SSL_ST_OK|SSL_ST_ACCEPT:			s->server = 1;			if (cb != NULL)				cb(s, SSL_CB_HANDSHAKE_START, 1);			if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00)) {				SSLerr(SSL_F_DTLS1_ACCEPT, ERR_R_INTERNAL_ERROR);				return -1;			}			s->type = SSL_ST_ACCEPT;			if (s->init_buf == NULL) {				BUF_MEM *buf;				if ((buf = BUF_MEM_new()) == NULL) {					ret = -1;					goto end;				}				if (!BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {					BUF_MEM_free(buf);					ret = -1;					goto end;				}				s->init_buf = buf;			}			if (!ssl3_setup_buffers(s)) {				ret = -1;				goto end;			}			s->init_num = 0;			if (s->state != SSL_ST_RENEGOTIATE) {				/* Ok, we now need to push on a buffering BIO so that				 * the output is sent in a way that TCP likes :-)				 * ...but not with SCTP :-)				 */				if (!ssl_init_wbio_buffer(s, 1)) {					ret = -1;					goto end;				}				if (!ssl3_init_finished_mac(s)) {					ret = -1;					goto end;				}				s->state = SSL3_ST_SR_CLNT_HELLO_A;				s->ctx->stats.sess_accept++;			} else {				/* s->state == SSL_ST_RENEGOTIATE,				 * we will just send a HelloRequest */				s->ctx->stats.sess_accept_renegotiate++;				s->state = SSL3_ST_SW_HELLO_REQ_A;			}			break;//.........这里部分代码省略.........
开发者ID:randombit,项目名称:hacrypto,代码行数:101,


示例10: dtls1_accept

int dtls1_accept(SSL *s)	{	BUF_MEM *buf;	void (*cb)(const SSL *ssl,int type,int val)=NULL;	unsigned long alg_a;	int ret= -1;	int new_state,state,skip=0;	int listen;	ERR_clear_error();	ERR_clear_system_error();	if (s->info_callback != NULL)		cb=s->info_callback;	else if (s->ctx->info_callback != NULL)		cb=s->ctx->info_callback;		listen = s->d1->listen;	/* init things to blank */	s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s)) SSL_clear(s);	s->d1->listen = listen;	if (s->cert == NULL)		{		OPENSSL_PUT_ERROR(SSL, dtls1_accept, SSL_R_NO_CERTIFICATE_SET);		return(-1);		}	for (;;)		{		state=s->state;		switch (s->state)			{		case SSL_ST_RENEGOTIATE:			s->renegotiate=1;			/* s->state=SSL_ST_ACCEPT; */		case SSL_ST_BEFORE:		case SSL_ST_ACCEPT:		case SSL_ST_BEFORE|SSL_ST_ACCEPT:		case SSL_ST_OK|SSL_ST_ACCEPT:			s->server=1;			if (cb != NULL) cb(s,SSL_CB_HANDSHAKE_START,1);			if ((s->version & 0xff00) != (DTLS1_VERSION & 0xff00))				{				OPENSSL_PUT_ERROR(SSL, dtls1_accept, ERR_R_INTERNAL_ERROR);				return -1;				}			s->type=SSL_ST_ACCEPT;			if (s->init_buf == NULL)				{				if ((buf=BUF_MEM_new()) == NULL)					{					ret= -1;					goto end;					}				if (!BUF_MEM_grow(buf,SSL3_RT_MAX_PLAIN_LENGTH))					{					ret= -1;					goto end;					}				s->init_buf=buf;				}			if (!ssl3_setup_buffers(s))				{				ret= -1;				goto end;				}			s->init_num=0;			if (s->state != SSL_ST_RENEGOTIATE)				{				/* Ok, we now need to push on a buffering BIO so that				 * the output is sent in a way that TCP likes :-)				 * ...but not with SCTP :-)				 */					if (!ssl_init_wbio_buffer(s,1)) { ret= -1; goto end; }				ssl3_init_finished_mac(s);				s->state=SSL3_ST_SR_CLNT_HELLO_A;				s->ctx->stats.sess_accept++;				}			else				{				/* s->state == SSL_ST_RENEGOTIATE,				 * we will just send a HelloRequest */				s->ctx->stats.sess_accept_renegotiate++;				s->state=SSL3_ST_SW_HELLO_REQ_A;				}			break;//.........这里部分代码省略.........
开发者ID:xin3liang,项目名称:platform_external_chromium_org_third_party_boringssl_src,代码行数:101,


示例11: dtls1_accept

int dtls1_accept(SSL *s) {  BUF_MEM *buf = NULL;  void (*cb)(const SSL *ssl, int type, int val) = NULL;  uint32_t alg_a;  int ret = -1;  int new_state, state, skip = 0;  assert(s->handshake_func == dtls1_accept);  assert(s->server);  assert(SSL_IS_DTLS(s));  ERR_clear_error();  ERR_clear_system_error();  if (s->info_callback != NULL) {    cb = s->info_callback;  } else if (s->ctx->info_callback != NULL) {    cb = s->ctx->info_callback;  }  s->in_handshake++;  if (s->cert == NULL) {    OPENSSL_PUT_ERROR(SSL, dtls1_accept, SSL_R_NO_CERTIFICATE_SET);    return -1;  }  for (;;) {    state = s->state;    switch (s->state) {      case SSL_ST_RENEGOTIATE:        s->renegotiate = 1;        /* s->state=SSL_ST_ACCEPT; */      case SSL_ST_ACCEPT:      case SSL_ST_BEFORE | SSL_ST_ACCEPT:        if (cb != NULL) {          cb(s, SSL_CB_HANDSHAKE_START, 1);        }        if (s->init_buf == NULL) {          buf = BUF_MEM_new();          if (buf == NULL || !BUF_MEM_grow(buf, SSL3_RT_MAX_PLAIN_LENGTH)) {            ret = -1;            goto end;          }          s->init_buf = buf;          buf = NULL;        }        if (!ssl3_setup_buffers(s)) {          ret = -1;          goto end;        }        s->init_num = 0;        if (s->state != SSL_ST_RENEGOTIATE) {          if (!ssl_init_wbio_buffer(s, 1)) {            ret = -1;            goto end;          }          if (!ssl3_init_finished_mac(s)) {            OPENSSL_PUT_ERROR(SSL, dtls1_accept, ERR_R_INTERNAL_ERROR);            ret = -1;            goto end;          }          s->state = SSL3_ST_SR_CLNT_HELLO_A;        } else {          /* s->state == SSL_ST_RENEGOTIATE, * we will just send a           * HelloRequest */          s->state = SSL3_ST_SW_HELLO_REQ_A;        }        break;      case SSL3_ST_SW_HELLO_REQ_A:      case SSL3_ST_SW_HELLO_REQ_B:        s->shutdown = 0;        dtls1_clear_record_buffer(s);        dtls1_start_timer(s);        ret = ssl3_send_hello_request(s);        if (ret <= 0) {          goto end;        }        s->s3->tmp.next_state = SSL3_ST_SR_CLNT_HELLO_A;        s->state = SSL3_ST_SW_FLUSH;        s->init_num = 0;        if (!ssl3_init_finished_mac(s)) {          OPENSSL_PUT_ERROR(SSL, dtls1_accept, ERR_R_INTERNAL_ERROR);          ret = -1;          goto end;        }        break;      case SSL3_ST_SW_HELLO_REQ_C://.........这里部分代码省略.........
开发者ID:project-zerus,项目名称:boringssl,代码行数:101,


示例12: ssl23_connect

intssl23_connect(SSL *s){	void (*cb)(const SSL *ssl, int type, int val) = NULL;	int ret = -1;	int new_state, state;	ERR_clear_error();	errno = 0;	if (s->info_callback != NULL)		cb = s->info_callback;	else if (s->ctx->info_callback != NULL)		cb = s->ctx->info_callback;	s->in_handshake++;	if (!SSL_in_init(s) || SSL_in_before(s))		SSL_clear(s);	for (;;) {		state = s->state;		switch (s->state) {		case SSL_ST_BEFORE:		case SSL_ST_CONNECT:		case SSL_ST_BEFORE|SSL_ST_CONNECT:		case SSL_ST_OK|SSL_ST_CONNECT:			if (s->session != NULL) {				SSLerr(SSL_F_SSL23_CONNECT, SSL_R_SSL23_DOING_SESSION_ID_REUSE);				ret = -1;				goto end;			}			s->server = 0;			if (cb != NULL)				cb(s, SSL_CB_HANDSHAKE_START, 1);			/* s->version=TLS1_VERSION; */			s->type = SSL_ST_CONNECT;			if (!ssl3_setup_init_buffer(s)) {				ret = -1;				goto end;			}			if (!ssl3_setup_buffers(s)) {				ret = -1;				goto end;			}			if (!ssl3_init_finished_mac(s)) {				ret = -1;				goto end;			}			s->state = SSL23_ST_CW_CLNT_HELLO_A;			s->ctx->stats.sess_connect++;			s->init_num = 0;			break;		case SSL23_ST_CW_CLNT_HELLO_A:		case SSL23_ST_CW_CLNT_HELLO_B:			s->shutdown = 0;			ret = ssl23_client_hello(s);			if (ret <= 0)				goto end;			s->state = SSL23_ST_CR_SRVR_HELLO_A;			s->init_num = 0;			break;		case SSL23_ST_CR_SRVR_HELLO_A:		case SSL23_ST_CR_SRVR_HELLO_B:			ret = ssl23_get_server_hello(s);			if (ret >= 0)				cb = NULL;			goto end;			/* break; */		default:			SSLerr(SSL_F_SSL23_CONNECT, SSL_R_UNKNOWN_STATE);			ret = -1;			goto end;			/* break; */		}		if (s->debug) {			(void)BIO_flush(s->wbio);		}		if ((cb != NULL) && (s->state != state)) {			new_state = s->state;			s->state = state;			cb(s, SSL_CB_CONNECT_LOOP, 1);			s->state = new_state;		}	}end:	s->in_handshake--;	if (cb != NULL)//.........这里部分代码省略.........
开发者ID:aburgh,项目名称:openbsd,代码行数:101,


示例13: ssl3_get_message

/* Obtain handshake message of message type 'mt' (any if mt == -1), * maximum acceptable body length 'max'. * The first four bytes (msg_type and length) are read in state 'st1', * the body is read in state 'stn'. */long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok)	{	unsigned char *p;	unsigned long l;	long n;	int i,al;	if (s->s3->tmp.reuse_message)		{		s->s3->tmp.reuse_message=0;		if ((mt >= 0) && (s->s3->tmp.message_type != mt))			{			al=SSL_AD_UNEXPECTED_MESSAGE;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);			goto f_err;			}		*ok=1;		return((int)s->s3->tmp.message_size);		}	p=(unsigned char *)s->init_buf->data;	if (s->state == st1) /* s->init_num < 4 */		{		int skip_message;		do			{			while (s->init_num < 4)				{				i=ssl3_read_bytes(s,SSL3_RT_HANDSHAKE,&p[s->init_num],					4 - s->init_num, 0);				if (i <= 0)					{					s->rwstate=SSL_READING;					*ok = 0;					return i;					}				s->init_num+=i;				}						skip_message = 0;			if (!s->server)				if (p[0] == SSL3_MT_HELLO_REQUEST)					/* The server may always send 'Hello Request' messages --					 * we are doing a handshake anyway now, so ignore them					 * if their format is correct. Does not count for					 * 'Finished' MAC. */					if (p[1] == 0 && p[2] == 0 &&p[3] == 0)						skip_message = 1;			}		while (skip_message);		/* s->init_num == 4 */		if ((mt >= 0) && (*p != mt))			{			al=SSL_AD_UNEXPECTED_MESSAGE;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_UNEXPECTED_MESSAGE);			goto f_err;			}		if ((mt < 0) && (*p == SSL3_MT_CLIENT_HELLO) &&					(st1 == SSL3_ST_SR_CERT_A) &&					(stn == SSL3_ST_SR_CERT_B))			{			/* At this point we have got an MS SGC second client			 * hello (maybe we should always allow the client to			 * start a new handshake?). We need to restart the mac.			 * Don't increment {num,total}_renegotiations because			 * we have not completed the handshake. */			ssl3_init_finished_mac(s);			}		ssl3_finish_mac(s, (unsigned char *)s->init_buf->data, 4);					s->s3->tmp.message_type= *(p++);		n2l3(p,l);		if (l > (unsigned long)max)			{			al=SSL_AD_ILLEGAL_PARAMETER;			SSLerr(SSL_F_SSL3_GET_MESSAGE,SSL_R_EXCESSIVE_MESSAGE_SIZE);			goto f_err;			}		if (l && !BUF_MEM_grow(s->init_buf,(int)l))			{			SSLerr(SSL_F_SSL3_GET_MESSAGE,ERR_R_BUF_LIB);			goto err;			}		s->s3->tmp.message_size=l;		s->state=stn;		s->init_num=0;		}//.........这里部分代码省略.........
开发者ID:houzhenggang,项目名称:mt7688_mips_ecos,代码行数:101,



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


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