s4-dsdb/samdb: use abstract functions for MIT compatibility.
authorGünther Deschner <gd@samba.org>
Fri, 25 Apr 2014 12:17:10 +0000 (14:17 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 20 Mar 2015 22:25:52 +0000 (23:25 +0100)
This involves switching to krb5_data, smb_krb5_get_pw_salt and
smb_krb5_create_key_from_string.

Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Pair-Programmed-With: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source4/dsdb/samdb/ldb_modules/password_hash.c

index d304038346b93f5e443d88292cc234774c169987..e266307789bd53da30f01ef2e78e7aa3511ffe63 100644 (file)
@@ -647,7 +647,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
        struct ldb_context *ldb;
        krb5_error_code krb5_ret;
        krb5_principal salt_principal;
-       krb5_salt salt;
+       krb5_data salt;
        krb5_keyblock key;
        krb5_data cleartext_data;
 
@@ -721,7 +721,7 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
        /*
         * create salt from salt_principal
         */
-       krb5_ret = krb5_get_pw_salt(io->smb_krb5_context->krb5_context,
+       krb5_ret = smb_krb5_get_pw_salt(io->smb_krb5_context->krb5_context,
                                    salt_principal, &salt);
        krb5_free_principal(io->smb_krb5_context->krb5_context, salt_principal);
        if (krb5_ret) {
@@ -734,24 +734,26 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
        }
        /* create a talloc copy */
        io->g.salt = talloc_strndup(io->ac,
-                                   (char *)salt.saltvalue.data,
-                                   salt.saltvalue.length);
-       krb5_free_salt(io->smb_krb5_context->krb5_context, salt);
+                                   (char *)salt.data,
+                                   salt.length);
+       kerberos_free_data_contents(io->smb_krb5_context->krb5_context, &salt);
        if (!io->g.salt) {
                return ldb_oom(ldb);
        }
-       salt.saltvalue.data     = discard_const(io->g.salt);
-       salt.saltvalue.length   = strlen(io->g.salt);
+       /* now use the talloced copy of the salt */
+       salt.data       = discard_const(io->g.salt);
+       salt.length     = strlen(io->g.salt);
 
        /*
         * create ENCTYPE_AES256_CTS_HMAC_SHA1_96 key out of
         * the salt and the cleartext password
         */
-       krb5_ret = krb5_string_to_key_data_salt(io->smb_krb5_context->krb5_context,
-                                               ENCTYPE_AES256_CTS_HMAC_SHA1_96,
-                                               cleartext_data,
-                                               salt,
-                                               &key);
+       krb5_ret = smb_krb5_create_key_from_string(io->smb_krb5_context->krb5_context,
+                                                  NULL,
+                                                  &salt,
+                                                  &cleartext_data,
+                                                  ENCTYPE_AES256_CTS_HMAC_SHA1_96,
+                                                  &key);
        if (krb5_ret) {
                ldb_asprintf_errstring(ldb,
                                       "setup_kerberos_keys: "
@@ -772,11 +774,12 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
         * create ENCTYPE_AES128_CTS_HMAC_SHA1_96 key out of
         * the salt and the cleartext password
         */
-       krb5_ret = krb5_string_to_key_data_salt(io->smb_krb5_context->krb5_context,
-                                               ENCTYPE_AES128_CTS_HMAC_SHA1_96,
-                                               cleartext_data,
-                                               salt,
-                                               &key);
+       krb5_ret = smb_krb5_create_key_from_string(io->smb_krb5_context->krb5_context,
+                                                  NULL,
+                                                  &salt,
+                                                  &cleartext_data,
+                                                  ENCTYPE_AES128_CTS_HMAC_SHA1_96,
+                                                  &key);
        if (krb5_ret) {
                ldb_asprintf_errstring(ldb,
                                       "setup_kerberos_keys: "
@@ -797,11 +800,12 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
         * create ENCTYPE_DES_CBC_MD5 key out of
         * the salt and the cleartext password
         */
-       krb5_ret = krb5_string_to_key_data_salt(io->smb_krb5_context->krb5_context,
-                                               ENCTYPE_DES_CBC_MD5,
-                                               cleartext_data,
-                                               salt,
-                                               &key);
+       krb5_ret = smb_krb5_create_key_from_string(io->smb_krb5_context->krb5_context,
+                                                  NULL,
+                                                  &salt,
+                                                  &cleartext_data,
+                                                  ENCTYPE_DES_CBC_MD5,
+                                                  &key);
        if (krb5_ret) {
                ldb_asprintf_errstring(ldb,
                                       "setup_kerberos_keys: "
@@ -822,11 +826,12 @@ static int setup_kerberos_keys(struct setup_password_fields_io *io)
         * create ENCTYPE_DES_CBC_CRC key out of
         * the salt and the cleartext password
         */
-       krb5_ret = krb5_string_to_key_data_salt(io->smb_krb5_context->krb5_context,
-                                               ENCTYPE_DES_CBC_CRC,
-                                               cleartext_data,
-                                               salt,
-                                               &key);
+       krb5_ret = smb_krb5_create_key_from_string(io->smb_krb5_context->krb5_context,
+                                                  NULL,
+                                                  &salt,
+                                                  &cleartext_data,
+                                                  ENCTYPE_DES_CBC_CRC,
+                                                  &key);
        if (krb5_ret) {
                ldb_asprintf_errstring(ldb,
                                       "setup_kerberos_keys: "