I've reported this bug: http://code.google.com/p/android/issues/detail?id=16051
also, I've found an easy way to work around this issue.
You have to subclass DigestScheme to let getParameter return "MD5" if
the algorithm was "md5":
public class FixedDigestScheme extends DigestScheme
{
@Override
public String getParameter(final String name)
{
String param = super.getParameter(name);
if ("algorithm".equals(name) && "MD5".equalsIgnoreCase(param))
{
return "MD5";
}
return param;
}
}
Also you have to subclass AuthSchemeFactory to return your new
FixedDigestScheme:
public class FixedDigestSchemeFactory implements AuthSchemeFactory
{
public AuthScheme newInstance(final HttpParams params)
{
return new FixedDigestScheme();
}
}
the tell your HttpClient instance to use the new DigestScheme:
AuthSchemeRegistry authSchemeRegistry = new AuthSchemeRegistry();
authSchemeRegistry.register("Basic", new BasicSchemeFactory());
authSchemeRegistry.register("Digest", new FixedDigestSchemeFactory());
mHttpClient.setAuthSchemes(authSchemeRegistry);
that's all. It works for me. Maybe someone can use it ...
On 14 Mrz., 20:30, marten <[email protected]> wrote:
> I had a look into the Eclair sources. It seems the available
> algorithms are hard-coded in MessageDigest.java. So there is no way to
> add another one without modifying the sources.
> Can anyone tell me if it's correct to assume that the digest algorithm
> is case-sensitive? Or is this a bug?
>
> On 14 Mrz., 08:39, marten <[email protected]> wrote:
>
> > Hello,
>
> > I'm writing a CardDAV implementation for Android and came across some
> > problem when trying to connect to the OSX/Darwin CardDAV server.
> > The default setup for this server is to advertise BASIC and DIGEST
> > authentication. The default algorithm for DIGEST authentication is set
> > to "md5".
> > Without changing the defaults I can not login to the server. I always
> > get the following error in the logs:
>
> > E/estTargetAuthentication( 2749): Authentication error: Unhandled
> > algorithm md5 requested
>
> > If I change "md5" to "MD5" in the server's configuration I can login
> > to the server.
> > In my opinion Android is right and it should be "MD5" instead of
> > "md5". Nevertheless, is there any way to make Android's HTTP
> > implementation more tolerant? Can I register "md5" as an
> > implementation of MD5 somehow?
> > I don't want to ask all OS X users to change the defaults ...
> > especially since OS X users are used to "that it just works" ;-) .
>
> > cheers
>
> > Marten
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en