summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/krb/mk_req.c
diff options
context:
space:
mode:
authorChris Provenzano <proven@mit.edu>1995-03-10 17:26:04 +0000
committerChris Provenzano <proven@mit.edu>1995-03-10 17:26:04 +0000
commitb2f49b74f53d6deafc39fc0069de3e249a383b13 (patch)
tree339c5c75b96c433c666183d92478c11ccc42d669 /src/lib/krb5/krb/mk_req.c
parent84ea6e41500ad94dd417841b307d142d7055e056 (diff)
downloadkrb5-b2f49b74f53d6deafc39fc0069de3e249a383b13.tar.gz
krb5-b2f49b74f53d6deafc39fc0069de3e249a383b13.tar.xz
krb5-b2f49b74f53d6deafc39fc0069de3e249a383b13.zip
* auth_con.h auth_con.c Added for krb5_auth_con definition and
support routines. * mk_req.c (krb5_mk_req()) * mk_req_ext.c (krb5_mk_req_extended()) * rd_rep.c (krb5_rd_rep()) * sendauth.c (krb5_sendauth()) * mk_priv.c (krb5_mk_priv()) * mk_safe.c (krb5_mk_safe()) * rd_priv.c (krb5_rd_priv()) * rd_safe.c (krb5_rd_safe()) Added a krb5_auth_context argument and eliminated many of the other arguments because they are included in the krb5_auth_context structure. * send_tgs.c (krb5_send_tgs()) Eliminate call to krb5_mk_req_extended(), which does far more than krb5_send_tgs() needs. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5099 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/krb5/krb/mk_req.c')
-rw-r--r--src/lib/krb5/krb/mk_req.c67
1 files changed, 40 insertions, 27 deletions
diff --git a/src/lib/krb5/krb/mk_req.c b/src/lib/krb5/krb/mk_req.c
index 91a769e931..3d86741fc1 100644
--- a/src/lib/krb5/krb/mk_req.c
+++ b/src/lib/krb5/krb/mk_req.c
@@ -25,6 +25,7 @@
*/
#include "k5-int.h"
+#include "auth_con.h"
/*
Formats a KRB_AP_REQ message into outbuf.
@@ -48,44 +49,56 @@
extern krb5_flags krb5_kdc_default_options;
krb5_error_code INTERFACE
-krb5_mk_req(context, server, ap_req_options, checksum, ccache, outbuf)
- krb5_context context;
- krb5_const_principal server;
- const krb5_flags ap_req_options;
- const krb5_checksum *checksum;
- krb5_ccache ccache;
- krb5_data *outbuf;
+krb5_mk_req(context, auth_context, ap_req_options, service, hostname, in_data,
+ ccache, outbuf)
+ krb5_context context;
+ krb5_auth_context ** auth_context;
+ const krb5_flags ap_req_options;
+ char * service;
+ char * hostname;
+ krb5_data * in_data;
+ krb5_ccache ccache;
+ krb5_data * outbuf;
{
- krb5_error_code retval;
- krb5_creds * credsp;
- krb5_creds creds;
+ krb5_error_code retval;
+ krb5_principal server;
+ krb5_creds * credsp;
+ krb5_creds creds;
+ char ** realm;
- /* obtain ticket & session key */
+ /* get realm */
+ if (retval = krb5_get_host_realm(context, hostname, &realm))
+ return retval;
+ /* build principal */
+ if (retval = krb5_build_principal(context, &server, strlen(realm[0]),
+ realm[0], service, hostname, NULL))
+ goto cleanup_realm;
+
+ /* obtain ticket & session key */
memset((char *)&creds, 0, sizeof(creds));
if (retval = krb5_copy_principal(context, server, &creds.server))
- goto errout;
+ goto cleanup_princ;
+
if (retval = krb5_cc_get_principal(context, ccache, &creds.client))
- goto errout;
- /* creds.times.endtime = 0; -- memset 0 takes care of this
- zero means "as long as possible" */
- /* creds.keyblock.keytype = 0; -- as well as this.
- zero means no session keytype
- preference */
+ goto cleanup_creds;
if (retval = krb5_get_credentials(context, krb5_kdc_default_options,
ccache, &creds, &credsp))
- goto errout;
+ goto cleanup_creds;
- retval = krb5_mk_req_extended(context, ap_req_options, checksum,
- 0, /* no sequence number */
- 0, /* no sub-key */
- credsp,
- 0, /* We don't need the authenticator */
- outbuf);
+ retval = krb5_mk_req_extended(context, auth_context, ap_req_options,
+ in_data, credsp, outbuf);
-errout:
- krb5_free_cred_contents(context, &creds);
krb5_free_creds(context, credsp);
+
+cleanup_creds:
+ krb5_free_cred_contents(context, &creds);
+
+cleanup_princ:
+ krb5_free_principal(context, server);
+
+cleanup_realm:
+ krb5_free_host_realm(context, realm);
return retval;
}