s3-libsmb: use struct gensec_security directly
[ira/wip.git] / libcli / smb / smb_seal.h
1 /*
2    Unix SMB/CIFS implementation.
3    SMB Transport encryption code.
4    Copyright (C) Jeremy Allison 2007.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef _HEADER_SMB_CRYPT_H
21 #define _HEADER_SMB_CRYPT_H
22
23 #if HAVE_GSSAPI_GSSAPI_H
24 #include <gssapi/gssapi.h>
25 #elif HAVE_GSSAPI_GSSAPI_GENERIC_H
26 #include <gssapi/gssapi_generic.h>
27 #elif HAVE_GSSAPI_H
28 #include <gssapi.h>
29 #endif
30
31 /* Transport encryption state. */
32 enum smb_trans_enc_type {
33                 SMB_TRANS_ENC_NTLM
34 #if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
35                 , SMB_TRANS_ENC_GSS
36 #endif
37 };
38
39 #if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
40 struct smb_tran_enc_state_gss {
41         gss_ctx_id_t gss_ctx;
42         gss_cred_id_t creds;
43 };
44 #endif
45
46 struct smb_trans_enc_state {
47         enum smb_trans_enc_type smb_enc_type;
48         uint16_t enc_ctx_num;
49         bool enc_on;
50         struct gensec_security *gensec_security;
51 };
52
53 /* The following definitions come from smb_seal.c  */
54
55 NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16_t *p_enc_ctx_num);
56 bool common_encryption_on(struct smb_trans_enc_state *es);
57 NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out);
58 NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf);
59 void common_free_encryption_state(struct smb_trans_enc_state **pp_es);
60 void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf);
61
62 #endif /* _HEADER_SMB_CRYPT_H */