François Piette wrote:
> Maybe a new component options would let the developer select the
> behaviour ? Or maybe first try with on option and then automatically
> switch to the other if it fails ?

Think I found the bug in OverbyteIcsDigestAuth.pas, will update SVN
later :

{code}
procedure AuthDigestCalcResponse(
[..]
    { calculate response }
    MD5Init(Md5Ctx);
    MD5UpdateBuffer(Md5Ctx, HA1);
    MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM);
    MD5UpdateBuffer(Md5Ctx, Nonce);
    if Qop <> '' then begin // (if auth-int or auth) rfc2617 3.2.2.1 
Request-Digest
        MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM);
        MD5UpdateBuffer(Md5Ctx, NonceCount);
        MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM);
        MD5UpdateBuffer(Md5Ctx, CNonce);
        MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM);
        MD5UpdateBuffer(Md5Ctx, Qop);
      //  MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM); // ==> removed
    end;
    MD5UpdateBuffer(Md5Ctx, AUTH_DIGEST_DELIM); // <== added
    MD5UpdateBuffer(Md5Ctx, HA2Hex);
    MD5Final(RespHash, Md5Ctx);
    Response := MD5DigestToLowerHexA(RespHash);  { V1.01 }
end;
{code}

@Paul: Does that fix the issue?

Also in the curl-7.23.1 source code I found a very interesting note:

/* So IE browsers < v7 cut off the URI part at the query part when they
     evaluate the MD5 and some (IIS?) servers work with them so we may need to
     do the Digest IE-style. Note that the different ways cause different MD5
     sums to get sent.

     Apache servers can be set to do the Digest IE-style automatically using
     the BrowserMatch feature:
     http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html#msie

     Further details on Digest implementation differences:
     http://www.fngtps.com/2006/09/http-authentication

Likely we have to add an additional option "DigestAuthIEStyle".

-- 
Arno Garrels

--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to