s3:ntlmssp Split the NTLMSSP server into before and after authentication
[amitay/samba.git] / libcli / auth / ntlmssp_server.c
1 /*
2    Unix SMB/Netbios implementation.
3    Version 3.0
4    handle NLTMSSP, server side
5
6    Copyright (C) Andrew Tridgell      2001
7    Copyright (C) Andrew Bartlett 2001-2010
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 */
22
23 #include "includes.h"
24 #include "../libcli/auth/ntlmssp.h"
25 #include "../libcli/auth/ntlmssp_private.h"
26
27 /**
28  * Determine correct target name flags for reply, given server role
29  * and negotiated flags
30  *
31  * @param ntlmssp_state NTLMSSP State
32  * @param neg_flags The flags from the packet
33  * @param chal_flags The flags to be set in the reply packet
34  * @return The 'target name' string.
35  */
36
37 const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
38                                 uint32_t neg_flags, uint32_t *chal_flags)
39 {
40         if (neg_flags & NTLMSSP_REQUEST_TARGET) {
41                 *chal_flags |= NTLMSSP_NEGOTIATE_TARGET_INFO;
42                 *chal_flags |= NTLMSSP_REQUEST_TARGET;
43                 if (ntlmssp_state->server.is_standalone) {
44                         *chal_flags |= NTLMSSP_TARGET_TYPE_SERVER;
45                         return ntlmssp_state->server.netbios_name;
46                 } else {
47                         *chal_flags |= NTLMSSP_TARGET_TYPE_DOMAIN;
48                         return ntlmssp_state->server.netbios_domain;
49                 };
50         } else {
51                 return "";
52         }
53 }