Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
0004  */
0005 
0006 #ifndef __AUTH_H__
0007 #define __AUTH_H__
0008 
0009 #include "ntlmssp.h"
0010 
0011 #ifdef CONFIG_SMB_SERVER_KERBEROS5
0012 #define AUTH_GSS_LENGTH     96
0013 #define AUTH_GSS_PADDING    0
0014 #else
0015 #define AUTH_GSS_LENGTH     74
0016 #define AUTH_GSS_PADDING    6
0017 #endif
0018 
0019 #define CIFS_HMAC_MD5_HASH_SIZE (16)
0020 #define CIFS_NTHASH_SIZE    (16)
0021 
0022 /*
0023  * Size of the ntlm client response
0024  */
0025 #define CIFS_AUTH_RESP_SIZE     24
0026 #define CIFS_SMB1_SIGNATURE_SIZE    8
0027 #define CIFS_SMB1_SESSKEY_SIZE      16
0028 
0029 #define KSMBD_AUTH_NTLMSSP  0x0001
0030 #define KSMBD_AUTH_KRB5     0x0002
0031 #define KSMBD_AUTH_MSKRB5   0x0004
0032 #define KSMBD_AUTH_KRB5U2U  0x0008
0033 
0034 struct ksmbd_session;
0035 struct ksmbd_conn;
0036 struct kvec;
0037 
0038 int ksmbd_crypt_message(struct ksmbd_conn *conn, struct kvec *iov,
0039             unsigned int nvec, int enc);
0040 void ksmbd_copy_gss_neg_header(void *buf);
0041 int ksmbd_auth_ntlmv2(struct ksmbd_conn *conn, struct ksmbd_session *sess,
0042               struct ntlmv2_resp *ntlmv2, int blen, char *domain_name,
0043               char *cryptkey);
0044 int ksmbd_decode_ntlmssp_auth_blob(struct authenticate_message *authblob,
0045                    int blob_len, struct ksmbd_conn *conn,
0046                    struct ksmbd_session *sess);
0047 int ksmbd_decode_ntlmssp_neg_blob(struct negotiate_message *negblob,
0048                   int blob_len, struct ksmbd_conn *conn);
0049 unsigned int
0050 ksmbd_build_ntlmssp_challenge_blob(struct challenge_message *chgblob,
0051                    struct ksmbd_conn *conn);
0052 int ksmbd_krb5_authenticate(struct ksmbd_session *sess, char *in_blob,
0053                 int in_len, char *out_blob, int *out_len);
0054 int ksmbd_sign_smb2_pdu(struct ksmbd_conn *conn, char *key, struct kvec *iov,
0055             int n_vec, char *sig);
0056 int ksmbd_sign_smb3_pdu(struct ksmbd_conn *conn, char *key, struct kvec *iov,
0057             int n_vec, char *sig);
0058 int ksmbd_gen_smb30_signingkey(struct ksmbd_session *sess,
0059                    struct ksmbd_conn *conn);
0060 int ksmbd_gen_smb311_signingkey(struct ksmbd_session *sess,
0061                 struct ksmbd_conn *conn);
0062 int ksmbd_gen_smb30_encryptionkey(struct ksmbd_conn *conn,
0063                   struct ksmbd_session *sess);
0064 int ksmbd_gen_smb311_encryptionkey(struct ksmbd_conn *conn,
0065                    struct ksmbd_session *sess);
0066 int ksmbd_gen_preauth_integrity_hash(struct ksmbd_conn *conn, char *buf,
0067                      __u8 *pi_hash);
0068 int ksmbd_gen_sd_hash(struct ksmbd_conn *conn, char *sd_buf, int len,
0069               __u8 *pi_hash);
0070 #endif