|
@@ -265,91 +265,6 @@ E_md4hash(const unsigned char *passwd, unsigned char *p16)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
-#if 0 /* currently unused */
|
|
|
-/* Does both the NT and LM owfs of a user's password */
|
|
|
-static void
|
|
|
-nt_lm_owf_gen(char *pwd, unsigned char nt_p16[16], unsigned char p16[16])
|
|
|
-{
|
|
|
- char passwd[514];
|
|
|
-
|
|
|
- memset(passwd, '\0', 514);
|
|
|
- if (strlen(pwd) < 513)
|
|
|
- strcpy(passwd, pwd);
|
|
|
- else
|
|
|
- memcpy(passwd, pwd, 512);
|
|
|
- /* Calculate the MD4 hash (NT compatible) of the password */
|
|
|
- memset(nt_p16, '\0', 16);
|
|
|
- E_md4hash(passwd, nt_p16);
|
|
|
-
|
|
|
- /* Mangle the passwords into Lanman format */
|
|
|
- passwd[14] = '\0';
|
|
|
-/* strupper(passwd); */
|
|
|
-
|
|
|
- /* Calculate the SMB (lanman) hash functions of the password */
|
|
|
-
|
|
|
- memset(p16, '\0', 16);
|
|
|
- E_P16((unsigned char *) passwd, (unsigned char *) p16);
|
|
|
-
|
|
|
- /* clear out local copy of user's password (just being paranoid). */
|
|
|
- memset(passwd, '\0', sizeof(passwd));
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-/* Does the NTLMv2 owfs of a user's password */
|
|
|
-#if 0 /* function not needed yet - but will be soon */
|
|
|
-static void
|
|
|
-ntv2_owf_gen(const unsigned char owf[16], const char *user_n,
|
|
|
- const char *domain_n, unsigned char kr_buf[16],
|
|
|
- const struct nls_table *nls_codepage)
|
|
|
-{
|
|
|
- wchar_t *user_u;
|
|
|
- wchar_t *dom_u;
|
|
|
- int user_l, domain_l;
|
|
|
- struct HMACMD5Context ctx;
|
|
|
-
|
|
|
- /* might as well do one alloc to hold both (user_u and dom_u) */
|
|
|
- user_u = kmalloc(2048 * sizeof(wchar_t), GFP_KERNEL);
|
|
|
- if (user_u == NULL)
|
|
|
- return;
|
|
|
- dom_u = user_u + 1024;
|
|
|
-
|
|
|
- /* push_ucs2(NULL, user_u, user_n, (user_l+1)*2,
|
|
|
- STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER);
|
|
|
- push_ucs2(NULL, dom_u, domain_n, (domain_l+1)*2,
|
|
|
- STR_UNICODE|STR_NOALIGN|STR_TERMINATE|STR_UPPER); */
|
|
|
-
|
|
|
- /* BB user and domain may need to be uppercased */
|
|
|
- user_l = cifs_strtoUCS(user_u, user_n, 511, nls_codepage);
|
|
|
- domain_l = cifs_strtoUCS(dom_u, domain_n, 511, nls_codepage);
|
|
|
-
|
|
|
- user_l++; /* trailing null */
|
|
|
- domain_l++;
|
|
|
-
|
|
|
- hmac_md5_init_limK_to_64(owf, 16, &ctx);
|
|
|
- hmac_md5_update((const unsigned char *) user_u, user_l * 2, &ctx);
|
|
|
- hmac_md5_update((const unsigned char *) dom_u, domain_l * 2, &ctx);
|
|
|
- hmac_md5_final(kr_buf, &ctx);
|
|
|
-
|
|
|
- kfree(user_u);
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-/* Does the des encryption from the FIRST 8 BYTES of the NT or LM MD4 hash. */
|
|
|
-#if 0 /* currently unused */
|
|
|
-static void
|
|
|
-NTLMSSPOWFencrypt(unsigned char passwd[8],
|
|
|
- unsigned char *ntlmchalresp, unsigned char p24[24])
|
|
|
-{
|
|
|
- unsigned char p21[21];
|
|
|
-
|
|
|
- memset(p21, '\0', 21);
|
|
|
- memcpy(p21, passwd, 8);
|
|
|
- memset(p21 + 8, 0xbd, 8);
|
|
|
-
|
|
|
- E_P24(p21, ntlmchalresp, p24);
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
/* Does the NT MD4 hash then des encryption. */
|
|
|
int
|
|
|
SMBNTencrypt(unsigned char *passwd, unsigned char *c8, unsigned char *p24)
|
|
@@ -369,39 +284,3 @@ SMBNTencrypt(unsigned char *passwd, unsigned char *c8, unsigned char *p24)
|
|
|
rc = E_P24(p21, c8, p24);
|
|
|
return rc;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-/* Does the md5 encryption from the NT hash for NTLMv2. */
|
|
|
-/* These routines will be needed later */
|
|
|
-#if 0
|
|
|
-static void
|
|
|
-SMBOWFencrypt_ntv2(const unsigned char kr[16],
|
|
|
- const struct data_blob *srv_chal,
|
|
|
- const struct data_blob *cli_chal, unsigned char resp_buf[16])
|
|
|
-{
|
|
|
- struct HMACMD5Context ctx;
|
|
|
-
|
|
|
- hmac_md5_init_limK_to_64(kr, 16, &ctx);
|
|
|
- hmac_md5_update(srv_chal->data, srv_chal->length, &ctx);
|
|
|
- hmac_md5_update(cli_chal->data, cli_chal->length, &ctx);
|
|
|
- hmac_md5_final(resp_buf, &ctx);
|
|
|
-}
|
|
|
-
|
|
|
-static void
|
|
|
-SMBsesskeygen_ntv2(const unsigned char kr[16],
|
|
|
- const unsigned char *nt_resp, __u8 sess_key[16])
|
|
|
-{
|
|
|
- struct HMACMD5Context ctx;
|
|
|
-
|
|
|
- hmac_md5_init_limK_to_64(kr, 16, &ctx);
|
|
|
- hmac_md5_update(nt_resp, 16, &ctx);
|
|
|
- hmac_md5_final((unsigned char *) sess_key, &ctx);
|
|
|
-}
|
|
|
-
|
|
|
-static void
|
|
|
-SMBsesskeygen_ntv1(const unsigned char kr[16],
|
|
|
- const unsigned char *nt_resp, __u8 sess_key[16])
|
|
|
-{
|
|
|
- mdfour((unsigned char *) sess_key, (unsigned char *) kr, 16);
|
|
|
-}
|
|
|
-#endif
|