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:
parent
200772653a
commit
e6475f2151
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user