I have been doing changes to the yubico-j low level library while having enjoyable conversation with Simon at Yubico.
Today I created a new project named arne-proposed-yubikey-j (Arne is my first name) based on the latest source from yubico-j, it is published here:
http://code.google.com/p/arne-proposed-yubikey-j.
The reason for making this project is not to create a project to compete with yubico-j but to communicate proposed changes to it:
it is a branch, but I like to do it as a project because google has made it so easy to work with projects.
Main changes in this API from the yubico-j API it is based on:
Token:1. Is reusable (empty constructor and set method).
2. Get methods that returns bytes no longer returns reference to internal arrays.
3. Get methods that returns byte(s) has been renamed to have the suffix Byte(s) in name.
4. New methods that return token property values as int values.
5. toString() method now prints with line breaks and property values as int values.
Pof:6. Renamed to YubiKey.
7. In addition to old parse method has new parse method that accept Token to reuse.
Display:8. Do command line parsing.
9. AES key is accepted in hex, not modhex.
10. Can also be used to convert between hex and modhex.
General:11. Junit tests are part of the source tree. yubico-j has that in a separate tree and that causes problems in my eclipse environment. This is an issue that needs to be resolve in the future, but for the moment I would like to ignore it to get going with hacking.
Issues I am going to work on next (in order):
JUnit tests: 1. Make tests that can run through a set of vectors.
2. Tool to generate test vectors.
Password validation:3. I think 'cookbook' validation is candidate for reusable code and that it could be here. That may be controversial, but, hey, then it is nice to have a experimental project to show my ideas in :-).