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 sms[] = "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 = rd_ap_req(&ticket_st, sms,
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(sms, 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");