static bool api_net_req_chal(pipes_struct *p)
{
- NET_Q_REQ_CHAL q_u;
- NET_R_REQ_CHAL r_u;
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- /* grab the challenge... */
- if(!net_io_q_req_chal("", &q_u, data, 0)) {
- DEBUG(0,("api_net_req_chal: Failed to unmarshall NET_Q_REQ_CHAL.\n"));
- return False;
- }
-
- r_u.status = _net_req_chal(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if(!net_io_r_req_chal("", &r_u, rdata, 0)) {
- DEBUG(0,("api_net_req_chal: Failed to marshall NET_R_REQ_CHAL.\n"));
- return False;
- }
-
- return True;
+ return proxy_netr_call(p, NDR_NETR_SERVERREQCHALLENGE);
}
/*************************************************************************
init_net_r_req_chal:
*************************************************************************/
-static void init_net_r_req_chal(NET_R_REQ_CHAL *r_c,
- DOM_CHAL *srv_chal, NTSTATUS status)
+static void init_net_r_req_chal(struct netr_Credential *r,
+ DOM_CHAL *srv_chal)
{
DEBUG(6,("init_net_r_req_chal: %d\n", __LINE__));
- memcpy(r_c->srv_chal.data, srv_chal->data, sizeof(srv_chal->data));
- r_c->status = status;
+
+ memcpy(r->data, srv_chal->data, sizeof(r->data));
}
/*************************************************************************
}
/*************************************************************************
- _net_req_chal
+ _netr_ServerReqChallenge
*************************************************************************/
-NTSTATUS _net_req_chal(pipes_struct *p, NET_Q_REQ_CHAL *q_u, NET_R_REQ_CHAL *r_u)
+NTSTATUS _netr_ServerReqChallenge(pipes_struct *p,
+ struct netr_ServerReqChallenge *r)
{
if (!p->dc) {
p->dc = TALLOC_ZERO_P(p->pipe_state_mem_ctx, struct dcinfo);
return NT_STATUS_NO_MEMORY;
}
} else {
- DEBUG(10,("_net_req_chal: new challenge requested. Clearing old state.\n"));
+ DEBUG(10,("_netr_ServerReqChallenge: new challenge requested. Clearing old state.\n"));
ZERO_STRUCTP(p->dc);
}
- rpcstr_pull(p->dc->remote_machine,
- q_u->uni_logon_clnt.buffer,
- sizeof(fstring),q_u->uni_logon_clnt.uni_str_len*2,0);
+ fstrcpy(p->dc->remote_machine, r->in.computer_name);
/* Save the client challenge to the server. */
- memcpy(p->dc->clnt_chal.data, q_u->clnt_chal.data, sizeof(q_u->clnt_chal.data));
+ memcpy(p->dc->clnt_chal.data, r->in.credentials->data,
+ sizeof(r->in.credentials->data));
/* Create a server challenge for the client */
/* Set this to a random value. */
generate_random_buffer(p->dc->srv_chal.data, 8);
/* set up the LSA REQUEST CHALLENGE response */
- init_net_r_req_chal(r_u, &p->dc->srv_chal, NT_STATUS_OK);
+ init_net_r_req_chal(r->out.credentials, &p->dc->srv_chal);
p->dc->challenge_sent = True;
/****************************************************************
****************************************************************/
-NTSTATUS _netr_ServerReqChallenge(pipes_struct *p,
- struct netr_ServerReqChallenge *r)
-{
- p->rng_fault_state = true;
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
NTSTATUS _netr_ServerAuthenticate(pipes_struct *p,
struct netr_ServerAuthenticate *r)
{