1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier #include <authsrv.h>
4*9a747e4fSDavid du Colombier
5*9a747e4fSDavid du Colombier int
passtokey(char * key,char * p)6*9a747e4fSDavid du Colombier passtokey(char *key, char *p)
7*9a747e4fSDavid du Colombier {
8*9a747e4fSDavid du Colombier uchar buf[ANAMELEN], *t;
9*9a747e4fSDavid du Colombier int i, n;
10*9a747e4fSDavid du Colombier
11*9a747e4fSDavid du Colombier n = strlen(p);
12*9a747e4fSDavid du Colombier if(n >= ANAMELEN)
13*9a747e4fSDavid du Colombier n = ANAMELEN-1;
14*9a747e4fSDavid du Colombier memset(buf, ' ', 8);
15*9a747e4fSDavid du Colombier t = buf;
16*9a747e4fSDavid du Colombier strncpy((char*)t, p, n);
17*9a747e4fSDavid du Colombier t[n] = 0;
18*9a747e4fSDavid du Colombier memset(key, 0, DESKEYLEN);
19*9a747e4fSDavid du Colombier for(;;){
20*9a747e4fSDavid du Colombier for(i = 0; i < DESKEYLEN; i++)
21*9a747e4fSDavid du Colombier key[i] = (t[i] >> i) + (t[i+1] << (8 - (i+1)));
22*9a747e4fSDavid du Colombier if(n <= 8)
23*9a747e4fSDavid du Colombier return 1;
24*9a747e4fSDavid du Colombier n -= 8;
25*9a747e4fSDavid du Colombier t += 8;
26*9a747e4fSDavid du Colombier if(n < 8){
27*9a747e4fSDavid du Colombier t -= 8 - n;
28*9a747e4fSDavid du Colombier n = 8;
29*9a747e4fSDavid du Colombier }
30*9a747e4fSDavid du Colombier encrypt(key, t, 8);
31*9a747e4fSDavid du Colombier }
32*9a747e4fSDavid du Colombier }
33