Annotation of 43BSDTahoe/new/xns/examples/xnscreds/xnscreds.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char *rcsid = "$Header: xnscreds.c,v 1.2 87/07/28 08:41:13 ed Exp $";
                      3: #endif lint
                      4: 
                      5: /*
                      6:  * Copyright (c) 1986, 1987 Xerox Corporation.
                      7:  */
                      8: 
                      9: /* 
                     10:  * $Log:       xnscreds.c,v $
                     11:  * Revision 1.2  87/07/28  08:41:13  ed
                     12:  * fprintf to stderr not stdin (how did it work?).
                     13:  * 
                     14:  * Revision 1.1  87/03/17  16:28:14  ed
                     15:  * Initial revision
                     16:  * 
                     17:  * 
                     18:  */
                     19: 
                     20: #include <stdio.h>
                     21: #include <xnscourier/Authentication2.h>
                     22: 
                     23: int authenticate= 0;
                     24: int verbose= 0;
                     25: 
                     26: main(argc, argv)
                     27: int argc;
                     28: char *argv[];
                     29: {
                     30:        char name[128];
                     31:        char *pwd, *cp;
                     32:        char *getXNSpass(), *getenv(), *index();
                     33:        Cardinal passwd, buffer;
                     34:        int csh, i;
                     35:        FILE *tty, *fopen();
                     36:        Authentication2_Credentials credentials;
                     37:        Authentication2_Verifier verifier;
                     38:        Authentication2_ThreePartName defaultobjname, username;
                     39:        Authentication2_ThreePartName CH_StringToName();
                     40: 
                     41:        static char *options= "av";
                     42:        static char *usage= "Usage: %s [-a] [-v]\n";
                     43: 
                     44:        extern int optind;
                     45:        extern char *optarg;
                     46:        int opt;
                     47: 
                     48:        if ( !isatty(fileno(stdin)) ) {
                     49:                fprintf(stderr, "\nMust be run from terminal\n");
                     50:                exit(1);
                     51:        }
                     52: 
                     53:        if ( argc > 3 ) {
                     54:                fprintf(stderr, usage, argv[0]);
                     55:                exit(1);
                     56:        }
                     57: 
                     58:        while ( (opt= getopt(argc, argv, options)) != EOF ) {
                     59:                switch (opt) {
                     60:                        case 'a' :
                     61:                                authenticate++;
                     62:                                break;
                     63:                        case 'v' :
                     64:                                verbose++;
                     65:                                break;
                     66: 
                     67:                        default :
                     68:                                fprintf(stderr, "Invalid command option -%c\n", opt);
                     69:                                exit(1);
                     70:                }
                     71:        }
                     72: 
                     73:        if ( (tty= fopen("/dev/tty", "r+")) == NULL ) {
                     74:                tty= stdin;
                     75:        } else {
                     76:                setbuf(tty, (char *)NULL);
                     77:        }
                     78:        fprintf(stderr, "Enter XNS name: ");
                     79:        fgets(name, sizeof(name), tty);
                     80:        if ( (cp= index(name, '\n')) )
                     81:                *cp= '\0';
                     82: 
                     83:        pwd= getXNSpass("Enter XNS password: ");
                     84:        fclose(tty);
                     85:        
                     86:        CH_NameDefault(&defaultobjname);
                     87:        username= CH_StringToName(name, &defaultobjname);
                     88:        MakeSimpleCredsAndVerifier(&username, pwd, &credentials, &verifier, 0);
                     89: 
                     90:        if ( authenticate ) {
                     91:                if ( verbose ) {
                     92:                        fprintf(stderr, "Validating XNS credentials\n");
                     93:                }
                     94: 
                     95:                if ( !Auth_CredCheck(credentials, verifier) ) {
                     96:                        fprintf(stderr, "Invalid XNS credentials\n");
                     97:                        exit(1);
                     98:                }
                     99:        }
                    100: 
                    101:        passwd= verifier.sequence[0];
                    102: 
                    103:        csh= 0;
                    104: 
                    105:        if ( (cp= getenv("SHELL")) && (i= strlen(cp)) >= 3 ) {
                    106:                csh= (strcmp(&cp[i-3], "csh") ? 0 : 1);
                    107:        }
                    108: 
                    109:        if ( !csh )
                    110:                fprintf(stdout, "export XNSNAME XNSPASSWD\n");
                    111:        else
                    112:                fprintf(stdout, "set noglob;\n");
                    113: 
                    114:        if ( csh ) {
                    115:                fprintf(stdout, "setenv XNSNAME %s ;\n", name);
                    116:                fprintf(stdout, "setenv XNSPASSWD %d ;\n", passwd);
                    117:                fprintf(stdout, "unset noglob;\n");
                    118:        } else {
                    119:                fprintf(stdout, "XNSNAME=%s ;\n", name);
                    120:                fprintf(stdout, "XNSPASSWD=%d ;\n", passwd);
                    121:        }
                    122: 
                    123: }
                    124: 

unix.superglobalmegacorp.com

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