mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
rpc_client: add init_samr_CryptPasswordEx and init_samr_CryptPassword.
Guenther (This used to be commit 87b6aac13598a2ac28054de5ab90d63bef65f1fe)
This commit is contained in:
parent
b15d2dea75
commit
21a8177ed2
@ -7574,6 +7574,12 @@ void init_samr_user_info23(struct samr_UserInfo23 *r,
|
||||
void init_samr_user_info24(struct samr_UserInfo24 *r,
|
||||
uint8_t data[516],
|
||||
uint8_t pw_len);
|
||||
void init_samr_CryptPasswordEx(const char *pwd,
|
||||
DATA_BLOB *session_key,
|
||||
struct samr_CryptPasswordEx *pwd_buf);
|
||||
void init_samr_CryptPassword(const char *pwd,
|
||||
DATA_BLOB *session_key,
|
||||
struct samr_CryptPassword *pwd_buf);
|
||||
|
||||
/* The following definitions come from rpc_client/init_srvsvc.c */
|
||||
|
||||
|
@ -460,3 +460,49 @@ void init_samr_user_info24(struct samr_UserInfo24 *r,
|
||||
memcpy(r->password.data, data, sizeof(r->password.data));
|
||||
r->pw_len = pw_len;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
inits a samr_CryptPasswordEx structure
|
||||
*************************************************************************/
|
||||
|
||||
void init_samr_CryptPasswordEx(const char *pwd,
|
||||
DATA_BLOB *session_key,
|
||||
struct samr_CryptPasswordEx *pwd_buf)
|
||||
{
|
||||
/* samr_CryptPasswordEx */
|
||||
|
||||
uchar pwbuf[532];
|
||||
struct MD5Context md5_ctx;
|
||||
uint8_t confounder[16];
|
||||
DATA_BLOB confounded_session_key = data_blob(NULL, 16);
|
||||
|
||||
encode_pw_buffer(pwbuf, pwd, STR_UNICODE);
|
||||
|
||||
generate_random_buffer((uint8_t *)confounder, 16);
|
||||
|
||||
MD5Init(&md5_ctx);
|
||||
MD5Update(&md5_ctx, confounder, 16);
|
||||
MD5Update(&md5_ctx, session_key->data,
|
||||
session_key->length);
|
||||
MD5Final(confounded_session_key.data, &md5_ctx);
|
||||
|
||||
SamOEMhashBlob(pwbuf, 516, &confounded_session_key);
|
||||
memcpy(&pwbuf[516], confounder, 16);
|
||||
|
||||
memcpy(pwd_buf->data, pwbuf, sizeof(pwbuf));
|
||||
data_blob_free(&confounded_session_key);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
inits a samr_CryptPassword structure
|
||||
*************************************************************************/
|
||||
|
||||
void init_samr_CryptPassword(const char *pwd,
|
||||
DATA_BLOB *session_key,
|
||||
struct samr_CryptPassword *pwd_buf)
|
||||
{
|
||||
/* samr_CryptPassword */
|
||||
|
||||
encode_pw_buffer(pwd_buf->data, pwd, STR_UNICODE);
|
||||
SamOEMhashBlob(pwd_buf->data, 516, session_key);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user