plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

opasstokey.c (448B)


      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 }