Annotation of 43BSDTahoe/new/xns/examples/filing/simpleauth.c, revision 1.1

1.1     ! root        1: 
        !             2: /* $Header: simpleauth.c,v 2.0 85/11/21 07:22:26 jqj Exp $
        !             3: 
        !             4: /* this module of authentication support contains:
        !             5:  * MakeSimpleCredsAndVerifier
        !             6:  */
        !             7: 
        !             8: /* $Log:       simpleauth.c,v $
        !             9:  * Revision 2.0  85/11/21  07:22:26  jqj
        !            10:  * 4.3BSD standard release
        !            11:  * 
        !            12:  * Revision 1.1  85/03/26  06:29:11  jqj
        !            13:  * Initial revision
        !            14:  * 
        !            15:  * Revision 1.1  85/03/26  06:29:11  jqj
        !            16:  * Initial revision
        !            17:  * 
        !            18:  */
        !            19: 
        !            20: #include <xnscourier/Authentication2.h>
        !            21: #include <ctype.h>
        !            22: 
        !            23: static Cardinal
        !            24: hashpass(hpw)
        !            25:        char *hpw;
        !            26: {
        !            27:        register unsigned long hash;
        !            28:        register char c;
        !            29: 
        !            30:        hash = 0;
        !            31:        while ((c = *hpw++) != '\0') {
        !            32:                hash = (hash<<16) + (isupper(c) ? tolower(c) : c);
        !            33:                hash %= 65357;
        !            34:        }
        !            35:        return((Cardinal) hash);
        !            36: }
        !            37: 
        !            38: 
        !            39: /*
        !            40:  * Given an XNS name and password, return the appropriate
        !            41:  * credentials and verifier associated with that name.
        !            42:  * Per Authentication Protocol, XSIS ....
        !            43:  */
        !            44: MakeSimpleCredsAndVerifier(name, pwd, credentials, verifier)
        !            45:        Authentication2_Clearinghouse_Name *name;
        !            46:                                /* the XNS user, in 3 fields */
        !            47:        char *pwd;              /* password, a UNIX string */
        !            48:        Authentication2_Credentials *credentials;
        !            49:                                /* the simple credentials to be returned */
        !            50:        Authentication2_Verifier *verifier;
        !            51:                                /* associated verifier, i.e. HashedPassword */
        !            52: {
        !            53:        Cardinal length;
        !            54:        Unspecified *data, *buf, *seq;
        !            55:        static Authentication2_Clearinghouse_Name nullname = {"","",""};
        !            56: 
        !            57:        /* first, validate arguments */
        !            58:        if (name == 0) name = &nullname;
        !            59:        if (pwd == 0) pwd="";
        !            60:        /* note we do NOT check that things are of appropriate types */
        !            61: 
        !            62:        if (credentials != 0) {
        !            63:                credentials->type = Authentication2_simpleCredentials;
        !            64:                length = sizeof_Authentication2_Clearinghouse_Name(name);
        !            65:                data = Allocate(length);
        !            66:                (void) externalize_Authentication2_Clearinghouse_Name(name,data);
        !            67:                seq = credentials->value.sequence = Allocate(length);
        !            68:                credentials->value.length = length;
        !            69:                buf = data;
        !            70:                for ( ; length > 0; length--, seq++)
        !            71:                    buf += internalize_Unspecified(seq, buf);
        !            72:                free(data);
        !            73:        }
        !            74:        if (verifier != 0) {
        !            75:                verifier->length = 1;
        !            76:                verifier->sequence = Allocate(sizeof_Unspecified(0));
        !            77:                verifier->sequence[0] = (Unspecified) hashpass(pwd);
        !            78:        }
        !            79: }

unix.superglobalmegacorp.com

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