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