亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tls_funcs.c

?? 可以用作很多客戶端的XSUPPLICANT的源代碼。比如用在802.1x或者無線AP上
?? C
?? 第 1 頁 / 共 3 頁
字號:
      return XEBADPACKETSIZE;    }  if (chunksize == 0)    {      chunksize = 1398;    }  if (thisint->eap_data == NULL)     {      debug_printf(DEBUG_NORMAL, "(TLS) eap_data has been destroyed, or not allocated!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  if (mytls_vars->tlsoutsize==0)     {      if (indata != NULL)	{	  BIO_reset(mytls_vars->ssl_in);	  BIO_write(mytls_vars->ssl_in, indata, insize);	}       BIO_reset(mytls_vars->ssl_out);      if (mytls_vars->ssl == NULL) 	{	  debug_printf(DEBUG_NORMAL, "SSL context is NULL!!!!\n");	  return XETLSNOCTX;	}      rc = SSL_connect(mytls_vars->ssl);      BIO_get_mem_ptr(mytls_vars->ssl_out, &retData);            mytls_vars->tlsoutdata = retData->data;      mytls_vars->tlsoutsize = retData->length;    }    if (mytls_vars->tlsoutsize == 0)     {      return XTLSNEEDDATA;    }  if ((mytls_vars->tlsoutsize - mytls_vars->tlsoutptr)>chunksize)    {      // Return a maximum sized chunk.            if (mytls_vars->tlsoutptr == 0)  // This is our first chunk, include	{                              // the length.	  outdata[0] = EAPTLS_LENGTH_MORE;  // We will have a length value, and more.	  length = htonl(mytls_vars->tlsoutsize);	  memcpy(&outdata[1], &length, 4);	  retVal = &outdata[5];	  *outsize = chunksize+5; // To account for length.	} else {	  outdata[0] = EAPTLS_MORE_FRAGS;	  retVal = &outdata[1];	  *outsize = chunksize+1;	}      memcpy(retVal, &mytls_vars->tlsoutdata[mytls_vars->tlsoutptr], chunksize);      mytls_vars->tlsoutptr += chunksize;    } else {      // Return what is left.      if (mytls_vars->tlsoutptr == 0)  // This is our first chunk, include	{                              // the length.	  outdata[0] = EAPTLS_LENGTH_INCL;  // We will have a length value.	  length = htonl(mytls_vars->tlsoutsize);	  memcpy(&outdata[1], &length, 4);	  retVal = &outdata[5];	  *outsize = (mytls_vars->tlsoutsize - mytls_vars->tlsoutptr)+5;	} else {	  outdata[0] = EAPTLS_FINAL;	  retVal = &outdata[1];	  *outsize = (mytls_vars->tlsoutsize - mytls_vars->tlsoutptr)+1;	}      memcpy(retVal, &mytls_vars->tlsoutdata[mytls_vars->tlsoutptr], 	     *outsize);            // Clean out the data chunk.      mytls_vars->tlsoutptr = 0;      mytls_vars->tlsoutsize = 0;    }  return XENONE;}int tls_funcs_decode_packet(struct generic_eap_data *thisint, char *inframe, 			    int insize, char *outframe, int *outsize,			    phase2_call dophase2, int chunksize){  unsigned long err;  int rtnVal, tlsindex;  char *tlsptr, *cnname = NULL, *temp;  struct tls_vars *mytls_vars;  if ((!thisint) || (!inframe) || (!outframe) || (!outsize))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_funcs_decode_packet()!\n");      return XEMALLOC;    }  if (insize > 1520)    {      debug_printf(DEBUG_NORMAL, "Packet size too big in tls_funcs_decode_packet()!  Ignoring!\n");      return XEBADPACKETSIZE;    }  // First, make sure we don't have any errors.  err = ERR_get_error();  if (err != 0)    {      debug_printf(DEBUG_NORMAL, "OpenSSL Error -- %s\n", 		   ERR_error_string(err, NULL));    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  if (mytls_vars == NULL)    {      debug_printf(DEBUG_NORMAL, "EAP data is invalid in tls_funcs_decode_packet()!\n");      return XEMALLOC;    }  *outsize = 0;  // Set up a pointer to the start of the data.  tlsindex = 1;  tlsptr = &inframe[tlsindex];  rtnVal = XENONE;  // The first byte should tell us what to do.  switch ((uint8_t)inframe[0])    {    case EAPTLS_START:      tls_funcs_start(mytls_vars);      if (mytls_vars->ssl == NULL)	{	  debug_printf(DEBUG_NORMAL, "The SSL handle is invalid in tls_funcs_decode_packet()!\n");	  return XETLSNOCTX;	}            rtnVal = tls_funcs_parse(thisint, NULL, 0, outframe, outsize, chunksize);      if (rtnVal < 0)	{	  debug_printf(DEBUG_NORMAL, "Failed to generate TLS data!\n");	}      break;    case EAPTLS_LENGTH_MORE:    case EAPTLS_LENGTH_INCL:      // Skip the four octets that contain the length.  OpenSSL knows when      // we are done.      tlsptr+=4;      tlsindex+=4;      // DON'T BREAK HERE!  We want to do the next case!    case EAPTLS_MORE_FRAGS:    case EAPTLS_ACK:      if ((SSL_get_state(mytls_vars->ssl) == 0x0003) && (dophase2 != NULL))	{	  // Handle the phase 2 piece.  We pass in the encrypted piece of	  // the packet, and let phase 2 deal with it!	  // But, before we do anything, verify the CN.	  if (mytls_vars->cncheck != NULL)	    {	      cnname = get_cert_common_name(mytls_vars->ssl);	      debug_printf(DEBUG_AUTHTYPES, "Certificate CN : %s\n",cnname);	      // mytls_vars->cncheck == NULL, do nothing.	      debug_printf(DEBUG_AUTHTYPES, "Doing a CN Check!\n");	      	      if (mytls_vars->cnexact == 1)		{		  debug_printf(DEBUG_AUTHTYPES, "Looking for an exact match!\n");		  if (cnname != NULL)		    {		      if (strcmp(mytls_vars->cncheck, cnname) != 0)			{			  debug_printf(DEBUG_AUTHTYPES, "Certificate CN didn't match!\n");			  outframe = NULL;			  outsize = 0;			  free(cnname);			  return XEBADCN;			} else {			  debug_printf(DEBUG_AUTHTYPES, "Certificate CN matched!\n");			}		    }		} else {		  debug_printf(DEBUG_AUTHTYPES, "Looking for a relative match!\n");		  temp = mytls_vars->cncheck;		  if (cnname != NULL)		    {		      if (strstr(cnname, temp) == NULL)			{			  debug_printf(DEBUG_AUTHTYPES, "Certificate CN didn't match!\n");			  outframe = NULL;			  outsize = 0;			  free(cnname);			  return XEBADCN;			} else {			  debug_printf(DEBUG_AUTHTYPES, "Certificate CN matched!\n");			}		    }		}	    }	  if (cnname != NULL)	    {	      free(cnname);	      cnname = NULL;	    }	  // We are in phase 2, so indicate it.	  mytls_vars->phase = 2;	  	  if ((mytls_vars->resuming != 1) || (mytls_vars->quickResponse != TRUE))	    {	      (*dophase2)(thisint, tlsptr, (insize-tlsindex), outframe, outsize);	    } else {	      if (*outsize == 0)		{		  debug_printf(DEBUG_AUTHTYPES, "Resumed session, ACKing ACK!\n");		  tls_funcs_build_ack(outframe, outsize);		  rtnVal = XENONE;			}	    }	  	} else {	  rtnVal = tls_funcs_parse(thisint, tlsptr, (insize-tlsindex), outframe, outsize, chunksize);	  if (rtnVal < 0)	    {	      debug_printf(DEBUG_NORMAL, "Couldn't parse TLS data.\n");	    }      	  if ((SSL_get_state(mytls_vars->ssl) == 0x0003) && (dophase2 != NULL) && 	      (mytls_vars->quickResponse == TRUE))	    {	      	      if (mytls_vars->cncheck != NULL)		{		  // But, before we do anything, verify the CN.		  cnname = get_cert_common_name(mytls_vars->ssl);		  debug_printf(DEBUG_AUTHTYPES, "Certificate CN : %s\n",cnname);		}	      if (cnname != NULL)		{		  // mytls_vars->cncheck == NULL, do nothing.		  if (mytls_vars->cncheck != NULL)		    {		      debug_printf(DEBUG_AUTHTYPES, "Doing a CN Check!\n");		  		      if (mytls_vars->cnexact == 1)			{			  debug_printf(DEBUG_AUTHTYPES, "Looking for an exact match!\n");			  if (strcmp(mytls_vars->cncheck, cnname) != 0)			    {			      debug_printf(DEBUG_AUTHTYPES, "Certificate CN didn't match!\n");			      outframe = NULL;			      outsize = 0;			      return XEBADCN;			    } else {			      debug_printf(DEBUG_AUTHTYPES, "Certificate CN matched!\n");			    }			} else {			  debug_printf(DEBUG_AUTHTYPES, "Looking for a relative match!\n");			  			  temp = mytls_vars->cncheck;			  if (strstr(cnname, temp) == NULL)			    {			      debug_printf(DEBUG_AUTHTYPES, "Certificate CN didn't match!\n");			      outframe = NULL;			      outsize = 0;			      return XEBADCN;			    } else {			      debug_printf(DEBUG_AUTHTYPES, "Certificate CN matched!\n");			    }			}		    }		}	      if (cnname != NULL)		{		  free(cnname);		  cnname = NULL;		}	      	      // We made it to phase 2.  So, indicate it.	      mytls_vars->phase = 2;	      if ((mytls_vars->resuming != 1) || (mytls_vars->quickResponse != TRUE))		{		  (*dophase2)(thisint, tlsptr, (insize-tlsindex), outframe, outsize);		} else {		  if (*outsize == 0)		    {		      debug_printf(DEBUG_AUTHTYPES, "Resumed session, ACKing ACK!\n");		      tls_funcs_build_ack(outframe, outsize);		      rtnVal = XENONE;		    }		}	    } else if (rtnVal == XTLSNEEDDATA)	      {		tls_funcs_build_ack(outframe, outsize);		rtnVal = XENONE;	      } 	}      break;    default:      debug_printf(DEBUG_NORMAL, "Invalid TLS flags! (%02X)\n",(uint8_t)inframe[0]);      rtnVal = XETLSBADFLAGS;    }  return rtnVal;}char *tls_funcs_gen_keyblock(struct generic_eap_data *thisint){  struct tls_vars *mydata;  if (!thisint)    {      debug_printf(DEBUG_NORMAL, "EAP data passed in to tls_funcs_gen_keyblock() is NULL!\n");      return NULL;    }  mydata = (struct tls_vars *)thisint->eap_data;    if (mydata == NULL) return NULL;  return tls_crypt_gen_keyblock(thisint, mydata->sessionkeyconst,				mydata->sessionkeylen);}int tls_funcs_build_ack(char *outframe, int *outsize){  debug_printf(DEBUG_EVERYTHING, "Sending TLS ACK!\n");  outframe[0] = 0x00;  *outsize = 1;  return XENONE;}static void ssl_info_callback(SSL *ssl, int w, int r){  if (!ssl)    {      debug_printf(DEBUG_NORMAL, "Invalid context in ssl_info_callback!\n");      return;    }  debug_printf(DEBUG_AUTHTYPES, "     --- SSL : %s\n", SSL_state_string_long(ssl));  if (w & SSL_CB_ALERT)    debug_printf(DEBUG_AUTHTYPES, "     --- ALERT : %s\n", SSL_alert_desc_string_long(r));}static int return_password(char *buf, int size, int rwflag, void *userdata){  strncpy(buf, (char *)(userdata), size);  buf[size-1] = '\0';  return(strlen(buf));}int tls_funcs_load_root_certs(struct generic_eap_data *thisint, 			      char *root_cert, char *root_dir, char *crl_dir){  struct tls_vars *mytls_vars;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品专区| 欧美羞羞免费网站| 精品一区二区免费在线观看| 亚洲v日本v欧美v久久精品| 伊人开心综合网| 日韩一区在线看| 亚洲欧美激情视频在线观看一区二区三区 | 成人欧美一区二区三区黑人麻豆 | 91伊人久久大香线蕉| 99在线精品观看| 一本色道久久综合精品竹菊| 色视频欧美一区二区三区| 波多野结衣在线一区| av一二三不卡影片| 欧美亚洲丝袜传媒另类| 911精品产国品一二三产区 | 国产精品18久久久久久久网站| 久久国产精品色婷婷| 国产在线一区二区| 91免费在线播放| 欧美一区二区三区免费在线看| 日韩视频免费观看高清完整版 | 欧美日韩国产一级片| 日韩精品一区二区三区老鸭窝| 久久蜜臀中文字幕| 一区二区三区在线视频观看| 午夜精品福利一区二区三区蜜桃| 捆绑调教一区二区三区| 99久久国产综合精品女不卡| 欧美日韩亚洲综合一区| 久久亚区不卡日本| 亚洲一区二区三区四区在线免费观看| 日韩成人伦理电影在线观看| 处破女av一区二区| 欧美女孩性生活视频| 欧美韩国日本不卡| 五月婷婷久久丁香| 成人综合日日夜夜| 欧美精品xxxxbbbb| 中文字幕在线免费不卡| 美女网站色91| 欧美三级中文字幕| 中文字幕精品三区| 日韩电影免费在线| 91福利视频网站| 国产精品视频在线看| 婷婷久久综合九色综合伊人色| 国产mv日韩mv欧美| 欧美本精品男人aⅴ天堂| 亚洲欧美激情小说另类| 国产91丝袜在线播放九色| 日韩视频永久免费| 午夜精品久久久久久| 91美女福利视频| 中文字幕精品一区二区三区精品| 日韩电影在线看| 欧美日韩一区不卡| 一区二区三区不卡视频| 成人高清在线视频| 中文字幕第一区二区| 国内外成人在线| 欧美一区2区视频在线观看| 一区二区欧美视频| 91社区在线播放| 中文字幕一区二区在线播放| 大胆亚洲人体视频| 国产精品网站在线播放| 国产成人免费视频网站| 国产午夜三级一区二区三| 狠狠色丁香久久婷婷综| 日韩女优视频免费观看| 精品在线播放免费| 久久色在线观看| 国内精品免费**视频| 精品久久久久香蕉网| 久久国产免费看| 日韩精品资源二区在线| 国精产品一区一区三区mba桃花| 日韩久久久久久| 国产一区二区三区黄视频 | 国产日韩影视精品| 蜜臀av一区二区在线观看 | 色哟哟精品一区| 亚洲乱码国产乱码精品精98午夜 | 亚洲日本成人在线观看| 色综合中文综合网| 亚洲网友自拍偷拍| 在线影院国内精品| 天堂精品中文字幕在线| 欧美一区二区在线观看| 久久99久久精品| 欧美国产精品劲爆| 欧美在线一二三四区| 日韩**一区毛片| 欧美激情艳妇裸体舞| 在线观看日韩电影| 美女视频一区在线观看| 欧美高清在线视频| 色婷婷综合激情| 日日摸夜夜添夜夜添国产精品| 欧美大片顶级少妇| av毛片久久久久**hd| 亚洲一区二区三区四区五区黄| 日韩一区二区在线观看视频 | 欧美乱熟臀69xxxxxx| 黄色资源网久久资源365| 国产精品电影一区二区三区| 欧洲日韩一区二区三区| 狠狠狠色丁香婷婷综合激情| 国产精品传媒入口麻豆| 日韩一区二区三| 成人激情图片网| 日韩av一区二区三区| 国产精品五月天| 欧美一级片在线观看| 99久久婷婷国产| 久88久久88久久久| 亚洲国产欧美另类丝袜| 国产欧美一区二区精品性色超碰 | 日本成人超碰在线观看| 国产成人免费av在线| 亚洲成人精品一区二区| 日本一区二区动态图| 欧美综合天天夜夜久久| 国产一区中文字幕| 亚洲韩国一区二区三区| 国产精品美女久久久久久| 久久麻豆一区二区| 在线观看网站黄不卡| 大陆成人av片| 狠狠狠色丁香婷婷综合久久五月| 亚洲一二三四在线观看| 国产精品第四页| 日本一区二区三区电影| 精品国产一区二区三区忘忧草| 欧美怡红院视频| 99麻豆久久久国产精品免费优播| 国内久久婷婷综合| 日韩av一二三| 五月天激情综合| 亚洲国产精品影院| 亚洲欧美激情插| 亚洲精品乱码久久久久久日本蜜臀| 国产女人18毛片水真多成人如厕| 欧美电影一区二区| 欧美日韩久久久| 欧美老肥妇做.爰bbww视频| 一本色道久久综合精品竹菊| 成人激情免费电影网址| 成人精品一区二区三区四区| 国产精品一区二区视频| 国产一区二区三区电影在线观看| 蜜臀av性久久久久蜜臀aⅴ| 美腿丝袜亚洲三区| 青青草91视频| 久草热8精品视频在线观看| 久久成人精品无人区| 国产一区二区三区国产| 高清在线观看日韩| 成人午夜精品一区二区三区| 成人综合激情网| 色婷婷综合视频在线观看| 91福利在线免费观看| 欧美男人的天堂一二区| 日韩久久精品一区| 久久蜜桃香蕉精品一区二区三区| 久久久亚洲高清| 国产精品久久99| 亚洲一二三区视频在线观看| 日韩av电影免费观看高清完整版 | 国产精品色一区二区三区| 国产精品毛片高清在线完整版| 中文字幕第一区第二区| 亚洲综合色婷婷| 美女网站一区二区| 成人天堂资源www在线| 色系网站成人免费| 91精品国产综合久久久蜜臀图片| 337p日本欧洲亚洲大胆精品| 国产精品天美传媒沈樵| 午夜精品一区在线观看| 国产在线国偷精品产拍免费yy| 99精品视频在线观看| 欧美日韩免费观看一区三区| 精品国产制服丝袜高跟| 中文字幕二三区不卡| 午夜国产精品影院在线观看| 国产成人精品免费网站| 欧美日韩电影一区| 国产精品乱码一区二区三区软件 | 国产人妖乱国产精品人妖| 亚洲欧美成人一区二区三区| 男女男精品视频网| 91视频在线看| 精品国产1区2区3区| 亚洲一区二三区| 成人激情免费电影网址| 欧美一区二区播放| 一个色在线综合| 成人免费精品视频|