libcli/auth Make the source3/ implementation of the NTLMSSP server common
[abartlet/samba.git/.git] / libcli / auth / ntlmssp_private.h
1 /*
2  *  Unix SMB/CIFS implementation.
3  *  Version 3.0
4  *  NTLMSSP Signing routines
5  *  Copyright (C) Andrew Bartlett 2003-2005
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 3 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
19  */
20
21 /* For structures internal to the NTLMSSP implementation that should not be exposed */
22
23 #include "../lib/crypto/arcfour.h"
24
25 struct ntlmssp_crypt_direction {
26         uint32_t seq_num;
27         uint8_t sign_key[16];
28         struct arcfour_state seal_state;
29 };
30
31 union ntlmssp_crypt_state {
32         /* NTLM */
33         struct ntlmssp_crypt_direction ntlm;
34
35         /* NTLM2 */
36         struct {
37                 struct ntlmssp_crypt_direction sending;
38                 struct ntlmssp_crypt_direction receiving;
39         } ntlm2;
40 };
41
42 /* The following definitions come from libcli/auth/ntlmssp.c  */
43
44 void debug_ntlmssp_flags(uint32_t neg_flags);
45 void ntlmssp_handle_neg_flags(struct ntlmssp_state *ntlmssp_state,
46                               uint32_t neg_flags, bool allow_lm);
47
48 /* The following definitions come from libcli/auth/ntlmssp_server.c  */
49
50 const char *ntlmssp_target_name(struct ntlmssp_state *ntlmssp_state,
51                                 uint32_t neg_flags, uint32_t *chal_flags);
52
53 NTSTATUS ntlmssp_server_negotiate(struct ntlmssp_state *ntlmssp_state,
54                                   TALLOC_CTX *out_mem_ctx,
55                                   const DATA_BLOB in, DATA_BLOB *out);
56 NTSTATUS ntlmssp_server_auth(struct ntlmssp_state *ntlmssp_state,
57                              TALLOC_CTX *out_mem_ctx,
58                              const DATA_BLOB request, DATA_BLOB *reply);
59