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