48 lines · 867 B · C
RawDownload
#include <u.h>#include <libc.h>#include <authsrv.h>#include <libsec.h> voidpasstodeskey(char key[DESKEYLEN], char *p){	uchar buf[PASSWDLEN], *t;	int i, n; 	memset(buf, ' ', 8);	n = strlen(p);	if(n >= sizeof(buf))		n = sizeof(buf)-1;	memmove(buf, p, n);	buf[n] = 0;	memset(key, 0, DESKEYLEN);	t = buf;	for(;;){		for(i = 0; i < DESKEYLEN; i++)			key[i] = (t[i] >> i) + (t[i+1] << (8 - (i+1)));		if(n <= 8)			return;		n -= 8;		t += 8;		if(n < 8){			t -= 8 - n;			n = 8;		}		encrypt(key, t, 8);	}} voidpasstoaeskey(uchar key[AESKEYLEN], char *p){	static char salt[] = "Plan 9 key derivation";	pbkdf2_x((uchar*)p, strlen(p), (uchar*)salt, sizeof(salt)-1, 9001, key, AESKEYLEN, hmac_sha1, SHA1dlen);} voidpasstokey(Authkey *key, char *pw){	memset(key, 0, sizeof(Authkey));	passtodeskey(key->des, pw);	passtoaeskey(key->aes, pw);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t