7 static char *rcsid_auth_001_c = "$Header$";
16 #include <netinet/in.h>
19 extern char buf[BUFSIZ];
20 extern int have_authorization;
21 extern struct sockaddr_in *client_address();
22 extern CONNECTION conn;
24 extern char *PrincipalHostname();
25 static char service[] = "rcmd";
26 static char master[] = "sms";
27 static char qmark[] = "???";
30 * authentication request auth_001:
32 * >>> (STRING) "auth_001"
50 lose("sending okay for authorization (auth_001)");
51 code = receive_object(conn, (char *)&data, STRING_T);
53 code = connection_errno(conn);
54 lose("awaiting Kerberos authenticators");
56 gethostname(host, BUFSIZ);
58 ticket_st.length = MAX_STRING_SIZE(data);
59 bcopy(STRING_DATA(data), ticket_st.dat, MAX_STRING_SIZE(data));
60 code = rd_ap_req(&ticket_st, service,
61 PrincipalHostname(host), 0,
64 code = krb_err_frob(code);
65 strcpy(ad.pname, qmark);
66 strcpy(ad.pinst, qmark);
67 strcpy(ad.prealm, qmark);
70 if (get_krbrlm(realm,0))
73 if (strcmp(master, ad.pname))
75 if (ad.pinst[0] != '\0')
77 if (strcmp(realm, ad.prealm))
80 lose("sending approval of authorization");
81 have_authorization = 1;
84 sprintf(buf, "auth for %s.%s@%s failed: %s",
85 ad.pname, ad.pinst, ad.prealm, error_message(code));
88 rc = send_object(conn, (char *)&code, INTEGER_T);
92 lose("sending rejection of authenticator");