Annotation of 43BSDTahoe/new/xns/morexnslib/auth/simpleauth.c, revision 1.1.1.1

1.1       root        1: 
                      2: /* $Header: simpleauth.c,v 2.3 87/03/23 10:29:12 ed Exp $
                      3: 
                      4: /* this module of authentication support contains:
                      5:  * MakeSimpleCredsAndVerifier
                      6:  * GetSimpleCredsAndVerifier
                      7:  * MakeSimpleVerifier
                      8:  */
                      9: 
                     10: /* $Log:       simpleauth.c,v $
                     11:  * Revision 2.3  87/03/23  10:29:12  ed
                     12:  * Added alternate GetSimpleCredsAndVerifier to interface with
                     13:  * environment variable credentials.
                     14:  * 
                     15:  * Revision 2.2  86/12/10  17:00:49  ed
                     16:  * Create MakeSimpleVerifier as separate routine.
                     17:  * 
                     18:  * Revision 2.1  86/06/30  12:22:25  jqj
                     19:  * convert to Authentication v 2.
                     20:  * 
                     21:  * Revision 2.0  85/11/21  07:22:26  jqj
                     22:  * 4.3BSD standard release
                     23:  * 
                     24:  * Revision 1.1  85/03/26  06:29:11  jqj
                     25:  * Initial revision
                     26:  * 
                     27:  * Revision 1.1  85/03/26  06:29:11  jqj
                     28:  * Initial revision
                     29:  * 
                     30:  */
                     31: 
                     32: #include <xnscourier/Authentication2.h>
                     33: #include <ctype.h>
                     34: 
                     35: Cardinal
                     36: hashpass(hpw)
                     37:        char *hpw;
                     38: {
                     39:        register unsigned long hash;
                     40:        register char c;
                     41: 
                     42:        hash = 0;
                     43:        while ((c = *hpw++) != '\0') {
                     44:                hash = (hash<<16) + (isupper(c) ? tolower(c) : c);
                     45:                hash %= 65357;
                     46:        }
                     47:        return((Cardinal) hash);
                     48: }
                     49: 
                     50: 
                     51: /*
                     52:  * Given an XNS name and password, return the appropriate
                     53:  * credentials and verifier associated with that name.
                     54:  * Per Authentication Protocol, XSIS ....
                     55:  */
                     56: 
                     57: MakeSimpleCredsAndVerifier(name, pwd, credentials, verifier)
                     58:        Authentication2_Clearinghouse_Name *name;
                     59:                                /* the XNS user, in 3 fields */
                     60:        char *pwd;              /* password, a UNIX string */
                     61:        Authentication2_Credentials *credentials;
                     62:                                /* the simple credentials to be returned */
                     63:        Authentication2_Verifier *verifier;
                     64:                                /* associated verifier, i.e. HashedPassword */
                     65: {
                     66:        Cardinal length;
                     67:        Unspecified *data, *buf, *seq;
                     68:        static Authentication2_Clearinghouse_Name nullname = {"","",""};
                     69: 
                     70:        /* first, validate arguments */
                     71:        if (name == 0) name = &nullname;
                     72:        if (pwd == 0) pwd="";
                     73:        /* note we do NOT check that things are of appropriate types */
                     74: 
                     75:        if (credentials != 0) {
                     76:                credentials->type = Authentication2_simpleCredentials;
                     77:                length = sizeof_Authentication2_Clearinghouse_Name(name);
                     78:                data = Allocate(length);
                     79:                (void) externalize_Authentication2_Clearinghouse_Name(name,data);
                     80:                seq = credentials->value.sequence = Allocate(length);
                     81:                credentials->value.length = length;
                     82:                buf = data;
                     83:                for ( ; length > 0; length--, seq++)
                     84:                    buf += internalize_Unspecified(seq, buf);
                     85:                free(data);
                     86:        }
                     87:        if (verifier != 0) {
                     88:                verifier->length = 1;
                     89:                verifier->sequence = Allocate(sizeof_Unspecified(0));
                     90:                verifier->sequence[0] = (Unspecified) hashpass(pwd);
                     91:        }
                     92: }
                     93: 
                     94: 
                     95: /*
                     96:  * new style: name and pwd are returned
                     97:  */
                     98: 
                     99: GetSimpleCredsAndVerifier(name, pwd, credentials, verifier)
                    100:        Authentication2_Clearinghouse_Name *name;
                    101:                                /* the XNS user, in 3 fields */
                    102:        Cardinal *pwd;          /* password, a hashed Cardinal */
                    103:        Authentication2_Credentials *credentials;
                    104:                                /* the simple credentials to be returned */
                    105:        Authentication2_Verifier *verifier;
                    106:                                /* associated verifier, i.e. HashedPassword */
                    107: {
                    108:        Cardinal length;
                    109:        char *uname;
                    110:        Cardinal *upwd, dummypwd;
                    111:        Unspecified *data, *buf, *seq;
                    112:        Unspecified buff[100];
                    113:        static Authentication2_Clearinghouse_Name username;
                    114:        static Authentication2_Clearinghouse_Name dummyname = {"","",""};
                    115:        Authentication2_Clearinghouse_Name defaultobjname, CH_StringToName();
                    116: 
                    117:        if (name == 0) name= &dummyname;
                    118:        if (pwd == 0) pwd= &dummypwd;
                    119:        /* note we do NOT check that things are of appropriate types */
                    120: 
                    121:        CH_NameDefault(&defaultobjname);
                    122:        getXNSuser(&uname, &upwd);
                    123:        username= CH_StringToName(uname, &defaultobjname);
                    124: 
                    125:        externalize_Authentication2_Clearinghouse_Name(&username, buff);
                    126:        internalize_Authentication2_Clearinghouse_Name(name, buff);
                    127:        *pwd= *upwd;
                    128: 
                    129:        if (credentials != 0) {
                    130:                credentials->type = Authentication2_simpleCredentials;
                    131:                length = sizeof_Authentication2_Clearinghouse_Name(&username);
                    132:                data = Allocate(length);
                    133:                (void) externalize_Authentication2_Clearinghouse_Name(&username,data);
                    134:                seq = credentials->value.sequence = Allocate(length);
                    135:                credentials->value.length = length;
                    136:                buf = data;
                    137:                for ( ; length > 0; length--, seq++)
                    138:                    buf += internalize_Unspecified(seq, buf);
                    139:                free(data);
                    140:        }
                    141:        if (verifier != 0) {
                    142:                verifier->length = 1;
                    143:                verifier->sequence = Allocate(sizeof_Unspecified(0));
                    144:                verifier->sequence[0] = (Unspecified) *upwd;
                    145:        }
                    146: }
                    147: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.