0001
0002
0003
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
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