7 static char *rcsid_auth_001_c = "$Header$";
15 #include <netinet/in.h>
18 extern char buf[BUFSIZ];
19 extern int have_authorization;
20 extern struct sockaddr_in *client_address();
21 extern CONNECTION conn;
23 extern char *PrincipalHostname();
24 static char service[] = "rcmd";
25 static char master[] = "sms";
26 static char qmark[] = "???";
29 * authentication request auth_001:
31 * >>> (STRING) "auth_001"
49 lose("sending okay for authorization (auth_001)");
50 code = receive_object(conn, (char *)&data, STRING_T);
52 code = connection_errno(conn);
53 lose("awaiting Kerberos authenticators");
55 gethostname(host, BUFSIZ);
57 ticket_st.length = MAX_STRING_SIZE(data);
58 bcopy(STRING_DATA(data), ticket_st.dat, MAX_STRING_SIZE(data));
59 code = krb_rd_req(&ticket_st, service,
60 PrincipalHostname(host), 0,
63 code = krb_err_frob(code);
64 strcpy(ad.pname, qmark);
65 strcpy(ad.pinst, qmark);
66 strcpy(ad.prealm, qmark);
69 if (get_krbrlm(realm,0))
72 if (strcmp(master, ad.pname))
74 if (ad.pinst[0] != '\0')
76 if (strcmp(realm, ad.prealm))
79 lose("sending approval of authorization");
80 have_authorization = 1;
83 sprintf(buf, "auth for %s.%s@%s failed: %s",
84 ad.pname, ad.pinst, ad.prealm, error_message(code));
87 rc = send_object(conn, (char *)&code, INTEGER_T);
91 lose("sending rejection of authenticator");