#include <linux/fs.h>
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/net.h>
#include <linux/delay.h>
#include <linux/uaccess.h>
#include <asm/processor.h>
#include <linux/mempool.h>
#include <linux/highmem.h>
#include <crypto/aead.h>
#include "cifsglob.h"
#include "cifsproto.h"
#include "smb2proto.h"
#include "cifs_debug.h"
#include "../common/smb2status.h"
#include "smb2glob.h"
static int
smb3_crypto_shash_allocate(struct TCP_Server_Info *server)
{ … }
int
smb311_crypto_shash_allocate(struct TCP_Server_Info *server)
{ … }
static
int smb2_get_sign_key(__u64 ses_id, struct TCP_Server_Info *server, u8 *key)
{ … }
static struct cifs_ses *
smb2_find_smb_ses_unlocked(struct TCP_Server_Info *server, __u64 ses_id)
{ … }
struct cifs_ses *
smb2_find_smb_ses(struct TCP_Server_Info *server, __u64 ses_id)
{ … }
static struct cifs_tcon *
smb2_find_smb_sess_tcon_unlocked(struct cifs_ses *ses, __u32 tid)
{ … }
struct cifs_tcon *
smb2_find_smb_tcon(struct TCP_Server_Info *server, __u64 ses_id, __u32 tid)
{ … }
int
smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
bool allocate_crypto)
{ … }
static int generate_key(struct cifs_ses *ses, struct kvec label,
struct kvec context, __u8 *key, unsigned int key_size)
{ … }
struct derivation { … };
struct derivation_triplet { … };
static int
generate_smb3signingkey(struct cifs_ses *ses,
struct TCP_Server_Info *server,
const struct derivation_triplet *ptriplet)
{ … }
int
generate_smb30signingkey(struct cifs_ses *ses,
struct TCP_Server_Info *server)
{ … }
int
generate_smb311signingkey(struct cifs_ses *ses,
struct TCP_Server_Info *server)
{ … }
int
smb3_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
bool allocate_crypto)
{ … }
static int
smb2_sign_rqst(struct smb_rqst *rqst, struct TCP_Server_Info *server)
{ … }
int
smb2_verify_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server)
{ … }
static inline void
smb2_seq_num_into_buf(struct TCP_Server_Info *server,
struct smb2_hdr *shdr)
{ … }
static struct mid_q_entry *
smb2_mid_entry_alloc(const struct smb2_hdr *shdr,
struct TCP_Server_Info *server)
{ … }
static int
smb2_get_mid_entry(struct cifs_ses *ses, struct TCP_Server_Info *server,
struct smb2_hdr *shdr, struct mid_q_entry **mid)
{ … }
int
smb2_check_receive(struct mid_q_entry *mid, struct TCP_Server_Info *server,
bool log_error)
{ … }
struct mid_q_entry *
smb2_setup_request(struct cifs_ses *ses, struct TCP_Server_Info *server,
struct smb_rqst *rqst)
{ … }
struct mid_q_entry *
smb2_setup_async_request(struct TCP_Server_Info *server, struct smb_rqst *rqst)
{ … }
int
smb3_crypto_aead_allocate(struct TCP_Server_Info *server)
{ … }