From a09b627ecc446e78aa293e9e8b79c12f75a6b74e Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 26 Aug 2009 00:31:27 +0200 Subject: s3-schannel: add simple wrappers to fetch and store schannel auth info. Guenther --- source3/passdb/secrets.c | 1 + source3/passdb/secrets_schannel.c | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 source3/passdb/secrets_schannel.c (limited to 'source3/passdb') diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c index ee0dcaf42c..0a3871e620 100644 --- a/source3/passdb/secrets.c +++ b/source3/passdb/secrets.c @@ -24,6 +24,7 @@ #include "includes.h" #include "../libcli/auth/libcli_auth.h" + #undef DBGC_CLASS #define DBGC_CLASS DBGC_PASSDB diff --git a/source3/passdb/secrets_schannel.c b/source3/passdb/secrets_schannel.c new file mode 100644 index 0000000000..84a860ee6a --- /dev/null +++ b/source3/passdb/secrets_schannel.c @@ -0,0 +1,68 @@ +/* + Unix SMB/CIFS implementation. + Copyright (C) Guenther Deschner 2009 + + 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 . +*/ + +#include "includes.h" +#include "../libcli/auth/libcli_auth.h" +#include "../libcli/auth/schannel_state.h" + +/****************************************************************************** + Wrapper around schannel_fetch_session_key_tdb() + Note we must be root here. +*******************************************************************************/ + +NTSTATUS schannel_fetch_session_key(TALLOC_CTX *mem_ctx, + const char *computer_name, + struct netlogon_creds_CredentialState **pcreds) +{ + struct tdb_context *tdb; + NTSTATUS status; + + tdb = open_schannel_session_store(mem_ctx); + if (!tdb) { + return NT_STATUS_ACCESS_DENIED; + } + + status = schannel_fetch_session_key_tdb(tdb, mem_ctx, computer_name, pcreds); + + tdb_close(tdb); + + return status; +} + +/****************************************************************************** + Wrapper around schannel_store_session_key_tdb() + Note we must be root here. +*******************************************************************************/ + +NTSTATUS schannel_store_session_key(TALLOC_CTX *mem_ctx, + struct netlogon_creds_CredentialState *creds) +{ + struct tdb_context *tdb; + NTSTATUS status; + + tdb = open_schannel_session_store(mem_ctx); + if (!tdb) { + return NT_STATUS_ACCESS_DENIED; + } + + status = schannel_store_session_key_tdb(tdb, mem_ctx, creds); + + tdb_close(tdb); + + return status; +} -- cgit