Return session key for the NTLMv2 case too

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19533 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2006-12-28 14:40:46 +00:00
parent a06a8d8e14
commit 98e01a4744

View File

@@ -864,6 +864,7 @@ _kdc_do_digest(krb5_context context,
case choice_DigestReqInner_ntlmRequest: { case choice_DigestReqInner_ntlmRequest: {
krb5_principal clientprincipal; krb5_principal clientprincipal;
unsigned char sessionkey[16];
unsigned char challange[8]; unsigned char challange[8];
uint32_t flags; uint32_t flags;
Key *key = NULL; Key *key = NULL;
@@ -938,7 +939,6 @@ _kdc_do_digest(krb5_context context,
/* check if this is NTLMv2 */ /* check if this is NTLMv2 */
if (ireq.u.ntlmRequest.ntlm.length != 24) { if (ireq.u.ntlmRequest.ntlm.length != 24) {
unsigned char masterkey[16];
struct ntlm_buf infotarget, answer; struct ntlm_buf infotarget, answer;
char *targetname; char *targetname;
@@ -967,7 +967,7 @@ _kdc_do_digest(krb5_context context,
challange, challange,
&answer, &answer,
&infotarget, &infotarget,
masterkey); sessionkey);
free(targetname); free(targetname);
if (ret) { if (ret) {
krb5_set_error_string(context, "NTLM v2 verify failed"); krb5_set_error_string(context, "NTLM v2 verify failed");
@@ -978,6 +978,7 @@ _kdc_do_digest(krb5_context context,
free(infotarget.data); free(infotarget.data);
/* */ /* */
} else { } else {
struct ntlm_buf answer; struct ntlm_buf answer;
@@ -1029,10 +1030,18 @@ _kdc_do_digest(krb5_context context,
} }
free(answer.data); free(answer.data);
if (ireq.u.ntlmRequest.sessionkey) { {
unsigned char sessionkey[MD4_DIGEST_LENGTH];
unsigned char masterkey[MD4_DIGEST_LENGTH];
MD4_CTX ctx; MD4_CTX ctx;
MD4_Init(&ctx);
MD4_Update(&ctx,
key->key.keyvalue.data, key->key.keyvalue.length);
MD4_Final(sessionkey, &ctx);
}
}
if (ireq.u.ntlmRequest.sessionkey) {
unsigned char masterkey[MD4_DIGEST_LENGTH];
RC4_KEY rc4; RC4_KEY rc4;
size_t len; size_t len;
@@ -1051,11 +1060,6 @@ _kdc_do_digest(krb5_context context,
goto out; goto out;
} }
MD4_Init(&ctx);
MD4_Update(&ctx,
key->key.keyvalue.data, key->key.keyvalue.length);
MD4_Final(sessionkey, &ctx);
RC4_set_key(&rc4, sizeof(sessionkey), sessionkey); RC4_set_key(&rc4, sizeof(sessionkey), sessionkey);
RC4(&rc4, sizeof(masterkey), RC4(&rc4, sizeof(masterkey),
@@ -1077,7 +1081,6 @@ _kdc_do_digest(krb5_context context,
goto out; goto out;
} }
} }
}
r.u.ntlmResponse.success = 1; r.u.ntlmResponse.success = 1;
kdc_log(context, config, 0, "NTLM version %d successful for %s", kdc_log(context, config, 0, "NTLM version %d successful for %s",