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