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