diff options
Diffstat (limited to 'libexec/pppd/chap.h')
-rw-r--r-- | libexec/pppd/chap.h | 93 |
1 files changed, 49 insertions, 44 deletions
diff --git a/libexec/pppd/chap.h b/libexec/pppd/chap.h index 2d5c51e3485e..51d41d5b6acf 100644 --- a/libexec/pppd/chap.h +++ b/libexec/pppd/chap.h @@ -15,6 +15,8 @@ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * $Id: chap.h,v 1.2 1994/03/30 09:31:24 jkh Exp $ */ #ifndef __CHAP_INCLUDE__ @@ -26,77 +28,80 @@ * CHAP codes. */ -#define CHAP_DIGEST_MD5 5 /* use MD5 algorithm */ - -#define MD5_SIGNATURE_SIZE 16 /* 16 bytes in a MD5 message digest */ - -#define CHAP_NOCALLBACK 0 /* don't call back after successful auth */ -#define CHAP_CALLBACK 1 /* do call back */ +#define CHAP_DIGEST_MD5 5 /* use MD5 algorithm */ +#define MD5_SIGNATURE_SIZE 16 /* 16 bytes in a MD5 message digest */ -#define CHAP_CHALLENGE 1 -#define CHAP_RESPONSE 2 -#define CHAP_SUCCESS 3 -#define CHAP_FAILURE 4 +#define CHAP_CHALLENGE 1 +#define CHAP_RESPONSE 2 +#define CHAP_SUCCESS 3 +#define CHAP_FAILURE 4 /* - * Challenge lengths + * Challenge lengths (for challenges we send) and other limits. */ +#define MIN_CHALLENGE_LENGTH 32 +#define MAX_CHALLENGE_LENGTH 64 +#define MAX_RESPONSE_LENGTH 16 /* sufficient for MD5 */ -#define MIN_CHALLENGE_LENGTH 64 -#define MAX_CHALLENGE_LENGTH 128 - -#define MAX_SECRET_LEN 128 /* - * Each interface is described by chap structure. + * Each interface is described by a chap structure. */ typedef struct chap_state { - int unit; /* Interface unit number */ - u_char chal_str[MAX_CHALLENGE_LENGTH + 1]; /* challenge string */ - u_char chal_len; /* challenge length */ + int unit; /* Interface unit number */ int clientstate; /* Client state */ int serverstate; /* Server state */ - int flags; /* Flags */ - unsigned char id; /* Current id */ - int timeouttime; /* Timeout time in milliseconds */ - int retransmits; /* Number of retransmissions */ + u_char challenge[MAX_CHALLENGE_LENGTH]; /* last challenge string sent */ + u_char chal_len; /* challenge length */ + u_char chal_id; /* ID of last challenge */ + u_char chal_type; /* hash algorithm for challenges */ + u_char id; /* Current id */ + char *chal_name; /* Our name to use with challenge */ + int chal_interval; /* Time until we challenge peer again */ + int timeouttime; /* Timeout time in seconds */ + int max_transmits; /* Maximum # of challenge transmissions */ + int chal_transmits; /* Number of transmissions of challenge */ + int resp_transmits; /* Number of transmissions of response */ + u_char response[MAX_RESPONSE_LENGTH]; /* Response to send */ + u_char resp_length; /* length of response */ + u_char resp_id; /* ID for response messages */ + u_char resp_type; /* hash algorithm for responses */ + char *resp_name; /* Our name to send with response */ } chap_state; /* - * Client states. + * Client (peer) states. */ -#define CHAPCS_CLOSED 1 /* Connection down */ -#define CHAPCS_CHALLENGE_SENT 2 /* We've sent a challenge */ -#define CHAPCS_OPEN 3 /* We've received an Ack */ +#define CHAPCS_INITIAL 0 /* Lower layer down, not opened */ +#define CHAPCS_CLOSED 1 /* Lower layer up, not opened */ +#define CHAPCS_PENDING 2 /* Auth us to peer when lower up */ +#define CHAPCS_LISTEN 3 /* Listening for a challenge */ +#define CHAPCS_RESPONSE 4 /* Sent response, waiting for status */ +#define CHAPCS_OPEN 5 /* We've received Success */ /* - * Server states. + * Server (authenticator) states. */ -#define CHAPSS_CLOSED 1 /* Connection down */ -#define CHAPSS_LISTEN 2 /* Listening for a challenge */ -#define CHAPSS_OPEN 3 /* We've sent an Ack */ - -/* - * Flags. - */ -#define CHAPF_LOWERUP 0x01 /* The lower level is UP */ -#define CHAPF_AWPPENDING 0x02 /* Auth with peer pending */ -#define CHAPF_APPENDING 0x04 /* Auth peer pending */ -#define CHAPF_UPVALID 0x08 /* values valid */ -#define CHAPF_UPPENDING 0x10 /* values pending */ - +#define CHAPSS_INITIAL 0 /* Lower layer down, not opened */ +#define CHAPSS_CLOSED 1 /* Lower layer up, not opened */ +#define CHAPSS_PENDING 2 /* Auth peer when lower up */ +#define CHAPSS_INITIAL_CHAL 3 /* We've sent the first challenge */ +#define CHAPSS_OPEN 4 /* We've sent a Success msg */ +#define CHAPSS_RECHALLENGE 5 /* We've sent another challenge */ +#define CHAPSS_BADAUTH 6 /* We've sent a Failure msg */ /* * Timeouts. */ -#define CHAP_DEFTIMEOUT 3 /* Timeout time in seconds */ +#define CHAP_DEFTIMEOUT 3 /* Timeout time in seconds */ +#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ extern chap_state chap[]; void ChapInit __ARGS((int)); -void ChapAuthWithPeer __ARGS((int)); -void ChapAuthPeer __ARGS((int)); +void ChapAuthWithPeer __ARGS((int, char *, int)); +void ChapAuthPeer __ARGS((int, char *, int)); void ChapLowerUp __ARGS((int)); void ChapLowerDown __ARGS((int)); void ChapInput __ARGS((int, u_char *, int)); |