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

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

?? tls_crypt.c

?? 可以用作很多客戶端的XSUPPLICANT的源代碼。比如用在802.1x或者無線AP上
?? C
字號:
/** * A client-side 802.1x implementation supporting EAP/TLS * * This code is released under both the GPL version 2 and BSD licenses. * Either license may be used.  The respective licenses are found below. * * Copyright (C) 2002 Bryan D. Payne & Nick L. Petroni Jr. * All Rights Reserved * * --- GPL Version 2 License --- * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * * --- BSD License --- * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * *  - Redistributions of source code must retain the above copyright notice, *    this list of conditions and the following disclaimer. *  - Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. *  - All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *       This product includes software developed by the University of *       Maryland at College Park and its contributors. *  - Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. *//******************************************************************* * En/Decrypt Function implementations * * File: tls_crypt.c * * Authors: Chris.Hessing@utah.edu * * $Id: tls_crypt.c,v 1.8 2004/04/14 21:09:33 chessing Exp $ * $Date: 2004/04/14 21:09:33 $ * $Log: tls_crypt.c,v $ * Revision 1.8  2004/04/14 21:09:33  chessing * * Finished up extra error checking code.  Added ability to have passwords removed from memory on an authentication failure, so that a new password can be entered.  However, this feature has been disabled at this point due to a few small issues.  It will probably show up in 1.1. ;)  (It just isn't stable enough right now.) * * Revision 1.7  2004/04/13 22:13:31  chessing * * Additional error checking in all eap methods. * * Revision 1.6  2004/04/05 17:19:30  chessing * * Added additional checks against pointers to try to help prevent segfaults.  (This still needs to be completed.)  Fixed a problem with PEAP where a NULL input packet would result in a huge unencrypted packet, and a segfault.  (This was triggered when using one of the gui password tools.  When the password was in the config file, it wouldn't be triggered.) * * Revision 1.5  2004/04/02 20:50:21  chessing * * Attempt to fix PEAP with IAS. At this point, we can get through the TLS piece of the PEAP authentication, and successfully attempt a phase 2 authentication.  But, for some reason MS-CHAPv2 is failing when used with IAS.  (But at least we are one step closer!)  Also, removed the des pieces that were needed for eap-mschapv2, since we can use the OpenSSL routines instead.  The proper way to handle DES was found while looking at the CVS code for wpa_supplicant.  The fix for phase 1 of PEAP was found while looking at the commit notes for wpa_supplicant.  (wpa_supplicant is part of hostap, and is written/maintained by Jouni Malinen.) * * Revision 1.4  2004/01/15 01:12:45  chessing * * Fixed a keying problem (keying material wasn't being generated correctly).  Added support for global counter variables from the config file. (Such as auth_period)  Added support for executing command defined in the config file based on different events.  (Things such as what to do on reauth.)  Added the ability to roam to a different SSID.  We now check to make sure our BSSID hasn't changed, and we follow it, if it has.  Fixed a sefault when the program was terminated in certain states.  Added attempt at better garbage collection on program termination. Various small code cleanups. * * Revision 1.3  2004/01/13 01:55:56  chessing * * Major changes to EAP related code.  We no longer pass in an interface_data struct to EAP handlers.  Instead, we hand in a generic_eap_data struct which containsnon-interface specific information.  This will allow EAP types to be reused as phase 2 type easier.  However, this new code may create issues with EAP types that make use of the identity in the eap type.  Somehow, the identity value needs to propigate down to the EAP method.  It currently does not.  This should be any easy fix, but more testing will be needed. * * Revision 1.2  2003/11/21 05:09:47  chessing * * PEAP now works! * * Revision 1.1.1.1  2003/11/19 04:13:25  chessing * New source tree * * *******************************************************************/#include <string.h>#include <strings.h>#include <openssl/ssl.h>#include <stdint.h>#include <netinet/in.h>#include "config.h"#include "profile.h"#include "eap.h"#include "eaptls.h"#include "tls_funcs.h"#include "../../xsup_debug.h"#include "../../xsup_err.h"u_char *tls_crypt_gen_keyblock(struct generic_eap_data *thisint, char *sesskey,			      int sesskeylen){  u_char seed[SSL3_RANDOM_SIZE*2];  u_char *p = seed;  struct tls_vars *mytls_vars;  u_char *retblock;  debug_printf(DEBUG_EVERYTHING, "Generating key block!\n");  if ((!thisint) || (!thisint->eap_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_gen_keyblock()!\n");      return NULL;    }  if (!sesskey)    {      debug_printf(DEBUG_NORMAL, "Invalid session constant!\n");      return NULL;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  if (!mytls_vars->ssl)    {      debug_printf(DEBUG_NORMAL, "No valid SSL context found!\n");      return NULL;    }  debug_printf(DEBUG_EVERYTHING, "Using session key const of : %s\n",	       sesskey);  retblock = (u_char *)malloc(TLS_SESSION_KEY_SIZE);  if (!retblock)    return NULL;  memcpy(p, mytls_vars->ssl->s3->client_random, SSL3_RANDOM_SIZE);  p+= SSL3_RANDOM_SIZE;  memcpy(p, mytls_vars->ssl->s3->server_random, SSL3_RANDOM_SIZE);  tls_funcs_PRF(mytls_vars->ssl->session->master_key, 		mytls_vars->ssl->session->master_key_length,		sesskey, sesskeylen, seed, 		SSL3_RANDOM_SIZE * 2, retblock, 		TLS_SESSION_KEY_SIZE);  return retblock;}// This function written by Danielle Breviint tls_crypt_decrypt(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char p[1000];  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data) ||      (!out_size))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_decrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  bzero(p,1000);  BIO_reset(mytls_vars->ssl_in);  rc=BIO_write(mytls_vars->ssl_in, in_data, in_size);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_read(mytls_vars->ssl, out_data, 1000);  *out_size = rc;  // CLEAN THIS UP -- And use it.  /*    switch (SSL_get_error(ssl,rc))    {    case SSL_ERROR_NONE:    printf("No SSL error!?   Dump :\n");    for (i=0;i<=rc;i++)    {    printf("%02x ",out_data[i]);    }    printf("\n");    break;    case SSL_ERROR_ZERO_RETURN:    printf("SSL Error Zero Return!\n");    break;    case SSL_ERROR_WANT_READ:    case SSL_ERROR_WANT_WRITE:    printf("SSL Error want read or write.\n");    break;    case SSL_ERROR_WANT_CONNECT:    printf("SSL Error want connect\n");    break;    case SSL_ERROR_WANT_ACCEPT:    printf("SSL Error want accept\n");    break;    case SSL_ERROR_WANT_X509_LOOKUP:    printf("SSL Error want x509 Lookup\n");    break;    case SSL_ERROR_SYSCALL:    printf("SSL Error syscall\n");    break;    case SSL_ERROR_SSL:    printf("SSL error of some sort!\n");    break;    default:    printf("This shouldn't happen!\n");    break;    }  */  return XENONE;}int tls_crypt_encrypt(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char *p;  int to_send_size = 0;  uint64_t length;  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_encrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  // We need to modify this, to read more when there is more to be returned.  p = (u_char *)malloc(1000);  if (p == NULL)    {      debug_printf(DEBUG_NORMAL, "Error with malloc of \"p\" in tls_crypt_encrypt().\n");      return -1;    }  bzero(p,1000);    BIO_reset(mytls_vars->ssl_in);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_write(mytls_vars->ssl, in_data, in_size);  rc = BIO_read(mytls_vars->ssl_out, p, 1000);   // Allow largest possible read.  to_send_size = rc;  out_data[0] = EAPTLS_LENGTH_INCL;  // No more to send.  length = ntohl(to_send_size+5);  memcpy(&out_data[1], &length, 4);  memcpy(&out_data[5], p, to_send_size);  *out_size = to_send_size+5;  if(p)    {      free(p);      p = NULL;    }  return XENONE;}int tls_crypt_encrypt_nolen(struct generic_eap_data *thisint, u_char *in_data, int in_size, u_char *out_data, int *out_size){  struct tls_vars *mytls_vars;  int rc=0;  u_char *p;  int to_send_size = 0;  if ((!thisint) || (!thisint->eap_data) || (!in_data) || (!out_data))    {      debug_printf(DEBUG_NORMAL, "Invalid data passed in to tls_crypt_encrypt()!\n");      return XEMALLOC;    }  mytls_vars = (struct tls_vars *)thisint->eap_data;  // We need to modify this, to read more when there is more to be returned.  p = (u_char *)malloc(1000);  if (p == NULL)    {      debug_printf(DEBUG_NORMAL, "Error with malloc of \"p\" in tls_crypt_encrypt().\n");      return -1;    }  bzero(p,1000);    BIO_reset(mytls_vars->ssl_in);  BIO_reset(mytls_vars->ssl_out);  rc=SSL_write(mytls_vars->ssl, in_data, in_size);  rc = BIO_read(mytls_vars->ssl_out, p, 1000);   // Allow largest possible read.  to_send_size = rc;  out_data[0] = 0x00;  // No more to send.  memcpy(&out_data[1], p, to_send_size);  *out_size = to_send_size+1;  if(p)    {      free(p);      p = NULL;    }  return XENONE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区蜜桃| 欧美成人vr18sexvr| 日韩视频在线你懂得| 亚洲欧洲日韩女同| 国产精品影视天天线| 欧美精选一区二区| 亚洲人123区| 成人午夜电影小说| 精品国产不卡一区二区三区| 亚洲一级二级三级在线免费观看| 国产精品影视在线| 日韩免费电影网站| 日韩成人午夜电影| 欧美无砖砖区免费| 亚洲男人的天堂在线观看| 国产xxx精品视频大全| 欧美电视剧免费观看| 性做久久久久久久免费看| av在线不卡电影| 久久午夜国产精品| 久草中文综合在线| 欧美一卡2卡三卡4卡5免费| 一区二区三区国产豹纹内裤在线| 不卡一区二区中文字幕| 中文字幕乱码久久午夜不卡 | 精品国产一区二区在线观看| 亚洲妇女屁股眼交7| 欧美最新大片在线看| 中文字幕永久在线不卡| 成人涩涩免费视频| 中文久久乱码一区二区| 国产aⅴ综合色| 中文在线免费一区三区高中清不卡| 韩日av一区二区| 精品剧情v国产在线观看在线| 久久国产麻豆精品| 亚洲精品在线观看视频| 国产乱一区二区| 国产精品污污网站在线观看| 成人免费毛片a| 久久成人免费日本黄色| 91精品国产麻豆国产自产在线| 日本视频一区二区| 久久亚洲影视婷婷| 丰满白嫩尤物一区二区| 中文字幕一区二区在线观看| 91在线精品秘密一区二区| 一区二区三区精密机械公司| 欧美精品第一页| 精品一区二区三区在线视频| 国产夜色精品一区二区av| 91在线视频18| 午夜电影久久久| 久久综合av免费| 不卡av在线网| 日韩主播视频在线| 久久亚洲捆绑美女| 91免费视频网| 日韩成人精品在线观看| 国产亚洲欧美色| 欧洲另类一二三四区| 美女高潮久久久| 国产精品蜜臀av| 欧美日韩成人综合天天影院 | 欧美电影精品一区二区| 欧美视频在线一区二区三区 | 亚洲一区在线视频观看| 日韩免费观看高清完整版在线观看| 国产成+人+日韩+欧美+亚洲| 一区二区三区在线高清| 精品成人一区二区三区四区| 不卡av免费在线观看| 秋霞影院一区二区| ●精品国产综合乱码久久久久| 欧美日韩一二三区| 国产.精品.日韩.另类.中文.在线.播放| 亚洲视频在线一区二区| 日韩欧美高清dvd碟片| 91丨九色丨蝌蚪丨老版| 久久精品国产久精国产爱| 亚洲裸体xxx| www久久精品| 欧美性xxxxxx少妇| 成人久久久精品乱码一区二区三区 | 国产精品一区二区久激情瑜伽| 一个色妞综合视频在线观看| 久久久久久麻豆| 在线电影一区二区三区| www.亚洲国产| 久久精品国产秦先生| 亚洲国产毛片aaaaa无费看| 国产欧美日韩在线视频| 日韩欧美国产不卡| 欧美日韩一本到| 色综合一区二区| 国产99久久久国产精品免费看| 奇米精品一区二区三区在线观看| 亚洲精品成人在线| 日本一区二区三区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | aaa欧美日韩| 国产成人免费在线视频| 国内久久精品视频| 美日韩一区二区| 日本 国产 欧美色综合| 天天综合色天天| 日韩高清一区在线| 三级影片在线观看欧美日韩一区二区 | 91香蕉视频mp4| 高清成人免费视频| 国产裸体歌舞团一区二区| 免播放器亚洲一区| 麻豆国产欧美日韩综合精品二区| 亚洲成人1区2区| 亚洲成人你懂的| 日韩高清在线不卡| 老司机免费视频一区二区| 毛片一区二区三区| 精品一区二区三区蜜桃| 国产美女视频一区| 国产成人一区二区精品非洲| 国产成a人亚洲精| 不卡在线视频中文字幕| 一本色道久久加勒比精品 | 一区二区三区四区在线免费观看| 亚洲欧洲中文日韩久久av乱码| 亚洲视频一二三区| 亚洲综合在线电影| 午夜精品免费在线观看| 日韩高清不卡在线| 精品亚洲国内自在自线福利| 狠狠色狠狠色合久久伊人| 国产成人免费在线观看| 91丨九色porny丨蝌蚪| 欧美日韩亚洲高清一区二区| 7777精品伊人久久久大香线蕉完整版| 91精品午夜视频| 久久亚洲捆绑美女| 亚洲美女区一区| 日韩av高清在线观看| 国产乱码精品一区二区三区忘忧草| 国产成人午夜精品5599 | 精品入口麻豆88视频| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久久亚洲毛片| 亚洲狠狠爱一区二区三区| 美国三级日本三级久久99| kk眼镜猥琐国模调教系列一区二区| 色偷偷一区二区三区| 欧美一级黄色大片| 亚洲欧洲一区二区在线播放| 日韩精品亚洲一区| a美女胸又www黄视频久久| 91麻豆精品国产91久久久久久久久| 亚洲精品一区二区精华| 亚洲资源中文字幕| 国产精品一区二区在线观看不卡| 91国产视频在线观看| 久久嫩草精品久久久精品| 亚洲一卡二卡三卡四卡无卡久久| 国产高清不卡一区二区| 欧美日韩一级片网站| 国产精品第五页| 国产乱码精品一品二品| 精品视频免费在线| 国产精品网友自拍| 久热成人在线视频| 欧美日韩在线免费视频| 国产精品国产三级国产a | 99re视频精品| 久久久美女毛片| 免费视频最近日韩| 欧美在线影院一区二区| 中文成人综合网| 国产精品亚洲人在线观看| 91.xcao| 亚洲综合成人在线| 99久久综合狠狠综合久久| 精品国产一区二区三区不卡| 首页国产欧美久久| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲欧洲精品成人久久奇米网| 美日韩一区二区| 欧美猛男gaygay网站| 成人免费在线视频观看| 国产成人综合自拍| 精品国偷自产国产一区| 天天爽夜夜爽夜夜爽精品视频| 91啪九色porn原创视频在线观看| 久久久精品综合| 久久97超碰色| 日韩欧美123| 日本午夜精品一区二区三区电影| 欧美日韩aaaaa| 亚洲图片自拍偷拍| 欧美日韩精品系列| 视频一区在线播放| 欧美日韩国产大片| 日韩高清在线电影| 日韩一区二区精品葵司在线|