From ae801f06250259b1bdf87d47a584b6f1146568e6 Mon Sep 17 00:00:00 2001 From: pier11 Date: Wed, 3 Mar 2010 12:32:53 +0000 Subject: [PATCH] NTLM: more features demanded in connectionless mode read for SIP exchange --- src/core/sip-sec-ntlm.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core/sip-sec-ntlm.c b/src/core/sip-sec-ntlm.c index 830199ea..350aac28 100644 --- a/src/core/sip-sec-ntlm.c +++ b/src/core/sip-sec-ntlm.c @@ -171,14 +171,19 @@ struct version test_version; /* hard-coded in implementation */ NTLMSSP_REQUEST_TARGET \ ) -/* Negotiate flags required in connectionless NTLM */ -#define NEGOTIATE_FLAGS \ - ( NEGOTIATE_FLAGS_CONN | \ - NTLMSSP_NEGOTIATE_SIGN | \ +/* Extra negotiate flags required in connectionless NTLM */ +#define NEGOTIATE_FLAGS_CONNLESS_EXTRA \ + ( NTLMSSP_NEGOTIATE_SIGN | \ NTLMSSP_NEGOTIATE_DATAGRAM | \ NTLMSSP_NEGOTIATE_IDENTIFY | \ NTLMSSP_NEGOTIATE_KEY_EXCH \ ) + +/* Negotiate flags required in connectionless NTLM */ +#define NEGOTIATE_FLAGS \ + ( NEGOTIATE_FLAGS_CONN | \ + NEGOTIATE_FLAGS_CONNLESS_EXTRA \ + ) #define NTLMSSP_LN_OR_NT_KEY_LEN 16 #define NTLMSSP_LM_RESP_LEN 24 @@ -1069,7 +1074,10 @@ sip_sec_ntlm_gen_authenticate(guchar **client_sign_key, unsigned char client_challenge [8]; guint64 time_vl = time_val ? time_val : TIME_T_TO_VAL(time(NULL)); - if (!IS_FLAG(*flags, NEGOTIATE_FLAGS_COMMON_MIN)) { + if (!IS_FLAG(*flags, is_connection_based ? + NEGOTIATE_FLAGS_COMMON_MIN : + NEGOTIATE_FLAGS_COMMON_MIN | NEGOTIATE_FLAGS_CONNLESS_EXTRA)) + { purple_debug_info("sipe", "sip_sec_ntlm_gen_authenticate: received incompatible NTLM NegotiateFlags, exiting."); return SIP_SEC_E_INTERNAL_ERROR; } -- 2.11.4.GIT