diff options
author | Günther Deschner <gd@samba.org> | 2008-06-25 11:50:17 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-06-25 23:58:50 +0200 |
commit | 402733b518dada3ffd3a9cb622a8f994ed35a9ac (patch) | |
tree | ed774a9acf1c68d49158d2bcb36b57b0bdf83875 | |
parent | 14d500c0e7e4261fa8d9dbc12e14d79a424059c3 (diff) | |
download | samba-402733b518dada3ffd3a9cb622a8f994ed35a9ac.tar.gz samba-402733b518dada3ffd3a9cb622a8f994ed35a9ac.tar.bz2 samba-402733b518dada3ffd3a9cb622a8f994ed35a9ac.zip |
rpc_client: add rpccli_samr_chgpasswd_user() call.
Guenther
(This used to be commit 10fd2baa8320f96286d53b677cf38f3ca3aa88a7)
-rw-r--r-- | source3/include/proto.h | 5 | ||||
-rw-r--r-- | source3/rpc_client/cli_samr.c | 53 |
2 files changed, 58 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 42277277b0..1eb5fbda03 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -7144,6 +7144,11 @@ uint32 reg_init_regval_buffer( REGVAL_BUFFER *buf2, REGISTRY_VALUE *val ); /* The following definitions come from rpc_client/cli_samr.c */ +NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *user_handle, + const char *newpassword, + const char *oldpassword); NTSTATUS rpccli_samr_chgpasswd_user2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *username, diff --git a/source3/rpc_client/cli_samr.c b/source3/rpc_client/cli_samr.c index d0c71c5bb1..ed42d56a02 100644 --- a/source3/rpc_client/cli_samr.c +++ b/source3/rpc_client/cli_samr.c @@ -25,6 +25,59 @@ /* User change password */ +NTSTATUS rpccli_samr_chgpasswd_user(struct rpc_pipe_client *cli, + TALLOC_CTX *mem_ctx, + struct policy_handle *user_handle, + const char *newpassword, + const char *oldpassword) +{ + NTSTATUS result = NT_STATUS_UNSUCCESSFUL; + struct samr_Password hash1, hash2, hash3, hash4, hash5, hash6; + + uchar old_nt_hash[16]; + uchar old_lm_hash[16]; + uchar new_nt_hash[16]; + uchar new_lm_hash[16]; + + ZERO_STRUCT(old_nt_hash); + ZERO_STRUCT(old_lm_hash); + ZERO_STRUCT(new_nt_hash); + ZERO_STRUCT(new_lm_hash); + + DEBUG(10,("rpccli_samr_chgpasswd_user\n")); + + E_md4hash(oldpassword, old_nt_hash); + E_md4hash(newpassword, new_nt_hash); + + E_deshash(oldpassword, old_lm_hash); + E_deshash(newpassword, new_lm_hash); + + E_old_pw_hash(new_lm_hash, old_lm_hash, hash1.hash); + E_old_pw_hash(old_lm_hash, new_lm_hash, hash2.hash); + E_old_pw_hash(new_nt_hash, old_nt_hash, hash3.hash); + E_old_pw_hash(old_nt_hash, new_nt_hash, hash4.hash); + E_old_pw_hash(old_lm_hash, new_nt_hash, hash5.hash); + E_old_pw_hash(old_nt_hash, new_lm_hash, hash6.hash); + + result = rpccli_samr_ChangePasswordUser(cli, mem_ctx, + user_handle, + true, + &hash1, + &hash2, + true, + &hash3, + &hash4, + true, + &hash5, + true, + &hash6); + + return result; +} + + +/* User change password */ + NTSTATUS rpccli_samr_chgpasswd_user2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *username, |