From 6f879b780a5ff37e80d1bf7c06e377909bcfc950 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 7 Sep 2017 12:36:14 +0200 Subject: netlogon_creds_cli: Create cli_credentials from netlogon creds ctx A netlogon_creds_cli_context holds all information required to do an schannel bind. Used in the next commit. Signed-off-by: Volker Lendecke Reviewed-by: Andrew Bartlett --- libcli/auth/netlogon_creds_cli.c | 32 ++++++++++++++++++++++++++++++++ libcli/auth/netlogon_creds_cli.h | 4 ++++ 2 files changed, 36 insertions(+) (limited to 'libcli') diff --git a/libcli/auth/netlogon_creds_cli.c b/libcli/auth/netlogon_creds_cli.c index c3b302addc4..25f14316dc2 100644 --- a/libcli/auth/netlogon_creds_cli.c +++ b/libcli/auth/netlogon_creds_cli.c @@ -38,6 +38,7 @@ #include "source3/include/g_lock.h" #include "libds/common/roles.h" #include "lib/crypto/crypto.h" +#include "auth/credentials/credentials.h" struct netlogon_creds_cli_locked_state; @@ -447,6 +448,37 @@ NTSTATUS netlogon_creds_cli_context_global(struct loadparm_context *lp_ctx, return NT_STATUS_OK; } +NTSTATUS netlogon_creds_bind_cli_credentials( + struct netlogon_creds_cli_context *context, TALLOC_CTX *mem_ctx, + struct cli_credentials **pcli_creds) +{ + struct cli_credentials *cli_creds; + struct netlogon_creds_CredentialState *ncreds; + NTSTATUS status; + + cli_creds = cli_credentials_init(mem_ctx); + if (cli_creds == NULL) { + return NT_STATUS_NO_MEMORY; + } + cli_credentials_set_secure_channel_type(cli_creds, + context->client.type); + cli_credentials_set_username(cli_creds, context->client.account, + CRED_SPECIFIED); + cli_credentials_set_domain(cli_creds, context->server.netbios_domain, + CRED_SPECIFIED); + cli_credentials_set_realm(cli_creds, context->server.dns_domain, + CRED_SPECIFIED); + + status = netlogon_creds_cli_get(context, cli_creds, &ncreds); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(cli_creds); + return status; + } + + *pcli_creds = cli_creds; + return NT_STATUS_OK; +} + char *netlogon_creds_cli_debug_string( const struct netlogon_creds_cli_context *context, TALLOC_CTX *mem_ctx) diff --git a/libcli/auth/netlogon_creds_cli.h b/libcli/auth/netlogon_creds_cli.h index 1e7df6600cb..7664387ab95 100644 --- a/libcli/auth/netlogon_creds_cli.h +++ b/libcli/auth/netlogon_creds_cli.h @@ -26,6 +26,7 @@ #include "librpc/gen_ndr/schannel.h" struct netlogon_creds_cli_context; +struct cli_credentials; struct messaging_context; struct dcerpc_binding_handle; struct db_context; @@ -43,6 +44,9 @@ NTSTATUS netlogon_creds_cli_context_global(struct loadparm_context *lp_ctx, const char *server_dns_domain, TALLOC_CTX *mem_ctx, struct netlogon_creds_cli_context **_context); +NTSTATUS netlogon_creds_bind_cli_credentials( + struct netlogon_creds_cli_context *context, TALLOC_CTX *mem_ctx, + struct cli_credentials **pcli_creds); char *netlogon_creds_cli_debug_string( const struct netlogon_creds_cli_context *context, -- cgit v1.2.1