summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2012-04-26 16:52:37 -0400
committerSimo Sorce <idra@samba.org>2012-05-04 16:51:28 +0200
commit93de8e45707ab834eb9d4e2a442025d109955382 (patch)
tree66b871e0f2ba4a2561282ca5aec4c7c464dee569
parent62f3be7af3f743ddc2ec0c4d8e6a431fae583282 (diff)
downloadsamba-93de8e45707ab834eb9d4e2a442025d109955382.tar.gz
samba-93de8e45707ab834eb9d4e2a442025d109955382.tar.bz2
samba-93de8e45707ab834eb9d4e2a442025d109955382.zip
krb5samba: Add compat code to initialize keyblock contents
-rw-r--r--lib/krb5_wrap/krb5_samba.c22
-rw-r--r--lib/krb5_wrap/krb5_samba.h5
-rwxr-xr-xsource4/heimdal_build/wscript_configure1
3 files changed, 28 insertions, 0 deletions
diff --git a/lib/krb5_wrap/krb5_samba.c b/lib/krb5_wrap/krb5_samba.c
index 82c25103e7..482684fc11 100644
--- a/lib/krb5_wrap/krb5_samba.c
+++ b/lib/krb5_wrap/krb5_samba.c
@@ -1555,6 +1555,28 @@ krb5_error_code smb_krb5_get_creds(const char *server_s,
return ret;
}
+
+krb5_error_code smb_krb5_keyblock_init_contents(krb5_context context,
+ krb5_enctype enctype,
+ const void *data,
+ size_t length,
+ krb5_keyblock *key)
+{
+#if defined(HAVE_KRB5_KEYBLOCK_INIT)
+ return krb5_keyblock_init(context, enctype, data, length, key);
+#else
+ memset(key, 0, sizeof(krb5_keyblock));
+ KRB5_KEY_DATA(key) = SMB_MALLOC(length);
+ if (NULL == KRB5_KEY_DATA(key)) {
+ return ENOMEM;
+ }
+ memcpy(KRB5_KEY_DATA(key), data, length);
+ KRB5_KEY_LENGTH(key) = length;
+ KRB5_KEY_TYPE(key) = enctype;
+ return 0;
+#endif
+}
+
/*
simulate a kinit, putting the tgt in the given credentials cache.
Orignally by remus@snapserver.com
diff --git a/lib/krb5_wrap/krb5_samba.h b/lib/krb5_wrap/krb5_samba.h
index e2bd634d7a..a60be35a98 100644
--- a/lib/krb5_wrap/krb5_samba.h
+++ b/lib/krb5_wrap/krb5_samba.h
@@ -198,6 +198,11 @@ krb5_error_code smb_krb5_get_creds(const char *server_s,
const char *cc,
const char *impersonate_princ_s,
krb5_creds **creds_p);
+krb5_error_code smb_krb5_keyblock_init_contents(krb5_context context,
+ krb5_enctype enctype,
+ const void *data,
+ size_t length,
+ krb5_keyblock *key);
krb5_error_code kerberos_kinit_keyblock_cc(krb5_context ctx, krb5_ccache cc,
krb5_principal principal,
krb5_keyblock *keyblock,
diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure
index 6383880229..80d772d56b 100755
--- a/source4/heimdal_build/wscript_configure
+++ b/source4/heimdal_build/wscript_configure
@@ -118,6 +118,7 @@ conf.define('HAVE_KRB5_GET_INIT_CREDS_KEYBLOCK', 1)
conf.define('HAVE_KRB5_GET_PW_SALT', 1)
conf.define('HAVE_KRB5_GET_RENEWED_CREDS', 1)
conf.define('HAVE_KRB5_KEYBLOCK_KEYVALUE', 1)
+conf.define('HAVE_KRB5_KEYBLOCK_INIT', 1)
conf.define('HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK', 1)
conf.define('HAVE_KRB5_KRBHST_GET_ADDRINFO', 1)
conf.define('HAVE_KRB5_KRBHST_INIT', 1)