summaryrefslogtreecommitdiff
path: root/source3/nsswitch/winbindd_creds.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nsswitch/winbindd_creds.c')
-rw-r--r--source3/nsswitch/winbindd_creds.c162
1 files changed, 0 insertions, 162 deletions
diff --git a/source3/nsswitch/winbindd_creds.c b/source3/nsswitch/winbindd_creds.c
deleted file mode 100644
index 62facb6769..0000000000
--- a/source3/nsswitch/winbindd_creds.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
-
- 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"
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_WINBIND
-
-#define MAX_CACHED_LOGINS 10
-
-NTSTATUS winbindd_get_creds(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- const DOM_SID *sid,
- NET_USER_INFO_3 **info3,
- const uint8 *cached_nt_pass[NT_HASH_LEN],
- const uint8 *cred_salt[NT_HASH_LEN])
-{
- NET_USER_INFO_3 *info;
- NTSTATUS status;
-
- status = wcache_get_creds(domain, mem_ctx, sid, cached_nt_pass, cred_salt);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- info = netsamlogon_cache_get(mem_ctx, sid);
- if (info == NULL) {
- return NT_STATUS_OBJECT_NAME_NOT_FOUND;
- }
-
- *info3 = info;
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS winbindd_store_creds(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- const char *user,
- const char *pass,
- NET_USER_INFO_3 *info3,
- const DOM_SID *user_sid)
-{
- NTSTATUS status;
- uchar nt_pass[NT_HASH_LEN];
- 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 |= LOGON_CACHED_ACCOUNT;
-
- } else if (user_sid != NULL) {
-
- sid_copy(&cred_sid, user_sid);
-
- } else if (user != NULL) {
-
- /* do lookup ourself */
-
- enum lsa_SidType type;
-
- if (!lookup_cached_name(mem_ctx,
- domain->name,
- user,
- &cred_sid,
- &type)) {
- return NT_STATUS_NO_SUCH_USER;
- }
- } else {
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (pass) {
-
- int count = 0;
-
- status = wcache_count_cached_creds(domain, &count);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
- DEBUG(11,("we have %d cached creds\n", count));
-
- if (count + 1 > MAX_CACHED_LOGINS) {
-
- DEBUG(10,("need to delete the oldest cached login\n"));
-
- status = wcache_remove_oldest_cached_creds(domain, &cred_sid);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10,("failed to remove oldest cached cred: %s\n",
- nt_errstr(status)));
- return status;
- }
- }
-
- E_md4hash(pass, nt_pass);
-
- dump_data_pw("nt_pass", nt_pass, NT_HASH_LEN);
-
- status = wcache_save_creds(domain, mem_ctx, &cred_sid, nt_pass);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
- }
-
- if (info3 != NULL && user != NULL) {
- if (!netsamlogon_cache_store(user, info3)) {
- return NT_STATUS_ACCESS_DENIED;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS winbindd_update_creds_by_info3(struct winbindd_domain *domain,
- 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)
-{
- return winbindd_store_creds(domain, mem_ctx, NULL, pass, NULL, sid);
-}
-
-NTSTATUS winbindd_update_creds_by_name(struct winbindd_domain *domain,
- TALLOC_CTX *mem_ctx,
- const char *user,
- const char *pass)
-{
- return winbindd_store_creds(domain, mem_ctx, user, pass, NULL, NULL);
-}
-
-