2009/11/02 : Major simplification
Finally got it working.
The difference with earlier Kindle is that now each file in the package must be signed.
The signature is then checked against the RSA key installed in the ROM.
Unfortunately, there's no way to bypass that check .
So what we first do is install an extra RSA key in the device.
that's what the update file update_freekindle.bin is for.
Copy that file on the Kindle USB disk ; then:
go to HOME
MENU -> Settings
MENU -> Update Your Kindle
DO NOT SELECT RESTART, or you will brick your Kindle (though there's a way to get out of that infinite reboot)
That update will fail ! (Error 004). This is normal.
What this package does is add our key to the list of keys available.
You only have to do this once...
In the future, installing packages will be just like with previous version of the Kindle.
Attached is the new Kindle packager kindle_update_tool.py. It has one extra flag for generating Kindle 2 International packages: -k2i and -k2iex
OpenSSL must be installed ; and the openssl binary must be in your path.
The file freekindle.pem is the RSA key used to sign and check the validity of the packages. Do not modify it. The file must be present in your current directory, along with the kindle_update_tool.py file.
(That's until I find a way to generate all the internal signature files within python rather than calling openssl directly.)
For safety purposes, here is the MD5 checksum of the keys, and of the package installing the keys:
MD5 (update_freekindle-k2i.bin) = de58ef1df239610a5656d7c904906d56
Only packages signed with the freekindle.pem RSA key will work with the update_freekindle-k2i package.
I've also attached the usual usbnetwork tool, compiled for Kindle 2, Kindle DX and Kindle International... It also shows how to easily make such packages
The update_freekindle-k2i.bin can still be used to cleanup should an error occur during the installation and leave the kindle in a corrupted state...
The update_freekindle-k2i.bin has been updated to not generate an error when installed.
Hope you like it, that was exciting !
A tad more info there:
Edit: updated to version 0.5, now with uninstaller