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