RTEMS
5.1
cpukit
pppd
chap.h
1
/*
2
* chap.h - Challenge Handshake Authentication Protocol definitions.
3
*
4
* Copyright (c) 1993 The Australian National University.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms are permitted
8
* provided that the above copyright notice and this paragraph are
9
* duplicated in all such forms and that any documentation,
10
* advertising materials, and other materials related to such
11
* distribution and use acknowledge that the software was developed
12
* by the Australian National University. The name of the University
13
* may not be used to endorse or promote products derived from this
14
* software without specific prior written permission.
15
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18
*
19
* Copyright (c) 1991 Gregory M. Christy
20
* All rights reserved.
21
*
22
* Redistribution and use in source and binary forms are permitted
23
* provided that the above copyright notice and this paragraph are
24
* duplicated in all such forms and that any documentation,
25
* advertising materials, and other materials related to such
26
* distribution and use acknowledge that the software was developed
27
* by the author.
28
*
29
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
30
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
31
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
32
*
33
* $Id$
34
*/
35
36
#ifndef __CHAP_INCLUDE__
37
38
/* Code + ID + length */
39
#define CHAP_HEADERLEN 4
40
41
/*
42
* CHAP codes.
43
*/
44
45
#define CHAP_DIGEST_MD5 5
/* use MD5 algorithm */
46
#define MD5_SIGNATURE_SIZE 16
/* 16 bytes in a MD5 message digest */
47
#define CHAP_MICROSOFT 0x80
/* use Microsoft-compatible alg. */
48
#define MS_CHAP_RESPONSE_LEN 49
/* Response length for MS-CHAP */
49
50
#define CHAP_CHALLENGE 1
51
#define CHAP_RESPONSE 2
52
#define CHAP_SUCCESS 3
53
#define CHAP_FAILURE 4
54
55
/*
56
* Challenge lengths (for challenges we send) and other limits.
57
*/
58
#define MIN_CHALLENGE_LENGTH 16
59
#define MAX_CHALLENGE_LENGTH 24
60
#define MAX_RESPONSE_LENGTH 64
/* sufficient for MD5 or MS-CHAP */
61
62
/*
63
* Each interface is described by a chap structure.
64
*/
65
66
typedef
struct
chap_state
{
67
int
unit;
/* Interface unit number */
68
int
clientstate;
/* Client state */
69
int
serverstate;
/* Server state */
70
u_char challenge[MAX_CHALLENGE_LENGTH];
/* last challenge string sent */
71
u_char chal_len;
/* challenge length */
72
u_char chal_id;
/* ID of last challenge */
73
u_char chal_type;
/* hash algorithm for challenges */
74
u_char id;
/* Current id */
75
char
*chal_name;
/* Our name to use with challenge */
76
int
chal_interval;
/* Time until we challenge peer again */
77
int
timeouttime;
/* Timeout time in seconds */
78
int
max_transmits;
/* Maximum # of challenge transmissions */
79
int
chal_transmits;
/* Number of transmissions of challenge */
80
int
resp_transmits;
/* Number of transmissions of response */
81
u_char response[MAX_RESPONSE_LENGTH];
/* Response to send */
82
u_char resp_length;
/* length of response */
83
u_char resp_id;
/* ID for response messages */
84
u_char resp_type;
/* hash algorithm for responses */
85
char
*resp_name;
/* Our name to send with response */
86
}
chap_state
;
87
88
89
/*
90
* Client (peer) states.
91
*/
92
#define CHAPCS_INITIAL 0
/* Lower layer down, not opened */
93
#define CHAPCS_CLOSED 1
/* Lower layer up, not opened */
94
#define CHAPCS_PENDING 2
/* Auth us to peer when lower up */
95
#define CHAPCS_LISTEN 3
/* Listening for a challenge */
96
#define CHAPCS_RESPONSE 4
/* Sent response, waiting for status */
97
#define CHAPCS_OPEN 5
/* We've received Success */
98
99
/*
100
* Server (authenticator) states.
101
*/
102
#define CHAPSS_INITIAL 0
/* Lower layer down, not opened */
103
#define CHAPSS_CLOSED 1
/* Lower layer up, not opened */
104
#define CHAPSS_PENDING 2
/* Auth peer when lower up */
105
#define CHAPSS_INITIAL_CHAL 3
/* We've sent the first challenge */
106
#define CHAPSS_OPEN 4
/* We've sent a Success msg */
107
#define CHAPSS_RECHALLENGE 5
/* We've sent another challenge */
108
#define CHAPSS_BADAUTH 6
/* We've sent a Failure msg */
109
110
/*
111
* Timeouts.
112
*/
113
#define CHAP_DEFTIMEOUT 5
/* Timeout time in seconds */
114
#define CHAP_DEFTRANSMITS 10
/* max # times to send challenge */
115
116
extern
chap_state
chap[];
117
118
void
ChapAuthWithPeer(
int
,
char
*,
int
);
119
void
ChapAuthPeer(
int
,
char
*,
int
);
120
121
extern
struct
protent
chap_protent;
122
123
#define __CHAP_INCLUDE__
124
#endif
/* __CHAP_INCLUDE__ */
protent
Definition:
pppd.h:249
chap_state
Definition:
chap.h:66
Generated by
1.8.15