1 #include <u.h> 2 #include <libc.h> 3 #include <authsrv.h> 4 5 int opasstokey(char * key,char * p)6opasstokey(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 } 30