diff options
author | Stefan Metzmacher <metze@samba.org> | 2008-07-25 16:00:50 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2008-07-26 21:46:43 +0200 |
commit | 21592142c3b198aba9c371d7985b0aaf7e455017 (patch) | |
tree | ef895987dffab030033aa1abdc100966e34e825a /source4/auth/credentials | |
parent | c0ad44f354933a3c2eeaa66d8e16bcd2f14924ca (diff) | |
download | samba-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.c | 23 |
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, |