Merge tag '5.15-rc-smb3-fixes-part1' of git://git.samba.org/sfrench/cifs-2.6
[linux-2.6-microblaze.git] / fs / cifs / cifsencrypt.c
index ecf15d8..6679e07 100644 (file)
@@ -22,7 +22,7 @@
 #include <linux/random.h>
 #include <linux/highmem.h>
 #include <linux/fips.h>
-#include <crypto/arc4.h>
+#include "../cifs_common/arc4.h"
 #include <crypto/aead.h>
 
 int __cifs_calc_signature(struct smb_rqst *rqst,
@@ -250,87 +250,6 @@ int cifs_verify_signature(struct smb_rqst *rqst,
 
 }
 
-/* first calculate 24 bytes ntlm response and then 16 byte session key */
-int setup_ntlm_response(struct cifs_ses *ses, const struct nls_table *nls_cp)
-{
-       int rc = 0;
-       unsigned int temp_len = CIFS_SESS_KEY_SIZE + CIFS_AUTH_RESP_SIZE;
-       char temp_key[CIFS_SESS_KEY_SIZE];
-
-       if (!ses)
-               return -EINVAL;
-
-       ses->auth_key.response = kmalloc(temp_len, GFP_KERNEL);
-       if (!ses->auth_key.response)
-               return -ENOMEM;
-
-       ses->auth_key.len = temp_len;
-
-       rc = SMBNTencrypt(ses->password, ses->server->cryptkey,
-                       ses->auth_key.response + CIFS_SESS_KEY_SIZE, nls_cp);
-       if (rc) {
-               cifs_dbg(FYI, "%s Can't generate NTLM response, error: %d\n",
-                        __func__, rc);
-               return rc;
-       }
-
-       rc = E_md4hash(ses->password, temp_key, nls_cp);
-       if (rc) {
-               cifs_dbg(FYI, "%s Can't generate NT hash, error: %d\n",
-                        __func__, rc);
-               return rc;
-       }
-
-       rc = mdfour(ses->auth_key.response, temp_key, CIFS_SESS_KEY_SIZE);
-       if (rc)
-               cifs_dbg(FYI, "%s Can't generate NTLM session key, error: %d\n",
-                        __func__, rc);
-
-       return rc;
-}
-
-#ifdef CONFIG_CIFS_WEAK_PW_HASH
-int calc_lanman_hash(const char *password, const char *cryptkey, bool encrypt,
-                       char *lnm_session_key)
-{
-       int i, len;
-       int rc;
-       char password_with_pad[CIFS_ENCPWD_SIZE] = {0};
-
-       if (password) {
-               for (len = 0; len < CIFS_ENCPWD_SIZE; len++)
-                       if (!password[len])
-                               break;
-
-               memcpy(password_with_pad, password, len);
-       }
-
-       if (!encrypt && global_secflags & CIFSSEC_MAY_PLNTXT) {
-               memcpy(lnm_session_key, password_with_pad,
-                       CIFS_ENCPWD_SIZE);
-               return 0;
-       }
-
-       /* calculate old style session key */
-       /* calling toupper is less broken than repeatedly
-       calling nls_toupper would be since that will never
-       work for UTF8, but neither handles multibyte code pages
-       but the only alternative would be converting to UCS-16 (Unicode)
-       (using a routine something like UniStrupr) then
-       uppercasing and then converting back from Unicode - which
-       would only worth doing it if we knew it were utf8. Basically
-       utf8 and other multibyte codepages each need their own strupper
-       function since a byte at a time will ont work. */
-
-       for (i = 0; i < CIFS_ENCPWD_SIZE; i++)
-               password_with_pad[i] = toupper(password_with_pad[i]);
-
-       rc = SMBencrypt(password_with_pad, cryptkey, lnm_session_key);
-
-       return rc;
-}
-#endif /* CIFS_WEAK_PW_HASH */
-
 /* Build a proper attribute value/target info pairs blob.
  * Fill in netbios and dns domain name and workstation name
  * and client time (total five av pairs and + one end of fields indicator.
@@ -780,9 +699,9 @@ calc_seckey(struct cifs_ses *ses)
                return -ENOMEM;
        }
 
-       arc4_setkey(ctx_arc4, ses->auth_key.response, CIFS_SESS_KEY_SIZE);
-       arc4_crypt(ctx_arc4, ses->ntlmssp->ciphertext, sec_key,
-                  CIFS_CPHTXT_SIZE);
+       cifs_arc4_setkey(ctx_arc4, ses->auth_key.response, CIFS_SESS_KEY_SIZE);
+       cifs_arc4_crypt(ctx_arc4, ses->ntlmssp->ciphertext, sec_key,
+                       CIFS_CPHTXT_SIZE);
 
        /* make secondary_key/nonce as session key */
        memcpy(ses->auth_key.response, sec_key, CIFS_SESS_KEY_SIZE);