passtokey.c (488B)
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 }