2021-03-16 04:49:09 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright ( C ) 2018 Samsung Electronics Co . , Ltd .
*/
# ifndef __AUTH_H__
# define __AUTH_H__
# include "ntlmssp.h"
# ifdef CONFIG_SMB_SERVER_KERBEROS5
# define AUTH_GSS_LENGTH 96
# define AUTH_GSS_PADDING 0
# else
# define AUTH_GSS_LENGTH 74
# define AUTH_GSS_PADDING 6
# endif
# define CIFS_HMAC_MD5_HASH_SIZE (16)
# define CIFS_NTHASH_SIZE (16)
/*
* Size of the ntlm client response
*/
# define CIFS_AUTH_RESP_SIZE 24
# define CIFS_SMB1_SIGNATURE_SIZE 8
# define CIFS_SMB1_SESSKEY_SIZE 16
# define KSMBD_AUTH_NTLMSSP 0x0001
# define KSMBD_AUTH_KRB5 0x0002
# define KSMBD_AUTH_MSKRB5 0x0004
# define KSMBD_AUTH_KRB5U2U 0x0008
struct ksmbd_session ;
struct ksmbd_conn ;
struct kvec ;
2021-05-26 11:57:12 +03:00
int ksmbd_crypt_message ( struct ksmbd_conn * conn , struct kvec * iov ,
unsigned int nvec , int enc ) ;
2021-03-16 04:49:09 +03:00
void ksmbd_copy_gss_neg_header ( void * buf ) ;
2021-05-26 11:57:12 +03:00
int ksmbd_auth_ntlm ( struct ksmbd_session * sess , char * pw_buf ) ;
int ksmbd_auth_ntlmv2 ( struct ksmbd_session * sess , struct ntlmv2_resp * ntlmv2 ,
int blen , char * domain_name ) ;
2021-03-16 04:49:09 +03:00
int ksmbd_decode_ntlmssp_auth_blob ( struct authenticate_message * authblob ,
2021-05-26 11:57:12 +03:00
int blob_len , struct ksmbd_session * sess ) ;
2021-03-16 04:49:09 +03:00
int ksmbd_decode_ntlmssp_neg_blob ( struct negotiate_message * negblob ,
2021-05-26 11:57:12 +03:00
int blob_len , struct ksmbd_session * sess ) ;
2021-03-16 04:49:09 +03:00
unsigned int
ksmbd_build_ntlmssp_challenge_blob ( struct challenge_message * chgblob ,
2021-05-26 11:57:12 +03:00
struct ksmbd_session * sess ) ;
int ksmbd_krb5_authenticate ( struct ksmbd_session * sess , char * in_blob ,
int in_len , char * out_blob , int * out_len ) ;
int ksmbd_sign_smb2_pdu ( struct ksmbd_conn * conn , char * key , struct kvec * iov ,
int n_vec , char * sig ) ;
int ksmbd_sign_smb3_pdu ( struct ksmbd_conn * conn , char * key , struct kvec * iov ,
int n_vec , char * sig ) ;
2021-06-18 04:04:19 +03:00
int ksmbd_gen_smb30_signingkey ( struct ksmbd_session * sess ,
struct ksmbd_conn * conn ) ;
int ksmbd_gen_smb311_signingkey ( struct ksmbd_session * sess ,
struct ksmbd_conn * conn ) ;
2021-03-16 04:49:09 +03:00
int ksmbd_gen_smb30_encryptionkey ( struct ksmbd_session * sess ) ;
int ksmbd_gen_smb311_encryptionkey ( struct ksmbd_session * sess ) ;
2021-05-26 11:57:12 +03:00
int ksmbd_gen_preauth_integrity_hash ( struct ksmbd_conn * conn , char * buf ,
2021-03-16 04:49:09 +03:00
__u8 * pi_hash ) ;
int ksmbd_gen_sd_hash ( struct ksmbd_conn * conn , char * sd_buf , int len ,
2021-05-26 11:57:12 +03:00
__u8 * pi_hash ) ;
2021-03-16 04:49:09 +03:00
# endif