krb5samba: Add compat code to initialize keyblock contents
authorSimo Sorce <idra@samba.org>
Thu, 26 Apr 2012 20:52:37 +0000 (16:52 -0400)
committerSimo Sorce <idra@samba.org>
Fri, 4 May 2012 14:51:28 +0000 (16:51 +0200)
lib/krb5_wrap/krb5_samba.c
lib/krb5_wrap/krb5_samba.h
source4/heimdal_build/wscript_configure

index 82c25103e74d50cbaa3c15f7d8081644ae5ace29..482684fc11b0aa52d47093944d767a7dc8346bfd 100644 (file)
@@ -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
index e2bd634d7afaf812d31fa42709cd45271749cc30..a60be35a981a857fb44a642e6a67e192a79107df 100644 (file)
@@ -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,
index 6383880229302e74a36138bcde7c1dc0164b462f..80d772d56bfc5d82bdc7e588cb208e8bf9d096cf 100755 (executable)
@@ -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)