ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

chap.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 * chap.h - Network Challenge Handshake Authentication Protocol header file.
00003 *
00004 * Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc.
00005 * portions Copyright (c) 1998 Global Election Systems Inc.
00006 *
00007 * The authors hereby grant permission to use, copy, modify, distribute,
00008 * and license this software and its documentation for any purpose, provided
00009 * that existing copyright notices are retained in all copies and that this
00010 * notice and the following disclaimer are included verbatim in any 
00011 * distributions. No written agreement, license, or royalty fee is required
00012 * for any of the authorized uses.
00013 *
00014 * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR
00015 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00016 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
00017 * IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00018 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00019 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00020 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00021 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00022 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00023 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00024 *
00025 ******************************************************************************
00026 * REVISION HISTORY
00027 *
00028 * 03-01-01 Marc Boucher <marc@mbsi.ca>
00029 *   Ported to lwIP.
00030 * 97-12-03 Guy Lancaster <lancasterg@acm.org>, Global Election Systems Inc.
00031 *   Original built from BSD network code.
00032 ******************************************************************************/
00033 /*
00034  * chap.h - Challenge Handshake Authentication Protocol definitions.
00035  *
00036  * Copyright (c) 1993 The Australian National University.
00037  * All rights reserved.
00038  *
00039  * Redistribution and use in source and binary forms are permitted
00040  * provided that the above copyright notice and this paragraph are
00041  * duplicated in all such forms and that any documentation,
00042  * advertising materials, and other materials related to such
00043  * distribution and use acknowledge that the software was developed
00044  * by the Australian National University.  The name of the University
00045  * may not be used to endorse or promote products derived from this
00046  * software without specific prior written permission.
00047  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00048  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00049  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00050  *
00051  * Copyright (c) 1991 Gregory M. Christy
00052  * All rights reserved.
00053  *
00054  * Redistribution and use in source and binary forms are permitted
00055  * provided that the above copyright notice and this paragraph are
00056  * duplicated in all such forms and that any documentation,
00057  * advertising materials, and other materials related to such
00058  * distribution and use acknowledge that the software was developed
00059  * by the author.
00060  *
00061  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
00062  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
00063  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00064  *
00065  * $Id: chap.h,v 1.6 2010/01/24 13:19:34 goldsimon Exp $
00066  */
00067 
00068 #ifndef CHAP_H
00069 #define CHAP_H
00070 
00071 /* Code + ID + length */
00072 #define CHAP_HEADERLEN 4
00073 
00074 /*
00075  * CHAP codes.
00076  */
00077 
00078 #define CHAP_DIGEST_MD5      5    /* use MD5 algorithm */
00079 #define MD5_SIGNATURE_SIZE   16   /* 16 bytes in a MD5 message digest */
00080 #define CHAP_MICROSOFT       0x80 /* use Microsoft-compatible alg. */
00081 #define MS_CHAP_RESPONSE_LEN 49   /* Response length for MS-CHAP */
00082 
00083 #define CHAP_CHALLENGE       1
00084 #define CHAP_RESPONSE        2
00085 #define CHAP_SUCCESS         3
00086 #define CHAP_FAILURE         4
00087 
00088 /*
00089  *  Challenge lengths (for challenges we send) and other limits.
00090  */
00091 #define MIN_CHALLENGE_LENGTH 32
00092 #define MAX_CHALLENGE_LENGTH 64
00093 #define MAX_RESPONSE_LENGTH  64 /* sufficient for MD5 or MS-CHAP */
00094 
00095 /*
00096  * Each interface is described by a chap structure.
00097  */
00098 
00099 typedef struct chap_state {
00100   int unit;                               /* Interface unit number */
00101   int clientstate;                        /* Client state */
00102   int serverstate;                        /* Server state */
00103   u_char challenge[MAX_CHALLENGE_LENGTH]; /* last challenge string sent */
00104   u_char chal_len;                        /* challenge length */
00105   u_char chal_id;                         /* ID of last challenge */
00106   u_char chal_type;                       /* hash algorithm for challenges */
00107   u_char id;                              /* Current id */
00108   char *chal_name;                        /* Our name to use with challenge */
00109   int chal_interval;                      /* Time until we challenge peer again */
00110   int timeouttime;                        /* Timeout time in seconds */
00111   int max_transmits;                      /* Maximum # of challenge transmissions */
00112   int chal_transmits;                     /* Number of transmissions of challenge */
00113   int resp_transmits;                     /* Number of transmissions of response */
00114   u_char response[MAX_RESPONSE_LENGTH];   /* Response to send */
00115   u_char resp_length;                     /* length of response */
00116   u_char resp_id;                         /* ID for response messages */
00117   u_char resp_type;                       /* hash algorithm for responses */
00118   char *resp_name;                        /* Our name to send with response */
00119 } chap_state;
00120 
00121 
00122 /*
00123  * Client (peer) states.
00124  */
00125 #define CHAPCS_INITIAL       0 /* Lower layer down, not opened */
00126 #define CHAPCS_CLOSED        1 /* Lower layer up, not opened */
00127 #define CHAPCS_PENDING       2 /* Auth us to peer when lower up */
00128 #define CHAPCS_LISTEN        3 /* Listening for a challenge */
00129 #define CHAPCS_RESPONSE      4 /* Sent response, waiting for status */
00130 #define CHAPCS_OPEN          5 /* We've received Success */
00131 
00132 /*
00133  * Server (authenticator) states.
00134  */
00135 #define CHAPSS_INITIAL       0 /* Lower layer down, not opened */
00136 #define CHAPSS_CLOSED        1 /* Lower layer up, not opened */
00137 #define CHAPSS_PENDING       2 /* Auth peer when lower up */
00138 #define CHAPSS_INITIAL_CHAL  3 /* We've sent the first challenge */
00139 #define CHAPSS_OPEN          4 /* We've sent a Success msg */
00140 #define CHAPSS_RECHALLENGE   5 /* We've sent another challenge */
00141 #define CHAPSS_BADAUTH       6 /* We've sent a Failure msg */
00142 
00143 extern chap_state chap[];
00144 
00145 void ChapAuthWithPeer (int, char *, u_char);
00146 void ChapAuthPeer (int, char *, u_char);
00147 
00148 extern struct protent chap_protent;
00149 
00150 #endif /* CHAP_H */

Generated on Sat May 26 2012 04:35:00 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.