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

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

?? tls_funcs.c

?? 可以用作很多客戶端的XSUPPLICANT的源代碼。比如用在802.1x或者無線AP上
?? C
?? 第 1 頁 / 共 3 頁
字號:
/** * 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. *//******************************************************************* * EAPTLS (RFC 2716) Function implementations *  * File: eaptls.c * * Authors: Chris.Hessing@utah.edu * * $Id: tls_funcs.c,v 1.27 2004/05/04 00:42:48 chessing Exp $ * $Date: 2004/05/04 00:42:48 $ * $Log: tls_funcs.c,v $ * Revision 1.27  2004/05/04 00:42:48  chessing * * Fix a bug in tls_funcs_load_random. * * Revision 1.26  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.25  2004/04/13 22:13:31  chessing * * Additional error checking in all eap methods. * * Revision 1.24  2004/04/12 18:43:43  chessing * * A few small cosmetic fixups. * * Revision 1.23  2004/04/06 20:31:27  chessing * * PEAP NOW WORKS WITH IAS!!!!!! (Thanks to help from Matthew Gast!! (We love you! ;))  Also, added patches from yesterday's testing at iLabs, including some keying fixes, some segfault fixes, and a few other misc. issues.  iLabs testing has been worth it! * * Revision 1.22  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.21  2004/03/28 20:37:10  chessing * * PEAP session resumption now works. * * Revision 1.20  2004/03/28 06:07:17  chessing * Added failure call to EAP methods to enable context resets for TLS based authentication protocols.  The resets are needed if an authentiction attempt fails, and we have session resumption enabled.  However, resetting it when we aren't using session resumption won't hurt anything, and probably isn't a bad idea.  The new failure handler can also be used to destroy passwords after a failed attempt, which will then cause xsupplicant to request another password from any listening GUIs. TLS session resumption is enabled (and works) for TLS and TTLS.  PEAP loops forever, and needs to be reviewed. * * Revision 1.19  2004/03/27 01:40:46  chessing * * Lots of small updates to free memory that wasn't getting freed, add some additional debug output, and fix a couple of memory leaks. * * Revision 1.18  2004/03/26 21:34:52  chessing * Fixed problem with interface being down on startup causing xsupplicant to not read the proper configuration information when the interface is brought up.  Added/fixed code to rebuild userdata piece of structure when the essid changes.  Added code to avoid setting a key on an interface if the interface doesn't already have encryption enabled.  Added a little bit of debugging code to help find a solution to an IPC socket problem. * * Revision 1.17  2004/03/26 03:52:52  chessing * * Fixed a bug in xsup_debug that would cause config-parse to crash.  Added new key word for session resumption.  Added code to attempt session resumption.  So far, testing has not succeeded, but it is attempting resume. (Four TTLS packets are exchanged, and then we get a failure.)  More testing is needed. * * Revision 1.16  2004/03/22 05:33:47  chessing * Fixed some potential issues with the example config in etc.  Fixed several memory leaks in various locations.  Re-tested all EAP types except SIM/OTP/GTC/LEAP.  (Those test will happen this next week.) Getting close to a 1.0pre release! * * Revision 1.15  2004/03/17 21:21:41  chessing * * Hopefully xsup_set_pwd is in the right place now. ;)  Added the functions needed for xsupplicant to request a password from a GUI client.  (Still needs to be tested.)  Updated TTLS and PEAP to support password prompting.  Fixed up curState change in statemachine.c, so it doesn't print [ALL] in front of the current state. * * Revision 1.14  2004/03/05 23:58:45  chessing * * Added CN (sometimes called server name) checking to TTLS and PEAP.  This resulted in two new config options in the eap-ttls, and eap-peap blocks.  cncheck should be the name (or partial name) to match in the CN.  cnexact should be yes/no depending on if we want to match the CN exactly, or just see if our substring is in the CN. * * Revision 1.13  2004/03/02 01:03:53  chessing * * Added Jari Ahonen's SSL verification callback.  Added support to PEAP and TTLS to turn off certificate validation checking by setting the root_cert variable in the config to NONE.  (Case sensative!)  We will also display a warning when running in this mode.  Added initial hooks to support certificate CN checking. * * Revision 1.12  2004/02/28 01:26:38  chessing * * Several critical updates.  Fixed the HMAC failure on some keys. (This was due to a lot more than just an off-by-one.)  Fixed up the key decryption routine to identify key packets with no encrypted key, and use the peer key instead.  When using the peer key, we also can handle packets that are padded funny.  (Our Cisco AP1200 has two null pad bytes at the end of some key frames.)  Changed the response ID function to not add a 00 to the end of the ID.  The 00 byte shouldn't have been seen by the RADIUS server unless they were not paying attention to the EAP-Length.  So, this wasn't really a bug fix.  Started to add support for CN checking for TLS based protocols. * * Revision 1.11  2004/02/06 06:13:32  chessing * * Cleaned up some unneeded stuff in the configure.in file as per e-mail from Rakesh Patel.  Added all 12 patches from Jouni Malinen (Including wpa_supplicant patch, until we can add true wpa support in xsupplicant.) * * Revision 1.10  2004/01/17 21:16:16  chessing * * Various segfault fixes.  PEAP now works correctly again.  Some new error checking in the tls handlers.  Fixes for the way we determine if we have changed ESSIDs.  We now quit when we don't have a config, or when the config is bad. Added code to check and see if a frame is in the queue, and don't sleep if there is.  "Fixed" ID issue by inheriting the ID from the parent where needed.  However, assigning an ID inside of a handler will override the parent ID.  This could cause problems with some EAP types.  We should add a "username" field to PEAP to allow configuration of the inner EAP identity. * * Revision 1.9  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.8  2004/01/14 22:07:25  chessing * * Fixes that were needed in order to allow us to authenticate correctly.  We should now be able to authenticate using only information provided by the config file! * * Revision 1.7  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.6  2004/01/06 23:35:08  chessing * * Fixed a couple known bugs in SIM.  Config file support should now be in place!!! But, because of the changes, PEAP is probably broken.  We will need to reconsider how the phase 2 piece of PEAP works. * * Revision 1.5  2003/12/14 06:11:03  chessing * * Fixed some stuff with SIM in relation to the new config structures.  Cleaned out CR/LF from LEAP source files.  Added user certificate support to TTLS and PEAP. Some additions to the IPC code. (Not tested yet.) * * Revision 1.4  2003/12/07 06:20:20  chessing * * Changes to deal with new config file style.  Beginning of IPC code. * * Revision 1.3  2003/11/29 03:50:03  chessing * * Added NAK code, EAP Type checking, split out daemon config from user config, added Display of EAP-Notification text, revamped phase 2 selection method for TTLS. * * Revision 1.2  2003/11/21 05:09:47  chessing * * PEAP now works! * * Revision 1.1.1.1  2003/11/19 04:13:26  chessing * New source tree * * *******************************************************************/#include <openssl/ssl.h>#include <openssl/err.h>#include <openssl/rand.h>#include <openssl/hmac.h>#include <netinet/in.h>#include <string.h>#include <inttypes.h>#include "config.h"#include "profile.h"#include "eap.h"#include "tls_funcs.h"#include "tls_crypt.h"#include "xsup_debug.h"#include "xsup_err.h"char *get_cert_common_name(SSL *ssl_ctx){  char *commonName = NULL;  X509 *server_cert;  if (!ssl_ctx)    {      debug_printf(DEBUG_NORMAL, "Invalid SSL context in get_cert_common_name()!\n");      return NULL;    }  // Get our certificate.  server_cert = SSL_get_peer_certificate(ssl_ctx);  if (!server_cert) return NULL;  commonName = (char *)malloc(512);  if (commonName == NULL)    {      debug_printf(DEBUG_NORMAL, "Couldn't allocate memory to hold the common name!\n");      return NULL;    }  if (X509_NAME_get_text_by_NID(X509_get_subject_name(server_cert),				NID_commonName, commonName, 512) < 0)    {      debug_printf(DEBUG_NORMAL, "Couldn't extract common name from server certificate!\n");      return NULL;    }  debug_printf(DEBUG_AUTHTYPES, "Extracted common name of %s\n",commonName);  return commonName;}static int ssl_verify_callback(int preverify_ok, X509_STORE_CTX *ctx){  char buf[256];  X509 *err_cert;  int err, depth;  if (!ctx)    {      debug_printf(DEBUG_NORMAL, "Invalid context in ssl_verify_callback()!\n");      return XEMALLOC;    }  err_cert = X509_STORE_CTX_get_current_cert(ctx);  err = X509_STORE_CTX_get_error(ctx);  depth = X509_STORE_CTX_get_error_depth(ctx);  X509_NAME_oneline(X509_get_subject_name(err_cert), buf, 256);  debug_printf(DEBUG_AUTHTYPES, "     --- SSL_verify : depth %d\n", depth);  if (!preverify_ok)    {      debug_printf(DEBUG_AUTHTYPES, "     --- SSL_verify error : num=%d:%s:depth=%d:%s\n",		   err, X509_verify_cert_error_string(err), depth, buf);      if (err == 26) preverify_ok = 1;    }  return preverify_ok;}int tls_funcs_init(struct generic_eap_data *thisint){  struct tls_vars *mytls_vars;  if (thisint == NULL) return XETLSINIT;  if (thisint->eap_data == NULL) return XETLSINIT;  mytls_vars = (struct tls_vars *)thisint->eap_data;  SSL_library_init();  SSL_load_error_strings();  mytls_vars->ctx = SSL_CTX_new(TLSv1_method());  if (mytls_vars->ctx == NULL)    {      debug_printf(DEBUG_NORMAL, "Couldn't initialize OpenSSL TLS library!\n");      return XETLSINIT;    }  return XENONE;}int tls_funcs_start(struct tls_vars *mytls_vars){  SSL_SESSION *sess = NULL;  unsigned long err;  if (mytls_vars == NULL) return XETLSSTARTFAIL;  mytls_vars->resuming = 0;  if (!mytls_vars->ssl)    {      mytls_vars->ssl = SSL_new(mytls_vars->ctx);      if (!mytls_vars->ssl)	{	  debug_printf(DEBUG_NORMAL, "Couldn't create SSL object!\n");	  // 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));	    }	  return XETLSSTARTFAIL;	}    } else {      // We already established a connection, so we probably we need to      // resume the session.      if (mytls_vars->resume == RES_YES)	{	  sess = SSL_get_session(mytls_vars->ssl);	  if (!sess)	    {	      mytls_vars->resuming = 0;	    } else {	      mytls_vars->resuming = 1;	    }	}      // We don't want to send an alert to the other end..  So do a quiet      // shutdown.  This violates the TLS standard, but it needed to avoid      // confusing the other end of the connection when we want to do a      // reconnect!      SSL_set_quiet_shutdown(mytls_vars->ssl, 1);      // Now, close off our old session.      SSL_shutdown(mytls_vars->ssl);    }  mytls_vars->ssl_in = BIO_new(BIO_s_mem());  if (!mytls_vars->ssl_in)    {      debug_printf(DEBUG_NORMAL, "Couldn't create ssl_in!\n");      return XETLSSTARTFAIL;    }  mytls_vars->ssl_out = BIO_new(BIO_s_mem());  if (!mytls_vars->ssl_out)    {      debug_printf(DEBUG_NORMAL, "Couldn't create ssl_out!\n");      return XETLSSTARTFAIL;    }  SSL_set_bio(mytls_vars->ssl, mytls_vars->ssl_in, mytls_vars->ssl_out);  if (sess != NULL)    {      // If we have session information, we need to use it to resume the       // session.      debug_printf(DEBUG_AUTHTYPES, "Attempting to resume session...\n");      SSL_set_session(mytls_vars->ssl, sess);    }  // Set this to SSL_VERIFY_NONE if we don't want to do anything with a failed  // verification.  SSL_set_verify(mytls_vars->ssl, mytls_vars->verify_mode, ssl_verify_callback);  return XENONE;}int tls_funcs_parse(struct generic_eap_data *thisint, u_char *indata, 		    int insize, char *outdata, int *outsize, int chunksize){  int rc;  BUF_MEM *retData;  struct tls_vars *mytls_vars;  char *retVal;  uint64_t length;  if (!thisint)    {      debug_printf(DEBUG_NORMAL, "Invalid interface struct passed to tls_funcs_parse()!\n");      return XEMALLOC;    }  if ((!outdata) || (!outsize))    {      debug_printf(DEBUG_NORMAL, "Invalid return buffer in tls_funcs_parse()!\n");      return XEMALLOC;    }  if (insize > 1520)    {      debug_printf(DEBUG_NORMAL, "Packet passed in to tls_funcs_parse() is too big! Ignoring!\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看国产91| 日韩欧美国产一区二区在线播放| 日本精品免费观看高清观看| 9191成人精品久久| 中文字幕不卡在线观看| 午夜日韩在线观看| 91视频精品在这里| 欧美精品一区二区蜜臀亚洲| 亚洲无人区一区| 成人午夜在线播放| 337p日本欧洲亚洲大胆色噜噜| 亚洲精品中文字幕乱码三区| 国产精品一区在线| 91精品国产一区二区三区蜜臀| 亚洲丝袜制服诱惑| 国产精品一品视频| 欧美电影免费提供在线观看| 天堂va蜜桃一区二区三区 | 日本电影欧美片| 国产夜色精品一区二区av| 日本va欧美va欧美va精品| 91黄色免费版| 1024成人网| 国产不卡视频在线观看| 亚洲精品一区二区三区影院| 无吗不卡中文字幕| 欧美日韩一区不卡| 亚洲午夜免费电影| 日本道色综合久久| 亚洲精品五月天| 91麻豆精品秘密| 亚洲精品视频在线| 色综合久久天天| 亚洲狠狠丁香婷婷综合久久久| 99re免费视频精品全部| 日韩理论在线观看| 色婷婷av久久久久久久| 亚洲精品视频免费观看| 色先锋aa成人| 亚洲午夜精品在线| 9191精品国产综合久久久久久| 五月激情综合网| 日韩欧美成人激情| 国产自产高清不卡| 欧美国产日韩在线观看| 粉嫩av一区二区三区在线播放| 国产精品久久久一本精品 | 欧美韩日一区二区三区四区| 国产精品亚洲视频| 国产精品国产三级国产aⅴ原创 | 欧美日韩国产一二三| 亚洲国产综合人成综合网站| 欧美日韩二区三区| 久久精品噜噜噜成人av农村| 国产亚洲欧美在线| av中文字幕亚洲| 亚洲综合激情另类小说区| 欧美日韩精品一二三区| 精品中文字幕一区二区小辣椒| 精品第一国产综合精品aⅴ| 成人美女在线观看| 亚洲韩国一区二区三区| 精品国产乱码久久久久久老虎| 国产成人精品三级| 亚洲精品欧美在线| 日韩亚洲欧美综合| 99视频精品免费视频| 日韩制服丝袜av| 久久精品日产第一区二区三区高清版 | 国内外精品视频| 亚洲同性gay激情无套| 欧美日本视频在线| 国产成人免费高清| 亚洲成人免费电影| 日本一区二区免费在线观看视频| 色香蕉成人二区免费| 韩国一区二区三区| 亚洲乱码精品一二三四区日韩在线| 欧美一区二区三区四区五区 | 亚洲18女电影在线观看| 精品国产1区二区| 色婷婷av一区| 国产综合色在线视频区| 一区二区三区四区亚洲| 久久久国际精品| 欧美日韩黄色影视| 成人app网站| 日韩1区2区日韩1区2区| 亚洲精选在线视频| 日本一区二区三区四区| 日韩亚洲电影在线| 欧美色图激情小说| 99精品偷自拍| 成人综合在线网站| 久久99久国产精品黄毛片色诱| 亚洲国产美女搞黄色| 国产精品久久久久aaaa樱花 | 亚洲精品高清在线观看| 久久九九久精品国产免费直播| 欧美高清hd18日本| 日本久久一区二区三区| 成人精品小蝌蚪| 国产高清视频一区| 久久aⅴ国产欧美74aaa| 天天操天天色综合| 亚洲高清免费观看| 亚洲高清久久久| 亚洲综合一二区| 亚洲免费在线看| 亚洲欧美日韩系列| 中文字幕一区二区视频| 国产日韩三级在线| 国产欧美一区二区精品忘忧草| 日韩欧美www| 欧美成人伊人久久综合网| 91精品欧美福利在线观看| 欧美色爱综合网| 欧美日韩国产精选| 欧美日本一道本| 欧美福利视频导航| 69堂精品视频| 日韩视频永久免费| 日韩一级片在线观看| 日韩一区二区三区视频在线观看| 91精品国产欧美一区二区| 欧美放荡的少妇| 日韩视频免费直播| 欧美mv日韩mv亚洲| 欧美激情中文字幕| 亚洲色图欧美激情| 一区二区日韩av| 日本伊人色综合网| 九九久久精品视频| 国产999精品久久久久久| 成人高清视频免费观看| 色狠狠一区二区| 欧美日韩精品免费观看视频| 日韩欧美在线影院| 久久久久久久久久久99999| 日本一二三不卡| 亚洲一区二区三区自拍| 青娱乐精品视频| 韩国精品一区二区| 本田岬高潮一区二区三区| 91久久精品日日躁夜夜躁欧美| 7777女厕盗摄久久久| 国产亚洲精品7777| 亚洲免费电影在线| 日本午夜精品视频在线观看 | 青青青伊人色综合久久| 国产精品亚洲一区二区三区妖精 | 亚洲九九爱视频| 蜜桃av噜噜一区二区三区小说| 高清在线成人网| 欧美视频一区二区在线观看| 欧美大片在线观看一区| 中文字幕在线一区二区三区| 午夜免费久久看| 国产91精品免费| 欧美电影一区二区三区| 国产视频亚洲色图| 香蕉乱码成人久久天堂爱免费| 国产成人综合视频| 欧美精选一区二区| 国产精品毛片无遮挡高清| 亚洲国产中文字幕| www.欧美精品一二区| 日韩午夜小视频| 夜夜嗨av一区二区三区网页| 国产一区二区三区免费看| 欧美日本在线一区| 亚洲欧美综合色| 狠狠狠色丁香婷婷综合激情| 欧美日韩亚洲高清一区二区| 中文字幕第一区第二区| 久久精品国产77777蜜臀| 欧美性受极品xxxx喷水| 国产精品成人免费在线| 美女在线一区二区| 在线日韩国产精品| 国产精品福利一区| 精品影视av免费| 欧美人动与zoxxxx乱| 1000精品久久久久久久久| 国产精品夜夜嗨| 日韩一区二区三区四区| 亚洲 欧美综合在线网络| 色婷婷狠狠综合| 国产精品嫩草影院av蜜臀| 精品一二三四区| 日韩亚洲电影在线| 日韩黄色免费网站| 欧美日韩亚洲另类| 亚洲超碰精品一区二区| 色综合久久精品| 亚洲精品高清视频在线观看| av一区二区三区| 最新热久久免费视频| youjizz国产精品| 中文一区二区在线观看|