At the ACCU Conference last week I learned about RFC 8771 The Internationalized Deliberately Unreadable Network NOtation (I-DUNNO) from Jim Hague, and thought it would be fun to knock up a Rust implementation.
It’s not done yet, but encoding an IP address as I-DUNNO appears to be working:
$ i-dunno 126.96.36.199 lYÔ® $ i-dunno 188.8.131.52 | hexdump -C 00000000 db 81 6b 1a 2e 0a |..k...|
Decoding is still to be done.
The implementation is seriously slow at the moment, so I am looking forward to improving it.
I am hoping it is reasonably correct – I based it on the existing Python I-DUNNO implementation and in the process found several potential bugs in that, and created some merge requests to fix bugs and help with testability.
Speaking of testability, I am building up a collection of test cases that could be a potential resource for other implementors, and would welcome suggestions of how this could be shared between projects. The examples so far were generated using the Python implementation, and then manually corrected where I found bugs in that, so I do not have 100% confidence that they are correct.
Anyway, have a play, and send patches and feedback!