Lines Matching refs:sess
78 static int ksmbd_gen_sess_key(struct ksmbd_session *sess, char *hash, in ksmbd_gen_sess_key() argument
112 rc = crypto_shash_final(CRYPTO_HMACMD5(ctx), sess->sess_key); in ksmbd_gen_sess_key()
123 static int calc_ntlmv2_hash(struct ksmbd_session *sess, char *ntlmv2_hash, in calc_ntlmv2_hash() argument
138 user_passkey(sess->user), in calc_ntlmv2_hash()
152 len = strlen(user_name(sess->user)); in calc_ntlmv2_hash()
159 conv_len = smb_strtoUTF16(uniname, user_name(sess->user), len, in calc_ntlmv2_hash()
160 sess->conn->local_nls); in calc_ntlmv2_hash()
184 sess->conn->local_nls); in calc_ntlmv2_hash()
217 int ksmbd_auth_ntlmv2(struct ksmbd_session *sess, struct ntlmv2_resp *ntlmv2, in ksmbd_auth_ntlmv2() argument
232 rc = calc_ntlmv2_hash(sess, ntlmv2_hash, domain_name); in ksmbd_auth_ntlmv2()
259 memcpy(construct, sess->ntlmssp.cryptkey, CIFS_CRYPTO_KEY_SIZE); in ksmbd_auth_ntlmv2()
274 rc = ksmbd_gen_sess_key(sess, ntlmv2_hash, ntlmv2_rsp); in ksmbd_auth_ntlmv2()
298 int blob_len, struct ksmbd_session *sess) in ksmbd_decode_ntlmssp_auth_blob() argument
327 dn_len, true, sess->conn->local_nls); in ksmbd_decode_ntlmssp_auth_blob()
334 ret = ksmbd_auth_ntlmv2(sess, (struct ntlmv2_resp *)((char *)authblob + nt_off), in ksmbd_decode_ntlmssp_auth_blob()
350 int blob_len, struct ksmbd_session *sess) in ksmbd_decode_ntlmssp_neg_blob() argument
364 sess->ntlmssp.client_flags = le32_to_cpu(negblob->NegotiateFlags); in ksmbd_decode_ntlmssp_neg_blob()
378 struct ksmbd_session *sess) in ksmbd_build_ntlmssp_challenge_blob() argument
385 int cflags = sess->ntlmssp.client_flags; in ksmbd_build_ntlmssp_challenge_blob()
406 if (sess->conn->use_spnego && in ksmbd_build_ntlmssp_challenge_blob()
417 sess->conn->local_nls); in ksmbd_build_ntlmssp_challenge_blob()
433 get_random_bytes(sess->ntlmssp.cryptkey, sizeof(__u64)); in ksmbd_build_ntlmssp_challenge_blob()
434 memcpy(chgblob->Challenge, sess->ntlmssp.cryptkey, in ksmbd_build_ntlmssp_challenge_blob()
469 int ksmbd_krb5_authenticate(struct ksmbd_session *sess, char *in_blob, in ksmbd_krb5_authenticate() argument
495 if (resp->session_key_len > sizeof(sess->sess_key)) { in ksmbd_krb5_authenticate()
507 sess->user = user; in ksmbd_krb5_authenticate()
509 memcpy(sess->sess_key, resp->payload, resp->session_key_len); in ksmbd_krb5_authenticate()
519 int ksmbd_krb5_authenticate(struct ksmbd_session *sess, char *in_blob, in ksmbd_krb5_authenticate() argument
634 static int generate_key(struct ksmbd_session *sess, struct kvec label, in generate_key() argument
656 sess->sess_key, in generate_key()
695 if (sess->conn->cipher_type == SMB2_ENCRYPTION_AES256_CCM || in generate_key()
696 sess->conn->cipher_type == SMB2_ENCRYPTION_AES256_GCM) in generate_key()
719 static int generate_smb3signingkey(struct ksmbd_session *sess, in generate_smb3signingkey() argument
727 chann = lookup_chann_list(sess, conn); in generate_smb3signingkey()
731 if (sess->conn->dialect >= SMB30_PROT_ID && signing->binding) in generate_smb3signingkey()
734 key = sess->smb3signingkey; in generate_smb3signingkey()
736 rc = generate_key(sess, signing->label, signing->context, key, in generate_smb3signingkey()
741 if (!(sess->conn->dialect >= SMB30_PROT_ID && signing->binding)) in generate_smb3signingkey()
745 ksmbd_debug(AUTH, "Session Id %llu\n", sess->id); in generate_smb3signingkey()
747 SMB2_NTLMV2_SESSKEY_SIZE, sess->sess_key); in generate_smb3signingkey()
753 int ksmbd_gen_smb30_signingkey(struct ksmbd_session *sess, in ksmbd_gen_smb30_signingkey() argument
764 return generate_smb3signingkey(sess, conn, &d); in ksmbd_gen_smb30_signingkey()
767 int ksmbd_gen_smb311_signingkey(struct ksmbd_session *sess, in ksmbd_gen_smb311_signingkey() argument
777 preauth_sess = ksmbd_preauth_session_lookup(conn, sess->id); in ksmbd_gen_smb311_signingkey()
782 d.context.iov_base = sess->Preauth_HashValue; in ksmbd_gen_smb311_signingkey()
787 return generate_smb3signingkey(sess, conn, &d); in ksmbd_gen_smb311_signingkey()
795 static int generate_smb3encryptionkey(struct ksmbd_session *sess, in generate_smb3encryptionkey() argument
800 rc = generate_key(sess, ptwin->encryption.label, in generate_smb3encryptionkey()
801 ptwin->encryption.context, sess->smb3encryptionkey, in generate_smb3encryptionkey()
806 rc = generate_key(sess, ptwin->decryption.label, in generate_smb3encryptionkey()
808 sess->smb3decryptionkey, SMB3_ENC_DEC_KEY_SIZE); in generate_smb3encryptionkey()
813 ksmbd_debug(AUTH, "Cipher type %d\n", sess->conn->cipher_type); in generate_smb3encryptionkey()
814 ksmbd_debug(AUTH, "Session Id %llu\n", sess->id); in generate_smb3encryptionkey()
816 SMB2_NTLMV2_SESSKEY_SIZE, sess->sess_key); in generate_smb3encryptionkey()
817 if (sess->conn->cipher_type == SMB2_ENCRYPTION_AES256_CCM || in generate_smb3encryptionkey()
818 sess->conn->cipher_type == SMB2_ENCRYPTION_AES256_GCM) { in generate_smb3encryptionkey()
820 SMB3_GCM256_CRYPTKEY_SIZE, sess->smb3encryptionkey); in generate_smb3encryptionkey()
822 SMB3_GCM256_CRYPTKEY_SIZE, sess->smb3decryptionkey); in generate_smb3encryptionkey()
825 SMB3_GCM128_CRYPTKEY_SIZE, sess->smb3encryptionkey); in generate_smb3encryptionkey()
827 SMB3_GCM128_CRYPTKEY_SIZE, sess->smb3decryptionkey); in generate_smb3encryptionkey()
832 int ksmbd_gen_smb30_encryptionkey(struct ksmbd_session *sess) in ksmbd_gen_smb30_encryptionkey() argument
849 return generate_smb3encryptionkey(sess, &twin); in ksmbd_gen_smb30_encryptionkey()
852 int ksmbd_gen_smb311_encryptionkey(struct ksmbd_session *sess) in ksmbd_gen_smb311_encryptionkey() argument
860 d->context.iov_base = sess->Preauth_HashValue; in ksmbd_gen_smb311_encryptionkey()
866 d->context.iov_base = sess->Preauth_HashValue; in ksmbd_gen_smb311_encryptionkey()
869 return generate_smb3encryptionkey(sess, &twin); in ksmbd_gen_smb311_encryptionkey()
956 struct ksmbd_session *sess; in ksmbd_get_encryption_key() local
959 sess = ksmbd_session_lookup_all(conn, ses_id); in ksmbd_get_encryption_key()
960 if (!sess) in ksmbd_get_encryption_key()
963 ses_enc_key = enc ? sess->smb3encryptionkey : in ksmbd_get_encryption_key()
964 sess->smb3decryptionkey; in ksmbd_get_encryption_key()