struct tevent_context *ev;
struct netlogon_creds_cli_context *context;
struct dcerpc_binding_handle *binding_handle;
+ enum dcerpc_AuthType auth_type;
+ enum dcerpc_AuthLevel auth_level;
uint8_t num_nt_hashes;
uint8_t idx_nt_hashes;
const struct samr_Password * const *nt_hashes;
return tevent_req_post(req, ev);
}
+ dcerpc_binding_handle_auth_info(state->binding_handle,
+ &state->auth_type,
+ &state->auth_level);
+
state->try_auth3 = true;
state->try_auth2 = true;
struct netlogon_creds_cli_auth_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
bool downgraded;
if (state->try_auth3) {
return;
}
- ok = netlogon_creds_client_check(state->creds,
- &state->server_credential);
- if (!ok) {
- tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
+ status = netlogon_creds_client_verify(state->creds,
+ &state->server_credential,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
return;
}
struct tevent_context *ev;
struct netlogon_creds_cli_context *context;
struct dcerpc_binding_handle *binding_handle;
+ enum dcerpc_AuthType auth_type;
+ enum dcerpc_AuthLevel auth_level;
char *srv_name_slash;
struct tevent_req *req;
struct netlogon_creds_cli_check_state *state;
struct tevent_req *subreq;
- enum dcerpc_AuthType auth_type;
- enum dcerpc_AuthLevel auth_level;
NTSTATUS status;
req = tevent_req_create(mem_ctx, &state,
}
dcerpc_binding_handle_auth_info(state->binding_handle,
- &auth_type, &auth_level);
+ &state->auth_type,
+ &state->auth_level);
- if (auth_type != DCERPC_AUTH_TYPE_SCHANNEL) {
+ if (state->auth_type != DCERPC_AUTH_TYPE_SCHANNEL) {
tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER_MIX);
return tevent_req_post(req, ev);
}
- switch (auth_level) {
+ switch (state->auth_level) {
case DCERPC_AUTH_LEVEL_INTEGRITY:
case DCERPC_AUTH_LEVEL_PRIVACY:
break;
struct netlogon_creds_cli_check_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
status = dcerpc_netr_LogonGetCapabilities_recv(subreq, state,
&result);
return;
}
- ok = netlogon_creds_client_check(state->creds, &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(state->creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_check_cleanup(req, status);
return;
}
uint32_t requested_flags;
NTSTATUS status;
NTSTATUS result;
- bool ok;
status = dcerpc_netr_LogonGetCapabilities_recv(subreq, state,
&result);
return;
}
- ok = netlogon_creds_client_check(state->creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(state->creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_check_cleanup(req, status);
return;
}
struct netlogon_creds_cli_ServerPasswordSet_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
if (state->tmp_creds.negotiate_flags & NETLOGON_NEG_PASSWORD_SET2) {
status = dcerpc_netr_ServerPasswordSet2_recv(subreq, state,
}
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_ServerPasswordSet_cleanup(req, status);
return;
}
}
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ auth_type,
+ auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_LogonSamLogon_cleanup(req, status);
return;
}
struct netlogon_creds_cli_DsrUpdateReadOnlyServerDnsRecords_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
/*
* We use state->dns_names as the memory context, as this is
return;
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_DsrUpdateReadOnlyServerDnsRecords_cleanup(req, status);
return;
}
struct netlogon_creds_cli_ServerGetTrustInfo_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
/*
* We use state->dns_names as the memory context, as this is
return;
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_ServerGetTrustInfo_cleanup(req, status);
return;
}
struct netlogon_creds_cli_GetForestTrustInformation_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
/*
* We use state->dns_names as the memory context, as this is
return;
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_GetForestTrustInformation_cleanup(req, status);
return;
}
struct netlogon_creds_cli_SendToSam_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
status = dcerpc_netr_NetrLogonSendToSam_recv(subreq, state, &result);
TALLOC_FREE(subreq);
return;
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_SendToSam_cleanup(req, status);
return;
}
struct netlogon_creds_cli_LogonGetDomainInfo_state);
NTSTATUS status;
NTSTATUS result;
- bool ok;
/*
* We use state->dns_names as the memory context, as this is
return;
}
- ok = netlogon_creds_client_check(&state->tmp_creds,
- &state->rep_auth.cred);
- if (!ok) {
- status = NT_STATUS_ACCESS_DENIED;
- tevent_req_nterror(req, status);
+ status = netlogon_creds_client_verify(&state->tmp_creds,
+ &state->rep_auth.cred,
+ state->auth_type,
+ state->auth_level);
+ if (tevent_req_nterror(req, status)) {
netlogon_creds_cli_LogonGetDomainInfo_cleanup(req, status);
return;
}