⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpleauth.c

📁 早期freebsd实现
💻 C
字号:
/* $Header: simpleauth.c,v 2.3 87/03/23 10:29:12 ed Exp $/* this module of authentication support contains: * MakeSimpleCredsAndVerifier * GetSimpleCredsAndVerifier * MakeSimpleVerifier *//* $Log:	simpleauth.c,v $ * Revision 2.3  87/03/23  10:29:12  ed * Added alternate GetSimpleCredsAndVerifier to interface with * environment variable credentials. *  * Revision 2.2  86/12/10  17:00:49  ed * Create MakeSimpleVerifier as separate routine. *  * Revision 2.1  86/06/30  12:22:25  jqj * convert to Authentication v 2. *  * Revision 2.0  85/11/21  07:22:26  jqj * 4.3BSD standard release *  * Revision 1.1  85/03/26  06:29:11  jqj * Initial revision *  * Revision 1.1  85/03/26  06:29:11  jqj * Initial revision *  */#include <xnscourier/Authentication2.h>#include <ctype.h>Cardinalhashpass(hpw)	char *hpw;{	register unsigned long hash;	register char c;	hash = 0;	while ((c = *hpw++) != '\0') {		hash = (hash<<16) + (isupper(c) ? tolower(c) : c);		hash %= 65357;	}	return((Cardinal) hash);}/* * Given an XNS name and password, return the appropriate * credentials and verifier associated with that name. * Per Authentication Protocol, XSIS .... */MakeSimpleCredsAndVerifier(name, pwd, credentials, verifier)	Authentication2_Clearinghouse_Name *name;				/* the XNS user, in 3 fields */	char *pwd;		/* password, a UNIX string */	Authentication2_Credentials *credentials;				/* the simple credentials to be returned */	Authentication2_Verifier *verifier;				/* associated verifier, i.e. HashedPassword */{	Cardinal length;	Unspecified *data, *buf, *seq;	static Authentication2_Clearinghouse_Name nullname = {"","",""};	/* first, validate arguments */	if (name == 0) name = &nullname;	if (pwd == 0) pwd="";	/* note we do NOT check that things are of appropriate types */	if (credentials != 0) {		credentials->type = Authentication2_simpleCredentials;		length = sizeof_Authentication2_Clearinghouse_Name(name);		data = Allocate(length);		(void) externalize_Authentication2_Clearinghouse_Name(name,data);		seq = credentials->value.sequence = Allocate(length);		credentials->value.length = length;		buf = data;		for ( ; length > 0; length--, seq++)		    buf += internalize_Unspecified(seq, buf);		free(data);	}	if (verifier != 0) {		verifier->length = 1;		verifier->sequence = Allocate(sizeof_Unspecified(0));		verifier->sequence[0] = (Unspecified) hashpass(pwd);	}}/* * new style: name and pwd are returned */GetSimpleCredsAndVerifier(name, pwd, credentials, verifier)	Authentication2_Clearinghouse_Name *name;				/* the XNS user, in 3 fields */	Cardinal *pwd;		/* password, a hashed Cardinal */	Authentication2_Credentials *credentials;				/* the simple credentials to be returned */	Authentication2_Verifier *verifier;				/* associated verifier, i.e. HashedPassword */{	Cardinal length;	char *uname;	Cardinal *upwd, dummypwd;	Unspecified *data, *buf, *seq;	Unspecified buff[100];	static Authentication2_Clearinghouse_Name username;	static Authentication2_Clearinghouse_Name dummyname = {"","",""};	Authentication2_Clearinghouse_Name defaultobjname, CH_StringToName();	if (name == 0) name= &dummyname;	if (pwd == 0) pwd= &dummypwd;	/* note we do NOT check that things are of appropriate types */	CH_NameDefault(&defaultobjname);	getXNSuser(&uname, &upwd);	username= CH_StringToName(uname, &defaultobjname);	externalize_Authentication2_Clearinghouse_Name(&username, buff);	internalize_Authentication2_Clearinghouse_Name(name, buff);	*pwd= *upwd;	if (credentials != 0) {		credentials->type = Authentication2_simpleCredentials;		length = sizeof_Authentication2_Clearinghouse_Name(&username);		data = Allocate(length);		(void) externalize_Authentication2_Clearinghouse_Name(&username,data);		seq = credentials->value.sequence = Allocate(length);		credentials->value.length = length;		buf = data;		for ( ; length > 0; length--, seq++)		    buf += internalize_Unspecified(seq, buf);		free(data);	}	if (verifier != 0) {		verifier->length = 1;		verifier->sequence = Allocate(sizeof_Unspecified(0));		verifier->sequence[0] = (Unspecified) *upwd;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -