libcli/auth: rename netlogon_creds_decrypt_samlogon() to netlogon_creds_decrypt_samlo...
[obnox/samba/samba-obnox.git] / source3 / rpc_client / cli_netlogon.c
index 3c685fd9a7fcfeeefc3f66620f942aa7ed67b9dd..66a50a8f2d97ae9308867310f038c6a7b96e64de 100644 (file)
@@ -207,7 +207,10 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli,
 
                nt_lm_owf_gen(password, ntpassword.hash, lmpassword.hash);
 
-               if (cli->dc->negotiate_flags & NETLOGON_NEG_ARCFOUR) {
+               if (cli->dc->negotiate_flags & NETLOGON_NEG_SUPPORTS_AES) {
+                       netlogon_creds_aes_encrypt(cli->dc, lmpassword.hash, 16);
+                       netlogon_creds_aes_encrypt(cli->dc, ntpassword.hash, 16);
+               } else if (cli->dc->negotiate_flags & NETLOGON_NEG_ARCFOUR) {
                        netlogon_creds_arcfour_crypt(cli->dc, lmpassword.hash, 16);
                        netlogon_creds_arcfour_crypt(cli->dc, ntpassword.hash, 16);
                } else {
@@ -464,7 +467,8 @@ NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli,
                return result;
        }
 
-       netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation);
+       netlogon_creds_decrypt_samlogon_validation(cli->dc, validation_level,
+                                                  &validation);
 
        result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3);
        if (!NT_STATUS_IS_OK(result)) {
@@ -572,7 +576,8 @@ NTSTATUS rpccli_netlogon_sam_network_logon_ex(struct rpc_pipe_client *cli,
                return result;
        }
 
-       netlogon_creds_decrypt_samlogon(cli->dc, validation_level, &validation);
+       netlogon_creds_decrypt_samlogon_validation(cli->dc, validation_level,
+                                                  &validation);
 
        result = map_validation_to_info3(mem_ctx, validation_level, &validation, info3);
        if (!NT_STATUS_IS_OK(result)) {
@@ -625,11 +630,14 @@ NTSTATUS rpccli_netlogon_set_trust_password(struct rpc_pipe_client *cli,
        if (cli->dc->negotiate_flags & NETLOGON_NEG_PASSWORD_SET2) {
 
                struct netr_CryptPassword new_password;
+               uint32_t old_timeout;
 
                init_netr_CryptPassword(new_trust_pwd_cleartext,
-                                       cli->dc->session_key,
+                                       cli->dc,
                                        &new_password);
 
+               old_timeout = dcerpc_binding_handle_set_timeout(b, 600000);
+
                status = dcerpc_netr_ServerPasswordSet2(b, mem_ctx,
                                                        cli->srv_name_slash,
                                                        cli->dc->account_name,
@@ -639,6 +647,9 @@ NTSTATUS rpccli_netlogon_set_trust_password(struct rpc_pipe_client *cli,
                                                        &srv_cred,
                                                        &new_password,
                                                        &result);
+
+               dcerpc_binding_handle_set_timeout(b, old_timeout);
+
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0,("dcerpc_netr_ServerPasswordSet2 failed: %s\n",
                                nt_errstr(status)));
@@ -647,9 +658,13 @@ NTSTATUS rpccli_netlogon_set_trust_password(struct rpc_pipe_client *cli,
        } else {
 
                struct samr_Password new_password;
+               uint32_t old_timeout;
+
                memcpy(new_password.hash, new_trust_passwd_hash, sizeof(new_password.hash));
                netlogon_creds_des_encrypt(cli->dc, &new_password);
 
+               old_timeout = dcerpc_binding_handle_set_timeout(b, 600000);
+
                status = dcerpc_netr_ServerPasswordSet(b, mem_ctx,
                                                       cli->srv_name_slash,
                                                       cli->dc->account_name,
@@ -659,6 +674,9 @@ NTSTATUS rpccli_netlogon_set_trust_password(struct rpc_pipe_client *cli,
                                                       &srv_cred,
                                                       &new_password,
                                                       &result);
+
+               dcerpc_binding_handle_set_timeout(b, old_timeout);
+
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(0,("dcerpc_netr_ServerPasswordSet failed: %s\n",
                                nt_errstr(status)));