Fix the password used when acting as LAC
When acting as LNS, we have to answer challenges with our own secret, but when acting as LAC, we have to answer challenges with the LNS secret, not ours.
This commit is contained in:
parent
8e7bfa9a77
commit
7bf791816c
3 changed files with 44 additions and 12 deletions
15
l2tplac.c
15
l2tplac.c
|
|
@ -451,6 +451,21 @@ void lac_calc_rlns_auth(tunnelidt t, uint8_t id, uint8_t *out)
|
|||
MD5_Final(out, &ctx);
|
||||
}
|
||||
|
||||
// Calcul our LNS auth
|
||||
void lac_calc_our_auth(tunnelidt t, uint8_t *challenge, uint8_t id, uint16_t challenge_length, uint8_t *out)
|
||||
{
|
||||
MD5_CTX ctx;
|
||||
confrlnsidt idrlns;
|
||||
|
||||
idrlns = tunnel[t].isremotelns;
|
||||
|
||||
MD5_Init(&ctx);
|
||||
MD5_Update(&ctx, &id, 1);
|
||||
MD5_Update(&ctx, pconfigrlns[idrlns].l2tp_secret, strlen(pconfigrlns[idrlns].l2tp_secret));
|
||||
MD5_Update(&ctx, challenge, challenge_length);
|
||||
MD5_Final(out, &ctx);
|
||||
}
|
||||
|
||||
// Forward session to LAC or Remote LNS
|
||||
int lac_session_forward(uint8_t *buf, int len, sessionidt sess, uint16_t proto, in_addr_t s_addr, int sin_port, uint16_t indexudpfd)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue