[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[idn] Interoperable IDNA implementations.



Greetings again. As part of the effort to move the IDNA documents from Proposed Standard to Draft Standard, we need to show at least two independent interoperable implementations of IDNA (talk about alliteration!). Of course, IDNA is not a client-server specification, so showing interoperability is not simply a case of creating a client and a server.

Instead, as part of the work performed at the IDNConnect event last month, I created what I hope to be a very complete test suite for IDNA. This includes testing every part of the IDNA spec, every part of the Nameprep spec, and every part of the Punycode spec (where "every part" means all the protocol steps, not just the MUSTs and SHOULDs). The full set of tests is described at <http://idnconnect.jdna.jp/Description.txt>. (IDNConnect and the continuing development of the testbed are funded by the Japanese Domain Names Association.)

The actual tests were created using the original set of tools that I created in Perl during the creation of the IDNA specs. During the event, implementers from around the world tested their code against the tests; we did not run the tests in a central environment, and results of the test were not kept. Most test participants reported that they found bugs in the software and have fixed them.

Subsequent to the event, I have validated one (unnamed, pre-release) IDNA system passes all the tests that it should pass, and fails all the test that should fail, as specified in the test description. This may be sufficient for two independent interoperable implementations: the creation of the UTF-8 and Punycode strings, and the system that interpreted each of them. I have been told by some developers that there are other implementations that pass all the tests, but I have not checked that myself. It is up to the Area Directors to decide whether or not the testbed tests every part of the RFCs, and whether having a single system that performs on each string is sufficient for two systems.

Please note that I could not test every part of the testbed as described. I could not perform 2-8-1 because I could not enter a string that contained a character that was later mapped out. (If anyone has an IME for Windows XP that lets me enter characters by their Unicode value even if they are not represented in a font, I would appreciate hearing from you!) Further, I could not perform 2-8-2 through 2-8-5 because the name server we tested against wouldn't let me load an illegal name into the test zone. (If someone can show me how to hack BIND 9 in order to allow labels longer than 63 octets in a zone, I would appreciate hearing from you!) Given that these tests (which exercise step 8 of ToASCII) are pretty obscure, I hope the ADs forgive the lack of these edge-condition tests.

While the ADs are mulling over the tests and whether these two systems are sufficient, I am quite open to suggestions for changes and additions to the items tested. Please read the description file mentioned above and let me know if there are any tests that I should have included but missed, or any that need to be clarified.

Developers who want to run their software through the testbed should see the information on the main IDNConnect web site at <http://idnconnect.jdna.jp/> and download the testbed themselves. The testbed requires Perl, BIND, and Apache, but should be able to be converted to other systems as well. It also includes tests for IDNA-aware mail clients and test harnesses. The testbed will continue to be developed and freely available, so any suggestions are always welcomed.

--Paul Hoffman, Director
--Internet Mail Consortium