network: add support for NTLM Session Security
tested manually with internal proxy. Patch-by: Jonathan Lauvernier <Jonathan.Lauvernier@gmail.com> Change-Id: Ief5b4579b3444ce70eb99637edf771d37d3971fb Reviewed-by: Peter Hartmann <phartmann@blackberry.com>bb10
parent
53f81ac946
commit
d9f5200fb8
|
|
@ -981,7 +981,7 @@ public:
|
|||
QNtlmPhase1Block() {
|
||||
qstrncpy(magic, "NTLMSSP", 8);
|
||||
type = 1;
|
||||
flags = NTLMSSP_NEGOTIATE_UNICODE | NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_REQUEST_TARGET;
|
||||
flags = NTLMSSP_NEGOTIATE_UNICODE | NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_REQUEST_TARGET | NTLMSSP_NEGOTIATE_ALWAYS_SIGN | NTLMSSP_NEGOTIATE_NTLM2;
|
||||
}
|
||||
|
||||
// extracted
|
||||
|
|
@ -1423,9 +1423,16 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
|
|||
ds.setByteOrder(QDataStream::LittleEndian);
|
||||
QNtlmPhase3Block pb;
|
||||
|
||||
// set NTLMv2
|
||||
if (ch.flags & NTLMSSP_NEGOTIATE_NTLM2)
|
||||
pb.flags |= NTLMSSP_NEGOTIATE_NTLM2;
|
||||
|
||||
// set Always Sign
|
||||
if (ch.flags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN)
|
||||
pb.flags |= NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
|
||||
|
||||
bool unicode = ch.flags & NTLMSSP_NEGOTIATE_UNICODE;
|
||||
|
||||
pb.flags = NTLMSSP_NEGOTIATE_NTLM;
|
||||
if (unicode)
|
||||
pb.flags |= NTLMSSP_NEGOTIATE_UNICODE;
|
||||
else
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ void tst_QAuthenticator::ntlmAuth()
|
|||
if (sso)
|
||||
QVERIFY(priv->calculateResponse("GET", "/").startsWith("NTLM "));
|
||||
else
|
||||
QCOMPARE(priv->calculateResponse("GET", "/").constData(), "NTLM TlRMTVNTUAABAAAABQIAAAAAAAAAAAAAAAAAAAAAAAA=");
|
||||
QCOMPARE(priv->calculateResponse("GET", "/").constData(), "NTLM TlRMTVNTUAABAAAABYIIAAAAAAAAAAAAAAAAAAAAAAA=");
|
||||
|
||||
// NTLM phase 2: challenge
|
||||
headers.clear();
|
||||
|
|
|
|||
Loading…
Reference in New Issue