plan 9 kernel history: overview | file list | diff list

1998/0417/port/devssl.c (diff list | history)

1998/0327/sys/src/9/port/devssl.c:72,771998/0417/sys/src/9/port/devssl.c:72,79 (short | long | prev | next)
Add encalgs, hashalgs files.
rsc Fri Mar 4 12:44:25 2005
1996/1029    
int	dshiwat; 
int	maxdstate = 20; 
Dstate** dstate; 
1998/0417    
char	*encalgs; 
char	*hashalgs; 
1996/1029    
 
1995/1213    
enum 
{ 
1998/0327/sys/src/9/port/devssl.c:81,921998/0417/sys/src/9/port/devssl.c:83,97
1995/1213    
 
enum{ 
1996/1029    
	Qtopdir		= 1,	/* top level directory */ 
1998/0417    
	Qprotodir, 
1996/1029    
	Qclonus, 
	Qconvdir,		/* directory for a conversation */ 
	Qdata, 
	Qctl, 
	Qsecretin, 
	Qsecretout 
1998/0417    
	Qsecretout, 
	Qencalgs, 
	Qhashalgs, 
1995/1213    
}; 
 
1996/1029    
#define TYPE(x) 	((x).path & 0xf) 
1998/0327/sys/src/9/port/devssl.c:117,1221998/0417/sys/src/9/port/devssl.c:122,133
1996/1029    
	q.vers = 0; 
	switch(TYPE(c->qid)) { 
	case Qtopdir: 
1998/0417    
		if(s > 0) 
			return -1; 
		q.path = QID(0, Qprotodir)|CHDIR; 
		devdir(c, q, "ssl", 0, eve, 0555, dp); 
		return 1; 
	case Qprotodir: 
1996/1029    
		if(s < dshiwat) { 
			sprint(name, "%d", s); 
			q.path = QID(s, Qconvdir)|CHDIR; 
1998/0327/sys/src/9/port/devssl.c:158,1631998/0417/sys/src/9/port/devssl.c:169,182
1996/1029    
			q.path = QID(CONV(c->qid), Qsecretout); 
			p = "secretout"; 
			break; 
1998/0417    
		case 4: 
			q.path = QID(CONV(c->qid), Qencalgs); 
			p = "encalgs"; 
			break; 
		case 5: 
			q.path = QID(CONV(c->qid), Qhashalgs); 
			p = "hashalgs"; 
			break; 
1996/1029    
		} 
		devdir(c, q, p, 0, nm, 0660, dp); 
		return 1; 
1998/0327/sys/src/9/port/devssl.c:165,1771998/0417/sys/src/9/port/devssl.c:184,189
1996/1029    
	return -1; 
} 
 
1997/0327    
static void 
1995/1213    
sslinit(void) 
{ 
1997/0618    
	if((dstate = smalloc(sizeof(Dstate*) * maxdstate)) == 0) 
1996/1029    
		panic("sslinit"); 
1995/1213    
} 
                 
1997/0327    
static Chan* 
1996/0531    
sslattach(void *spec) 
1995/1213    
{ 
1998/0327/sys/src/9/port/devssl.c:219,2241998/0417/sys/src/9/port/devssl.c:231,237
1996/1029    
	default: 
		panic("sslopen"); 
	case Qtopdir: 
1998/0417    
	case Qprotodir: 
1996/1029    
	case Qconvdir: 
		if(omode != OREAD) 
			error(Eperm); 
1998/0327/sys/src/9/port/devssl.c:252,2571998/0417/sys/src/9/port/devssl.c:265,275
1996/1029    
		unlock(&dslock); 
		poperror(); 
		break; 
1998/0417    
	case Qencalgs: 
	case Qhashalgs: 
		if(omode != OREAD) 
			error(Eperm); 
		break; 
1996/1029    
	} 
	c->mode = openmode(omode); 
	c->flag |= COPEN; 
1998/0327/sys/src/9/port/devssl.c:534,5391998/0417/sys/src/9/port/devssl.c:552,563
1996/1029    
	case Qdata: 
		b.b = sslbread(c, n, offset); 
		break; 
1998/0417    
	case Qencalgs: 
		return readstr(offset, a, n, encalgs); 
		break; 
	case Qhashalgs: 
		return readstr(offset, a, n, hashalgs); 
		break; 
1995/1213    
	} 
 
1996/0223    
	if(waserror()){ 
1998/0327/sys/src/9/port/devssl.c:920,9251998/0417/sys/src/9/port/devssl.c:944,989
1996/1029    
	qunlock(&s.s->out.q); 
	poperror(); 
	return n; 
1998/0417    
} 
 
static void 
sslinit(void) 
{ 
	struct Encalg *e; 
	struct Hashalg *h; 
	int n; 
	char *cp; 
 
	if((dstate = smalloc(sizeof(Dstate*) * maxdstate)) == 0) 
		panic("sslinit"); 
 
	n = 1; 
	for(e = encrypttab; e->name != nil; e++) 
		n += strlen(e->name) + 1; 
	cp = encalgs = smalloc(n); 
	for(e = encrypttab;;){ 
		strcpy(cp, e->name); 
		cp += strlen(e->name); 
		e++; 
		if(e->name == nil) 
			break; 
		*cp++ = ' '; 
	} 
	*cp = 0; 
 
	n = 1; 
	for(h = hashtab; h->name != nil; h++) 
		n += strlen(h->name) + 1; 
	cp = hashalgs = smalloc(n); 
	for(h = hashtab;;){ 
		strcpy(cp, h->name); 
		cp += strlen(h->name); 
		h++; 
		if(h->name == nil) 
			break; 
		*cp++ = ' '; 
	} 
	*cp = 0; 
1995/1213    
} 
 
1997/0327    
Dev ssldevtab = { 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)