58330d7bfa
each time rather than making up a new one. Increase the authname/authkey max sizes to 100 characters. Allow ``authkey'' specifications beginning with ``!''. When a challenge is received, the text following the ``!'' is executed as a program (expanding stuff in the same way that ``sh'' and ``!bg'' do). The program is passed the peer name, peer challenge and local ``authname'' on standard input and is expected to output the name/key combination that should be used to build the CHAP response. This provides support for Secure ID cards (guess what I was given at work recently!) using CHAP. Examples will follow.
53 lines
1.7 KiB
C
53 lines
1.7 KiB
C
/*
|
|
* Written by Toshiharu OHNO (tony-o@iij.ad.jp)
|
|
*
|
|
* Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
|
|
*
|
|
* Redistribution and use in source and binary forms are permitted
|
|
* provided that the above copyright notice and this paragraph are
|
|
* duplicated in all such forms and that any documentation,
|
|
* advertising materials, and other materials related to such
|
|
* distribution and use acknowledge that the software was developed
|
|
* by the Internet Initiative Japan. The name of the
|
|
* IIJ may not be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
* 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.11 1999/02/06 02:54:44 brian Exp $
|
|
*
|
|
* TODO:
|
|
*/
|
|
|
|
struct mbuf;
|
|
struct physical;
|
|
|
|
#define CHAP_CHALLENGE 1
|
|
#define CHAP_RESPONSE 2
|
|
#define CHAP_SUCCESS 3
|
|
#define CHAP_FAILURE 4
|
|
|
|
struct chap {
|
|
struct descriptor desc;
|
|
struct {
|
|
pid_t pid;
|
|
int fd;
|
|
struct {
|
|
char ptr[AUTHLEN * 2 + 3]; /* Allow for \r\n at the end (- NUL) */
|
|
int len;
|
|
} buf;
|
|
} child;
|
|
struct authinfo auth;
|
|
char challenge[CHAPCHALLENGELEN + AUTHLEN];
|
|
unsigned using_MSChap : 1; /* A combination of MD4 & DES */
|
|
};
|
|
|
|
#define descriptor2chap(d) \
|
|
((d)->type == CHAP_DESCRIPTOR ? (struct chap *)(d) : NULL)
|
|
#define auth2chap(a) (struct chap *)((char *)a - (int)&((struct chap *)0)->auth)
|
|
|
|
extern void chap_Init(struct chap *, struct physical *);
|
|
extern void chap_ReInit(struct chap *);
|
|
extern void chap_Input(struct physical *, struct mbuf *);
|