Winbind daemon - cached credentials funcions
Copyright (C) Guenther Deschner 2005
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
#include "winbindd.h"
+#include "../libcli/auth/libcli_auth.h"
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_WINBIND
NTSTATUS winbindd_get_creds(struct winbindd_domain *domain,
TALLOC_CTX *mem_ctx,
- const DOM_SID *sid,
- NET_USER_INFO_3 **info3,
+ const struct dom_sid *sid,
+ struct netr_SamInfo3 **info3,
const uint8 *cached_nt_pass[NT_HASH_LEN],
const uint8 *cred_salt[NT_HASH_LEN])
{
- NET_USER_INFO_3 *info;
+ struct netr_SamInfo3 *info;
NTSTATUS status;
status = wcache_get_creds(domain, mem_ctx, sid, cached_nt_pass, cred_salt);
TALLOC_CTX *mem_ctx,
const char *user,
const char *pass,
- NET_USER_INFO_3 *info3,
- const DOM_SID *user_sid)
+ struct netr_SamInfo3 *info3)
{
NTSTATUS status;
uchar nt_pass[NT_HASH_LEN];
- DOM_SID cred_sid;
+ struct dom_sid cred_sid;
if (info3 != NULL) {
-
- DOM_SID sid;
- sid_copy(&sid, &(info3->dom_sid.sid));
- sid_append_rid(&sid, info3->user_rid);
- sid_copy(&cred_sid, &sid);
- info3->user_flgs |= NETLOGON_CACHED_ACCOUNT;
-
- } else if (user_sid != NULL) {
-
- sid_copy(&cred_sid, user_sid);
-
+
+ sid_compose(&cred_sid, info3->base.domain_sid,
+ info3->base.rid);
+ info3->base.user_flags |= NETLOGON_CACHED_ACCOUNT;
+
} else if (user != NULL) {
-
+
/* do lookup ourself */
enum lsa_SidType type;
-
+
if (!lookup_cached_name(mem_ctx,
domain->name,
user,
} else {
return NT_STATUS_INVALID_PARAMETER;
}
-
+
if (pass) {
int count = 0;
TALLOC_CTX *mem_ctx,
const char *user,
const char *pass,
- NET_USER_INFO_3 *info3)
-{
- return winbindd_store_creds(domain, mem_ctx, user, pass, info3, NULL);
-}
-
-NTSTATUS winbindd_update_creds_by_sid(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- const DOM_SID *sid,
- const char *pass)
+ struct netr_SamInfo3 *info3)
{
- return winbindd_store_creds(domain, mem_ctx, NULL, pass, NULL, sid);
+ return winbindd_store_creds(domain, mem_ctx, user, pass, info3);
}
NTSTATUS winbindd_update_creds_by_name(struct winbindd_domain *domain,
const char *user,
const char *pass)
{
- return winbindd_store_creds(domain, mem_ctx, user, pass, NULL, NULL);
+ return winbindd_store_creds(domain, mem_ctx, user, pass, NULL);
}