mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
PPP, MPPE, moved MPPE global variables from MSCHAP to ppp_pcb
This commit is contained in:
parent
ab46ac9bd8
commit
2a005c2f11
@ -71,11 +71,6 @@
|
|||||||
#define MS_CHAP2_FLAGS 48
|
#define MS_CHAP2_FLAGS 48
|
||||||
|
|
||||||
#if MPPE_SUPPORT
|
#if MPPE_SUPPORT
|
||||||
#include "mppe.h" /* MPPE_MAX_KEY_LEN */
|
|
||||||
extern u_char mppe_send_key[MPPE_MAX_KEY_LEN];
|
|
||||||
extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN];
|
|
||||||
extern int mppe_keys_set;
|
|
||||||
|
|
||||||
#if 0 /* UNUSED */
|
#if 0 /* UNUSED */
|
||||||
/* These values are the RADIUS attribute values--see RFC 2548. */
|
/* These values are the RADIUS attribute values--see RFC 2548. */
|
||||||
#define MPPE_ENC_POL_ENC_ALLOWED 1
|
#define MPPE_ENC_POL_ENC_ALLOWED 1
|
||||||
|
@ -366,7 +366,12 @@ struct ppp_pcb_s {
|
|||||||
unsigned int :2; /* 2 bit of padding */
|
unsigned int :2; /* 2 bit of padding */
|
||||||
#endif /* PPP_IPV6_SUPPORT */
|
#endif /* PPP_IPV6_SUPPORT */
|
||||||
unsigned int lcp_echo_timer_running :1; /* set if a timer is running */
|
unsigned int lcp_echo_timer_running :1; /* set if a timer is running */
|
||||||
unsigned int :2; /* 2 bits of padding to round out to 8 bits */
|
#if MPPE_SUPPORT
|
||||||
|
unsigned int mppe_keys_set :1; /* Have the MPPE keys been set? */
|
||||||
|
#else /* MPPE_SUPPORT */
|
||||||
|
unsigned int :1; /* 1 bit of padding */
|
||||||
|
#endif /* MPPE_SUPPORT */
|
||||||
|
unsigned int :1; /* 1 bit of padding to round out to 8 bits */
|
||||||
|
|
||||||
#if PPP_AUTH_SUPPORT
|
#if PPP_AUTH_SUPPORT
|
||||||
/* auth data */
|
/* auth data */
|
||||||
@ -416,6 +421,8 @@ struct ppp_pcb_s {
|
|||||||
#if MPPE_SUPPORT
|
#if MPPE_SUPPORT
|
||||||
ppp_mppe_state mppe_comp; /* MPPE "compressor" structure */
|
ppp_mppe_state mppe_comp; /* MPPE "compressor" structure */
|
||||||
ppp_mppe_state mppe_decomp; /* MPPE "decompressor" structure */
|
ppp_mppe_state mppe_decomp; /* MPPE "decompressor" structure */
|
||||||
|
u8_t mppe_send_key[MPPE_MAX_KEY_LEN];
|
||||||
|
u8_t mppe_recv_key[MPPE_MAX_KEY_LEN];
|
||||||
#endif /* MPPE_SUPPORT */
|
#endif /* MPPE_SUPPORT */
|
||||||
#endif /* CCP_SUPPORT */
|
#endif /* CCP_SUPPORT */
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
#include "netif/ppp/ccp.h"
|
#include "netif/ppp/ccp.h"
|
||||||
|
|
||||||
#if MPPE_SUPPORT
|
#if MPPE_SUPPORT
|
||||||
#include "netif/ppp/chap_ms.h" /* mppe_xxxx_key, mppe_keys_set */
|
|
||||||
#include "netif/ppp/lcp.h" /* lcp_close(), lcp_fsm */
|
#include "netif/ppp/lcp.h" /* lcp_close(), lcp_fsm */
|
||||||
#endif /* MPPE_SUPPORT */
|
#endif /* MPPE_SUPPORT */
|
||||||
|
|
||||||
@ -587,7 +586,7 @@ static void ccp_resetci(fsm *f) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* A plugin (eg radius) may not have obtained key material. */
|
/* A plugin (eg radius) may not have obtained key material. */
|
||||||
if (!mppe_keys_set) {
|
if (!pcb->mppe_keys_set) {
|
||||||
ppp_error("MPPE required, but keys are not available. "
|
ppp_error("MPPE required, but keys are not available. "
|
||||||
"Possible plugin problem?");
|
"Possible plugin problem?");
|
||||||
lcp_close(pcb, "MPPE required but not available");
|
lcp_close(pcb, "MPPE required but not available");
|
||||||
@ -772,7 +771,7 @@ static void ccp_addci(fsm *f, u_char *p, int *lenp) {
|
|||||||
p[1] = opt_buf[1] = CILEN_MPPE;
|
p[1] = opt_buf[1] = CILEN_MPPE;
|
||||||
MPPE_OPTS_TO_CI(go->mppe, &p[2]);
|
MPPE_OPTS_TO_CI(go->mppe, &p[2]);
|
||||||
MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
|
MPPE_OPTS_TO_CI(go->mppe, &opt_buf[2]);
|
||||||
MEMCPY(&opt_buf[CILEN_MPPE], mppe_recv_key, MPPE_MAX_KEY_LEN);
|
MEMCPY(&opt_buf[CILEN_MPPE], pcb->mppe_recv_key, MPPE_MAX_KEY_LEN);
|
||||||
/* ccp_test() can't fail, we've already tested it! */
|
/* ccp_test() can't fail, we've already tested it! */
|
||||||
ccp_test(pcb, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0);
|
ccp_test(pcb, opt_buf, CILEN_MPPE + MPPE_MAX_KEY_LEN, 0);
|
||||||
p += CILEN_MPPE;
|
p += CILEN_MPPE;
|
||||||
@ -1204,7 +1203,7 @@ static int ccp_reqci(fsm *f, u_char *p, int *lenp, int dont_nak) {
|
|||||||
int mtu;
|
int mtu;
|
||||||
|
|
||||||
MEMCPY(opt_buf, p, CILEN_MPPE);
|
MEMCPY(opt_buf, p, CILEN_MPPE);
|
||||||
MEMCPY(&opt_buf[CILEN_MPPE], mppe_send_key,
|
MEMCPY(&opt_buf[CILEN_MPPE], pcb->mppe_send_key,
|
||||||
MPPE_MAX_KEY_LEN);
|
MPPE_MAX_KEY_LEN);
|
||||||
if (ccp_test(pcb, opt_buf,
|
if (ccp_test(pcb, opt_buf,
|
||||||
CILEN_MPPE + MPPE_MAX_KEY_LEN, 1) <= 0) {
|
CILEN_MPPE + MPPE_MAX_KEY_LEN, 1) <= 0) {
|
||||||
@ -1484,8 +1483,8 @@ static void ccp_up(fsm *f) {
|
|||||||
ppp_notice("%s transmit compression enabled", method_name(ho, NULL));
|
ppp_notice("%s transmit compression enabled", method_name(ho, NULL));
|
||||||
#if MPPE_SUPPORT
|
#if MPPE_SUPPORT
|
||||||
if (go->mppe) {
|
if (go->mppe) {
|
||||||
BZERO(mppe_recv_key, MPPE_MAX_KEY_LEN);
|
BZERO(pcb->mppe_recv_key, MPPE_MAX_KEY_LEN);
|
||||||
BZERO(mppe_send_key, MPPE_MAX_KEY_LEN);
|
BZERO(pcb->mppe_send_key, MPPE_MAX_KEY_LEN);
|
||||||
continue_networks(pcb); /* Bring up IP et al */
|
continue_networks(pcb); /* Bring up IP et al */
|
||||||
}
|
}
|
||||||
#endif /* MPPE_SUPPORT */
|
#endif /* MPPE_SUPPORT */
|
||||||
|
@ -146,10 +146,6 @@ bool ms_lanman = 0; /* Use LanMan password instead of NT */
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if MPPE_SUPPORT
|
#if MPPE_SUPPORT
|
||||||
u_char mppe_send_key[MPPE_MAX_KEY_LEN];
|
|
||||||
u_char mppe_recv_key[MPPE_MAX_KEY_LEN];
|
|
||||||
int mppe_keys_set = 0; /* Have the MPPE keys been set? */
|
|
||||||
|
|
||||||
#ifdef DEBUGMPPEKEY
|
#ifdef DEBUGMPPEKEY
|
||||||
/* For MPPE debug */
|
/* For MPPE debug */
|
||||||
/* Use "[]|}{?/><,`!2&&(" (sans quotes) for RFC 3079 MS-CHAPv2 test value */
|
/* Use "[]|}{?/><,`!2&&(" (sans quotes) for RFC 3079 MS-CHAPv2 test value */
|
||||||
@ -671,10 +667,10 @@ static void mppe_set_keys(ppp_pcb *pcb, u_char *rchallenge, u_char PasswordHashH
|
|||||||
sha1_finish(&sha1Context, Digest);
|
sha1_finish(&sha1Context, Digest);
|
||||||
|
|
||||||
/* Same key in both directions. */
|
/* Same key in both directions. */
|
||||||
MEMCPY(mppe_send_key, Digest, sizeof(mppe_send_key));
|
MEMCPY(pcb->mppe_send_key, Digest, MPPE_MAX_KEY_LEN);
|
||||||
MEMCPY(mppe_recv_key, Digest, sizeof(mppe_recv_key));
|
MEMCPY(pcb->mppe_recv_key, Digest, MPPE_MAX_KEY_LEN);
|
||||||
|
|
||||||
mppe_keys_set = 1;
|
pcb->mppe_keys_set = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -767,7 +763,7 @@ static void mppe_set_keys2(ppp_pcb *pcb, u_char PasswordHashHash[MD4_SIGNATURE_S
|
|||||||
sha1_update(&sha1Context, SHApad2, sizeof(SHApad2));
|
sha1_update(&sha1Context, SHApad2, sizeof(SHApad2));
|
||||||
sha1_finish(&sha1Context, Digest);
|
sha1_finish(&sha1Context, Digest);
|
||||||
|
|
||||||
MEMCPY(mppe_send_key, Digest, sizeof(mppe_send_key));
|
MEMCPY(pcb->mppe_send_key, Digest, MPPE_MAX_KEY_LEN);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* generate recv key
|
* generate recv key
|
||||||
@ -783,9 +779,9 @@ static void mppe_set_keys2(ppp_pcb *pcb, u_char PasswordHashHash[MD4_SIGNATURE_S
|
|||||||
sha1_update(&sha1Context, SHApad2, sizeof(SHApad2));
|
sha1_update(&sha1Context, SHApad2, sizeof(SHApad2));
|
||||||
sha1_finish(&sha1Context, Digest);
|
sha1_finish(&sha1Context, Digest);
|
||||||
|
|
||||||
MEMCPY(mppe_recv_key, Digest, sizeof(mppe_recv_key));
|
MEMCPY(pcb->mppe_recv_key, Digest, MPPE_MAX_KEY_LEN);
|
||||||
|
|
||||||
mppe_keys_set = 1;
|
pcb->mppe_keys_set = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user