factotum: remove legacy wep protocol
This commit is contained in:
parent
4edc761024
commit
1d7bb80793
4 changed files with 1 additions and 134 deletions
|
@ -225,8 +225,6 @@ extern Proto chap, mschap, mschapv2, mschap2; /* chap.c */
|
||||||
extern Proto p9cr, vnc; /* p9cr.c */
|
extern Proto p9cr, vnc; /* p9cr.c */
|
||||||
extern Proto pass; /* pass.c */
|
extern Proto pass; /* pass.c */
|
||||||
extern Proto rsa; /* rsa.c */
|
extern Proto rsa; /* rsa.c */
|
||||||
extern Proto wep; /* wep.c */
|
|
||||||
/* extern Proto srs; /* srs.c */
|
|
||||||
extern Proto httpdigest; /* httpdigest.c */
|
extern Proto httpdigest; /* httpdigest.c */
|
||||||
extern Proto ecdsa; /* ecdsa.c */
|
extern Proto ecdsa; /* ecdsa.c */
|
||||||
extern Proto wpapsk; /* wpapsk.c */
|
extern Proto wpapsk; /* wpapsk.c */
|
||||||
|
|
|
@ -17,7 +17,7 @@ extern Srv fs;
|
||||||
static void notifyf(void*, char*);
|
static void notifyf(void*, char*);
|
||||||
static void private(void);
|
static void private(void);
|
||||||
|
|
||||||
char Easproto[] = "auth server protocol botch";
|
char Easproto[] = "auth server protocol botch";
|
||||||
char Ebadarg[] = "invalid argument";
|
char Ebadarg[] = "invalid argument";
|
||||||
char Ebadkey[] = "bad key";
|
char Ebadkey[] = "bad key";
|
||||||
char Enegotiation[] = "negotiation failed, no common protocols or keys";
|
char Enegotiation[] = "negotiation failed, no common protocols or keys";
|
||||||
|
@ -38,10 +38,8 @@ prototab[] =
|
||||||
&p9sk1,
|
&p9sk1,
|
||||||
&dp9ik,
|
&dp9ik,
|
||||||
&pass,
|
&pass,
|
||||||
/* &srs, */
|
|
||||||
&rsa,
|
&rsa,
|
||||||
&vnc,
|
&vnc,
|
||||||
&wep,
|
|
||||||
&ecdsa,
|
&ecdsa,
|
||||||
&wpapsk,
|
&wpapsk,
|
||||||
nil,
|
nil,
|
||||||
|
|
|
@ -12,7 +12,6 @@ PROTO=\
|
||||||
p9sk1.$O\
|
p9sk1.$O\
|
||||||
pass.$O\
|
pass.$O\
|
||||||
rsa.$O\
|
rsa.$O\
|
||||||
wep.$O\
|
|
||||||
ecdsa.$O\
|
ecdsa.$O\
|
||||||
wpapsk.$O\
|
wpapsk.$O\
|
||||||
|
|
||||||
|
|
|
@ -1,128 +0,0 @@
|
||||||
/*
|
|
||||||
* The caller supplies the device, we do the flavoring. There
|
|
||||||
* are no phases, everything happens in the init routine.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "dat.h"
|
|
||||||
|
|
||||||
typedef struct State State;
|
|
||||||
struct State
|
|
||||||
{
|
|
||||||
Key *key;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
HavePass,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int
|
|
||||||
wepinit(Proto*, Fsstate *fss)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
Key *k;
|
|
||||||
Keyinfo ki;
|
|
||||||
State *s;
|
|
||||||
|
|
||||||
/* find a key with at least one password */
|
|
||||||
mkkeyinfo(&ki, fss, nil);
|
|
||||||
ret = findkey(&k, &ki, "!key1?");
|
|
||||||
if(ret != RpcOk)
|
|
||||||
ret = findkey(&k, &ki, "!key2?");
|
|
||||||
if(ret != RpcOk)
|
|
||||||
ret = findkey(&k, &ki, "!key3?");
|
|
||||||
if(ret != RpcOk)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
setattrs(fss->attr, k->attr);
|
|
||||||
s = emalloc(sizeof(*s));
|
|
||||||
s->key = k;
|
|
||||||
fss->ps = s;
|
|
||||||
fss->phase = HavePass;
|
|
||||||
|
|
||||||
return RpcOk;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
wepclose(Fsstate *fss)
|
|
||||||
{
|
|
||||||
State *s;
|
|
||||||
|
|
||||||
s = fss->ps;
|
|
||||||
if(s->key)
|
|
||||||
closekey(s->key);
|
|
||||||
free(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
wepread(Fsstate *fss, void*, uint*)
|
|
||||||
{
|
|
||||||
return phaseerror(fss, "read");
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
wepwrite(Fsstate *fss, void *va, uint n)
|
|
||||||
{
|
|
||||||
char *data = va;
|
|
||||||
State *s;
|
|
||||||
char dev[64];
|
|
||||||
int fd, cfd;
|
|
||||||
int rv;
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
/* get the device */
|
|
||||||
if(n > sizeof(dev)-5){
|
|
||||||
werrstr("device too long");
|
|
||||||
return RpcErrstr;
|
|
||||||
}
|
|
||||||
memmove(dev, data, n);
|
|
||||||
dev[n] = 0;
|
|
||||||
s = fss->ps;
|
|
||||||
|
|
||||||
/* legal? */
|
|
||||||
if(dev[0] != '#' || dev[1] != 'l'){
|
|
||||||
werrstr("%s not an ether device", dev);
|
|
||||||
return RpcErrstr;
|
|
||||||
}
|
|
||||||
strcat(dev, "!0");
|
|
||||||
fd = dial(dev, 0, 0, &cfd);
|
|
||||||
if(fd < 0)
|
|
||||||
return RpcErrstr;
|
|
||||||
|
|
||||||
/* flavor it with passwords, essid, and turn on wep */
|
|
||||||
rv = RpcErrstr;
|
|
||||||
p = _strfindattr(s->key->privattr, "!key1");
|
|
||||||
if(p != nil)
|
|
||||||
if(fprint(cfd, "key1 %s", p) < 0)
|
|
||||||
goto out;
|
|
||||||
p = _strfindattr(s->key->privattr, "!key2");
|
|
||||||
if(p != nil)
|
|
||||||
if(fprint(cfd, "key2 %s", p) < 0)
|
|
||||||
goto out;
|
|
||||||
p = _strfindattr(s->key->privattr, "!key3");
|
|
||||||
if(p != nil)
|
|
||||||
if(fprint(cfd, "key3 %s", p) < 0)
|
|
||||||
goto out;
|
|
||||||
p = _strfindattr(fss->attr, "essid");
|
|
||||||
if(p != nil)
|
|
||||||
if(fprint(cfd, "essid %s", p) < 0)
|
|
||||||
goto out;
|
|
||||||
if(fprint(cfd, "crypt on") < 0)
|
|
||||||
goto out;
|
|
||||||
rv = RpcOk;
|
|
||||||
out:
|
|
||||||
close(fd);
|
|
||||||
close(cfd);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
Proto wep =
|
|
||||||
{
|
|
||||||
.name= "wep",
|
|
||||||
.init= wepinit,
|
|
||||||
.write= wepwrite,
|
|
||||||
.read= wepread,
|
|
||||||
.close= wepclose,
|
|
||||||
.addkey= replacekey,
|
|
||||||
.keyprompt= "!key1? !key2? !key3? essid?",
|
|
||||||
};
|
|
Loading…
Add table
Add a link
Reference in a new issue