summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2004-10-28 23:50:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 10:53:05 -0500
commit13542c7b5058d1fa0817ae9f371e013157b471d0 (patch)
treeb32d24d434aaf48de5665136da02f9f6522a201c
parentc5621fe5a673a270d633bb890c3d42c1d8d4d50b (diff)
downloadsamba-13542c7b5058d1fa0817ae9f371e013157b471d0.tar.gz
samba-13542c7b5058d1fa0817ae9f371e013157b471d0.tar.bz2
samba-13542c7b5058d1fa0817ae9f371e013157b471d0.zip
r3342: More MIT/Heimdal fixes to allow an enctype to be explicitly set in a krb5_creds
struct. Jeremy. (This used to be commit c9b80490128e09442a01dd8ec6f4b453769e82c1)
-rw-r--r--source3/configure.in24
-rw-r--r--source3/libsmb/clikrb5.c11
2 files changed, 35 insertions, 0 deletions
diff --git a/source3/configure.in b/source3/configure.in
index 83d12d5c90..da60e284ec 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -2822,6 +2822,30 @@ if test x"$with_ads_support" != x"no"; then
[Whether the krb5_ticket struct has a enc_part2 property])
fi
+ AC_CACHE_CHECK([for keyblock in krb5_creds],
+ samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
+ AC_TRY_COMPILE([#include <krb5.h>],
+ [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
+ samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
+ samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
+
+ if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
+ AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
+ [Whether the krb5_creds struct has a keyblock property])
+ fi
+
+ AC_CACHE_CHECK([for session in krb5_creds],
+ samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
+ AC_TRY_COMPILE([#include <krb5.h>],
+ [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
+ samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
+ samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
+
+ if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
+ AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
+ [Whether the krb5_creds struct has a session property])
+ fi
+
AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
AC_TRY_COMPILE([#include <krb5.h>],
diff --git a/source3/libsmb/clikrb5.c b/source3/libsmb/clikrb5.c
index f7f84f1e29..291aa13de0 100644
--- a/source3/libsmb/clikrb5.c
+++ b/source3/libsmb/clikrb5.c
@@ -251,6 +251,17 @@
}
#endif
+void kerberos_set_creds_enctype(krb5_creds *pcreds, int enctype)
+{
+#if defined(HAVE_KRB5_KEYBLOCK_IN_CREDS)
+ KRB5_KEY_TYPE((&pcreds->keyblock)) = enctype;
+#elif defined(HAVE_KRB5_SESSION_IN_CREDS)
+ KRB5_KEY_TYPE((&pcreds->session)) = enctype;
+#else
+#error UNKNOWN_KEYBLOCK_MEMBER_IN_KRB5_CREDS_STRUCT
+#endif
+}
+
static BOOL ads_cleanup_expired_creds(krb5_context context,
krb5_ccache ccache,
krb5_creds *credsp)