Test heim_ntlm_calculate_ntlm2_sess_resp from Puneet Mehra.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21190 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2007-06-20 04:08:53 +00:00
parent c2362aa0b5
commit b07e515ab9

View File

@@ -1089,3 +1089,37 @@ out:
krb5_storage_free(sp);
return ret;
}
/*
* Calculate the NTLM2 Session Response as per pg 24 of Davenport NTLM
* document http://davenport.sourceforge.net/ntlm.html
*/
int
heim_ntlm_calculate_ntlm2_sess_resp(const unsigned char clnt_nonce[8],
const unsigned char svr_chal[8],
const unsigned char ntlm_hash[16],
unsigned char lm_resp[24],
unsigned char ntlm2_sess_resp[24])
{
unsigned char ntlm2_sess_hash[MD5_DIGEST_LENGTH];
unsigned char res[21];
MD5_CTX md5;
/* first setup the lm resp */
memset(lm_resp, 0, 24);
memcpy(lm_resp, clnt_nonce, 8);
MD5_Init(&md5);
MD5_Update(&md5, svr_chal, 8); /* session nonce part 1 */
MD5_Update(&md5, clnt_nonce, 8); /* session nonce part 2 */
MD5_Final(ntlm2_sess_hash, &md5); /* will only use first 8 bytes */
memset(res, 0, sizeof(res));
memcpy(res, ntlm_hash, 16);
splitandenc(&res[0], ntlm2_sess_hash, ntlm2_sess_resp + 0);
splitandenc(&res[7], ntlm2_sess_hash, ntlm2_sess_resp + 8);
splitandenc(&res[14], ntlm2_sess_hash, ntlm2_sess_resp + 16);
return 0;
}