factotum: remove legacy wep protocol

This commit is contained in:
cinap_lenrek 2018-01-02 04:27:23 +01:00
parent 4edc761024
commit 1d7bb80793
4 changed files with 1 additions and 134 deletions

View file

@ -225,8 +225,6 @@ extern Proto chap, mschap, mschapv2, mschap2; /* chap.c */
extern Proto p9cr, vnc; /* p9cr.c */
extern Proto pass; /* pass.c */
extern Proto rsa; /* rsa.c */
extern Proto wep; /* wep.c */
/* extern Proto srs; /* srs.c */
extern Proto httpdigest; /* httpdigest.c */
extern Proto ecdsa; /* ecdsa.c */
extern Proto wpapsk; /* wpapsk.c */

View file

@ -17,7 +17,7 @@ extern Srv fs;
static void notifyf(void*, char*);
static void private(void);
char Easproto[] = "auth server protocol botch";
char Easproto[] = "auth server protocol botch";
char Ebadarg[] = "invalid argument";
char Ebadkey[] = "bad key";
char Enegotiation[] = "negotiation failed, no common protocols or keys";
@ -38,10 +38,8 @@ prototab[] =
&p9sk1,
&dp9ik,
&pass,
/* &srs, */
&rsa,
&vnc,
&wep,
&ecdsa,
&wpapsk,
nil,

View file

@ -12,7 +12,6 @@ PROTO=\
p9sk1.$O\
pass.$O\
rsa.$O\
wep.$O\
ecdsa.$O\
wpapsk.$O\

View file

@ -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?",
};