const DATA_BLOB *names_blob,
DATA_BLOB *lm_response, DATA_BLOB *nt_response,
DATA_BLOB *lm_session_key, DATA_BLOB *user_session_key) ;
+struct lsa_TrustDomainInfoInfoEx;
+struct lsa_ForestTrustInformation2;
+struct trust_forest_domain_info {
+ bool is_local_forest;
+ bool is_checked_trust;
+ struct lsa_TrustDomainInfoInfoEx *tdo;
+ struct lsa_ForestTrustInformation2 *fti;
+};
NTSTATUS NTLMv2_RESPONSE_verify_netlogon_creds(const char *account_name,
const char *account_domain,
const DATA_BLOB response,
const struct netlogon_creds_CredentialState *creds,
- const char *workgroup);
+ const char *workgroup,
+ size_t num_domains,
+ const struct trust_forest_domain_info *domains);
/***********************************************************
encode a password buffer with a unicode password. The buffer
const char *account_domain,
const DATA_BLOB response,
const struct netlogon_creds_CredentialState *creds,
- const char *workgroup)
+ const char *workgroup,
+ size_t num_domains,
+ const struct trust_forest_domain_info *domains)
{
TALLOC_CTX *frame = NULL;
/* RespType + HiRespType */
TALLOC_CTX *frame = talloc_stackframe();
const char *workgroup = lp_workgroup();
NTSTATUS status;
+ size_t num_trusts = 0;
+ struct trust_forest_domain_info *trusts = NULL;
status = NTLMv2_RESPONSE_verify_netlogon_creds(
user_info->client.account_name,
user_info->client.domain_name,
user_info->password.response.nt,
creds,
- workgroup);
+ workgroup,
+ num_trusts,
+ trusts);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(frame);
return status;
struct loadparm_context *lp_ctx = dce_call->conn->dce_ctx->lp_ctx;
const char *workgroup = lpcfg_workgroup(lp_ctx);
NTSTATUS status;
+ size_t num_trusts = 0;
+ struct trust_forest_domain_info *trusts = NULL;
status = NTLMv2_RESPONSE_verify_netlogon_creds(
user_info->client.account_name,
user_info->client.domain_name,
user_info->password.response.nt,
creds,
- workgroup);
+ workgroup,
+ num_trusts,
+ trusts);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(frame);
return status;