summaryrefslogtreecommitdiff
path: root/source4/auth/credentials
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-07-25 16:00:50 +0200
committerStefan Metzmacher <metze@samba.org>2008-07-26 21:46:43 +0200
commit21592142c3b198aba9c371d7985b0aaf7e455017 (patch)
treeef895987dffab030033aa1abdc100966e34e825a /source4/auth/credentials
parentc0ad44f354933a3c2eeaa66d8e16bcd2f14924ca (diff)
downloadsamba-21592142c3b198aba9c371d7985b0aaf7e455017.tar.gz
samba-21592142c3b198aba9c371d7985b0aaf7e455017.tar.bz2
samba-21592142c3b198aba9c371d7985b0aaf7e455017.zip
auth/credentials: use the same enctypes when getting a TGT and a TGS
metze (This used to be commit 9fc5750156467f579ea8d7755987d091f5b579c2)
Diffstat (limited to 'source4/auth/credentials')
-rw-r--r--source4/auth/credentials/credentials_krb5.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/source4/auth/credentials/credentials_krb5.c b/source4/auth/credentials/credentials_krb5.c
index a880486f0f..c4c58398c3 100644
--- a/source4/auth/credentials/credentials_krb5.c
+++ b/source4/auth/credentials/credentials_krb5.c
@@ -360,6 +360,7 @@ _PUBLIC_ int cli_credentials_get_client_gss_creds(struct cli_credentials *cred,
struct gssapi_creds_container *gcc;
struct ccache_container *ccache;
gss_buffer_desc empty_buffer = GSS_C_EMPTY_BUFFER;
+ krb5_enctype *etypes = NULL;
if (cred->client_gss_creds_obtained >= cred->client_gss_creds_threshold &&
cred->client_gss_creds_obtained > CRED_UNINITIALISED) {
@@ -391,6 +392,28 @@ _PUBLIC_ int cli_credentials_get_client_gss_creds(struct cli_credentials *cred,
return ret;
}
+ /* transfer the enctypes from the smb_krb5_context to the gssapi layer */
+ min_stat = krb5_get_default_in_tkt_etypes(ccache->smb_krb5_context->krb5_context,
+ &etypes);
+ if (min_stat == 0) {
+ OM_uint32 num_ktypes;
+
+ for (num_ktypes = 0; etypes[num_ktypes]; num_ktypes++);
+
+ maj_stat = gss_krb5_set_allowable_enctypes(&min_stat, gcc->creds,
+ num_ktypes, etypes);
+ krb5_xfree (etypes);
+ if (maj_stat) {
+ talloc_free(gcc);
+ if (min_stat) {
+ ret = min_stat;
+ } else {
+ ret = EINVAL;
+ }
+ return ret;
+ }
+ }
+
/* don't force GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG */
maj_stat = gss_set_cred_option(&min_stat, &gcc->creds,
GSS_KRB5_CRED_NO_CI_FLAGS_X,