1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00

s3-rpc_client: Added dcerpc_samr_chgpasswd_user3.

This commit is contained in:
Andreas Schneider 2011-01-12 15:14:35 +01:00
parent 200772653a
commit e6475f2151
2 changed files with 75 additions and 9 deletions

View File

@ -286,13 +286,15 @@ NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli,
/* change password 3 */
NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
NTSTATUS dcerpc_samr_chgpasswd_user3(struct dcerpc_binding_handle *h,
TALLOC_CTX *mem_ctx,
const char *srv_name_slash,
const char *username,
const char *newpassword,
const char *oldpassword,
struct samr_DomInfo1 **dominfo1,
struct userPwdChangeFailureInformation **reject)
struct userPwdChangeFailureInformation **reject,
NTSTATUS *presult)
{
NTSTATUS status;
@ -301,16 +303,16 @@ NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
struct samr_Password old_nt_hash_enc;
struct samr_Password old_lanman_hash_enc;
uchar old_nt_hash[16];
uchar old_lanman_hash[16];
uchar new_nt_hash[16];
uchar new_lanman_hash[16];
uint8_t old_nt_hash[16];
uint8_t old_lanman_hash[16];
uint8_t new_nt_hash[16];
uint8_t new_lanman_hash[16];
struct lsa_String server, account;
DEBUG(10,("rpccli_samr_chgpasswd_user3\n"));
init_lsa_String(&server, cli->srv_name_slash);
init_lsa_String(&server, srv_name_slash);
init_lsa_String(&account, username);
/* Calculate the MD4 hash (NT compatible) of the password */
@ -339,7 +341,8 @@ NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
arcfour_crypt(new_nt_password.data, old_nt_hash, 516);
E_old_pw_hash(new_nt_hash, old_nt_hash, old_nt_hash_enc.hash);
status = rpccli_samr_ChangePasswordUser3(cli, mem_ctx,
status = dcerpc_samr_ChangePasswordUser3(h,
mem_ctx,
&server,
&account,
&new_nt_password,
@ -349,10 +352,39 @@ NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
&old_lanman_hash_enc,
NULL,
dominfo1,
reject);
reject,
presult);
return status;
}
NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
const char *username,
const char *newpassword,
const char *oldpassword,
struct samr_DomInfo1 **dominfo1,
struct userPwdChangeFailureInformation **reject)
{
NTSTATUS status;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
status = dcerpc_samr_chgpasswd_user3(cli->binding_handle,
mem_ctx,
cli->srv_name_slash,
username,
newpassword,
oldpassword,
dominfo1,
reject,
&result);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
return result;
}
/* This function returns the bizzare set of (max_entries, max_size) required
for the QueryDisplayInfo RPC to actually work against a domain controller
with large (10k and higher) numbers of users. These values were

View File

@ -133,6 +133,40 @@ NTSTATUS rpccli_samr_chng_pswd_auth_crap(struct rpc_pipe_client *cli,
DATA_BLOB old_nt_hash_enc_blob,
DATA_BLOB new_lm_password_blob,
DATA_BLOB old_lm_hash_enc_blob);
/**
* @brief
*
* @param[in] h The dcerpc binding hanlde to use.
*
* @param[in] mem_ctx The memory context to use.
*
* @param[in] srv_name_slash The server name with leading slashes.
*
* @param[in] username The name of ther user.
*
* @param[in] newpassword The new password to set.
*
* @param[in] oldpassword The old password to set.
*
* @param[in] dominfo1 A pointer to hold the domain information.
*
* @param[in] reject A pointer to store the result of a possible reject.
*
* @param[out] presult A pointer for the NDR NTSTATUS error code.
*
* @return A corresponding NTSTATUS error code for the connection.
*/
NTSTATUS dcerpc_samr_chgpasswd_user3(struct dcerpc_binding_handle *h,
TALLOC_CTX *mem_ctx,
const char *srv_name_slash,
const char *username,
const char *newpassword,
const char *oldpassword,
struct samr_DomInfo1 **dominfo1,
struct userPwdChangeFailureInformation **reject,
NTSTATUS *presult);
NTSTATUS rpccli_samr_chgpasswd_user3(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
const char *username,