2011-03-02 16:00:23 +03:00
/*
Unix SMB / CIFS implementation .
SMB Transport encryption code .
Copyright ( C ) Jeremy Allison 2007.
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# ifndef _HEADER_SMB_CRYPT_H
# define _HEADER_SMB_CRYPT_H
# if HAVE_GSSAPI_GSSAPI_H
# include <gssapi/gssapi.h>
# elif HAVE_GSSAPI_GSSAPI_GENERIC_H
# include <gssapi/gssapi_generic.h>
# elif HAVE_GSSAPI_H
# include <gssapi.h>
# endif
# if HAVE_COM_ERR_H
# include <com_err.h>
# endif
/* Transport encryption state. */
enum smb_trans_enc_type {
SMB_TRANS_ENC_NTLM
# if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
, SMB_TRANS_ENC_GSS
# endif
} ;
# if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
struct smb_tran_enc_state_gss {
gss_ctx_id_t gss_ctx ;
gss_cred_id_t creds ;
} ;
# endif
struct smb_trans_enc_state {
enum smb_trans_enc_type smb_enc_type ;
2011-10-19 17:35:23 +04:00
uint16_t enc_ctx_num ;
2011-03-02 16:00:23 +03:00
bool enc_on ;
union {
2011-10-19 08:57:18 +04:00
struct gensec_security * gensec_security ;
2011-03-02 16:00:23 +03:00
# if defined(HAVE_GSSAPI) && defined(HAVE_KRB5)
struct smb_tran_enc_state_gss * gss_state ;
# endif
} s ;
} ;
2011-10-19 15:47:39 +04:00
/* The following definitions come from smb_seal.c */
2011-10-19 17:33:16 +04:00
2011-10-19 17:35:23 +04:00
NTSTATUS get_enc_ctx_num ( const uint8_t * buf , uint16_t * p_enc_ctx_num ) ;
2011-10-19 17:33:16 +04:00
bool common_encryption_on ( struct smb_trans_enc_state * es ) ;
NTSTATUS common_encrypt_buffer ( struct smb_trans_enc_state * es , char * buffer , char * * buf_out ) ;
NTSTATUS common_decrypt_buffer ( struct smb_trans_enc_state * es , char * buf ) ;
void common_free_encryption_state ( struct smb_trans_enc_state * * pp_es ) ;
void common_free_enc_buffer ( struct smb_trans_enc_state * es , char * buf ) ;
2011-03-02 16:00:23 +03:00
# endif /* _HEADER_SMB_CRYPT_H */