diff options
-rw-r--r-- | lib/krb5_wrap/krb5_samba.c | 22 | ||||
-rw-r--r-- | lib/krb5_wrap/krb5_samba.h | 5 | ||||
-rwxr-xr-x | source4/heimdal_build/wscript_configure | 1 |
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) |