rsc | 4180d05 | 2004-06-17 03:28:08 +0000 | [diff] [blame] | 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 | } |