summaryrefslogtreecommitdiff
path: root/libexec/pppd/chap.h
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/pppd/chap.h')
-rw-r--r--libexec/pppd/chap.h93
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));