Skip to Content.
Sympa Menu

microid - Re: [Microid] Encode URLs?

microid AT lists.ibiblio.org

Subject: Microid mailing list

List archive

Chronological Thread  
  • From: David Koblas <koblas AT extra.com>
  • To: Paco NATHAN <ceteri AT gmail.com>
  • Cc: microid AT lists.ibiblio.org
  • Subject: Re: [Microid] Encode URLs?
  • Date: Mon, 16 Apr 2007 16:58:42 -0700

If I'm reading this thread correctly it sounds like people are proposing to double encode URIs before having their checksums taken.

Section 5 of the spec says:
hash = algo(algo(EntityURI) + algo(EntityURI))

It doesn't say:
hash = algo(algo(escaped(URI)) + ...)

If the PHP code converted to (technically something worse than)
com_sha = hex_sha1(urlencode(f.com.value));
Things would get quite messy. Since you now end up with multiple encoding systems, etc.

Fundamentally, the URL: http://www.mediauk.com/discussions/profile.muk?mode=viewprofile&u=1 is encoded per RFC 3986 - section 3 - URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
as soon as you start double encoding a URL you're in deep doodoo.

--koblas

ps. Per your problem I get using my MicroID implementation..
mailto+http:sha1:05d7b7fe2c3a67fab3982b50c9a727c04c9aab9c

What I belive is your problem is "+" vs. "." MicroIDs are an APPEND operation not a NUMERIC operation.

Paco NATHAN wrote:
That brings up a good point. Is there a list of known "edge cases"
which we could use for creating unit tests? Examples like this one
could be used to begin to build a list.

I could add that kind of unit testing to the Java library.

Thanks,
Paco


On 4/16/07, Peter Saint-Andre <stpeter AT jabber.org> wrote:
AFAICS, URIs within MicroID need to conform to RFC 3986. Therefore
percent-encoding (%hexhex) would be required for certain characters. For
your web page address ...

http://www.mediauk.com/discussions/profile.muk?mode=viewprofile&u=1
The JavaScript code on microid.org does not perform any encoding:

function compute()
{
var f = document.forms['gen'];
var com_sha = hex_sha1(f.com.value);
var auth_sha = hex_sha1(f.auth.value);
f.microid.value = "mailto+http:sha1:" + hex_sha1(com_sha+auth_sha);
}

So I think the error is there.

Feel free to contribute corrected code. :)
_______________________________________________
Microid mailing list
Microid AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/microid





Archive powered by MHonArc 2.6.24.

Top of Page