081208e3340a4d1d5b0ac575a7bce3bc763b60fc
[tridge/samba.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 /* Transport encryption state. */
24 enum smb_trans_enc_type {
25                 SMB_TRANS_ENC_NTLM,
26                 SMB_TRANS_ENC_GSS
27 };
28
29 struct smb_trans_enc_state {
30         enum smb_trans_enc_type smb_enc_type;
31         uint16_t enc_ctx_num;
32         bool enc_on;
33         struct gensec_security *gensec_security;
34 };
35
36 /* The following definitions come from smb_seal.c  */
37
38 NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16_t *p_enc_ctx_num);
39 bool common_encryption_on(struct smb_trans_enc_state *es);
40 NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out);
41 NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf);
42 void common_free_encryption_state(struct smb_trans_enc_state **pp_es);
43 void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf);
44
45 #endif /* _HEADER_SMB_CRYPT_H */