1: #include "BasicAuthentication2_defs.h" 2: #include "BasicAuthentication2_support.c" 3: #include <ctype.h> 4: 5: static Cardinal 6: hashpass(hpw) 7: char *hpw; 8: { 9: unsigned long hash; 10: register char c; 11: 12: hash = 0; 13: while ((c = *hpw++) != '\0') { 14: hash = (hash<<16) + (isupper(c) ? tolower(c) : c); 15: hash %= 65357; 16: } 17: return((Cardinal) hash); 18: } 19: 20: 21: /* 22: * Given an XNS name and password, return the appropriate 23: * credentials and verifier associated with that name. 24: * Per Authentication Protocol, XSIS .... 25: */ 26: MakeSimpleCredentialsAndVerifier(name, pwd, credentials, verifier) 27: Clearinghouse_Name *name; /* the XNS user, in 3 fields */ 28: char *pwd; /* password, a UNIX string */ 29: Credentials *credentials; 30: Verifier *verifier; 31: { 32: Cardinal length; 33: Unspecified *data, *buf, *seq; 34: 35: credentials->type = simple; 36: length = sizeof_Clearinghouse_Name(name); 37: data = Allocate(length); 38: (void) externalize_Clearinghouse_Name(name,data); 39: seq = credentials->value.sequence = Allocate(length); 40: credentials->value.length = length; 41: buf = data; 42: for ( ; length > 0; length--, seq++) 43: buf += internalize_Unspecified(seq, buf); 44: free(data); 45: 46: verifier->length = 1; 47: verifier->sequence = Allocate(sizeof_Unspecified(0)); 48: verifier->sequence[0] = (Unspecified) hashpass(pwd); 49: }