X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fchap_ms.h;h=168c0be2f4748268bd7870516858b5ab2e706dd6;hb=4abe4296f0eddbb2b6ff11dbbd27100156c85f87;hp=251a4ba01de1f78826f4aee98f8978634c906a0c;hpb=1c6cc0f0cd212fb2c80d7cace6525557b0677dae;p=ppp.git diff --git a/pppd/chap_ms.h b/pppd/chap_ms.h index 251a4ba..168c0be 100644 --- a/pppd/chap_ms.h +++ b/pppd/chap_ms.h @@ -27,7 +27,7 @@ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $Id: chap_ms.h,v 1.9 2002/12/24 03:43:35 fcusack Exp $ + * $Id: chap_ms.h,v 1.12 2004/11/09 22:49:05 paulus Exp $ */ #ifndef __CHAPMS_INCLUDE__ @@ -37,6 +37,8 @@ #define MS_CHAP_RESPONSE_LEN 49 /* Response length for MS-CHAP */ #define MS_CHAP2_RESPONSE_LEN 49 /* Response length for MS-CHAPv2 */ +#define MS_AUTH_RESPONSE_LENGTH 40 /* MS-CHAPv2 authenticator response, */ + /* as ASCII */ /* E=eeeeeeeeee error codes for MS-CHAP failure messages. */ #define MS_CHAP_ERROR_RESTRICTED_LOGON_HOURS 646 @@ -46,6 +48,17 @@ #define MS_CHAP_ERROR_AUTHENTICATION_FAILURE 691 #define MS_CHAP_ERROR_CHANGING_PASSWORD 709 +/* + * Apparently gcc on ARM gives all structures 4-byte alignment + * by default. This tells gcc that these structures may be + * unaligned and may not have extra padding inside them. + */ +#ifdef __GNUC__ +#define PACKED __attribute__((__packed__)) +#else +#define PACKED +#endif + /* * Use MS_CHAP_RESPONSE_LEN, rather than sizeof(MS_ChapResponse), * in case this struct gets padded. @@ -54,7 +67,7 @@ typedef struct { u_char LANManResp[24]; u_char NTResp[24]; u_char UseNT[1]; /* If 1, ignore the LANMan response field */ -} MS_ChapResponse; +} MS_ChapResponse PACKED; /* * Use MS_CHAP2_RESPONSE_LEN, rather than sizeof(MS_Chap2Response), @@ -65,7 +78,7 @@ typedef struct { u_char Reserved[8]; /* Must be zero */ u_char NTResp[24]; u_char Flags[1]; /* Must be zero */ -} MS_Chap2Response; +} MS_Chap2Response PACKED; #ifdef MPPE #include /* MPPE_MAX_KEY_LEN */ @@ -87,13 +100,23 @@ extern void set_mppe_enc_types(int, int); #define MS_CHAP2_AUTHENTICATEE 0 #define MS_CHAP2_AUTHENTICATOR 1 -#include "chap.h" /* chap_state, et al */ -void ChapMS __P((chap_state *, u_char *, char *, int, MS_ChapResponse *)); -void ChapMS2 __P((chap_state *, u_char *, u_char *, char *, char *, int, +void ChapMS __P((u_char *, char *, int, MS_ChapResponse *)); +void ChapMS2 __P((u_char *, u_char *, char *, char *, int, MS_Chap2Response *, u_char[MS_AUTH_RESPONSE_LENGTH+1], int)); #ifdef MPPE void mppe_set_keys __P((u_char *, u_char[MD4_SIGNATURE_SIZE])); +void mppe_set_keys2(u_char PasswordHashHash[MD4_SIGNATURE_SIZE], + u_char NTResponse[24], int IsServer); #endif +void ChallengeHash __P((u_char[16], u_char *, char *, u_char[8])); + +void GenerateAuthenticatorResponse(u_char PasswordHashHash[MD4_SIGNATURE_SIZE], + u_char NTResponse[24], u_char PeerChallenge[16], + u_char *rchallenge, char *username, + u_char authResponse[MS_AUTH_RESPONSE_LENGTH+1]); + +void chapms_init(void); + #define __CHAPMS_INCLUDE__ #endif /* __CHAPMS_INCLUDE__ */