Remove extraneous strlcpy && buffer
Remove more fixed-size buffers
re-arrange code to make it clearer what's going on
Remove length limitations on names
Use correctly sized buffer for MD5

and use a time-invariant comparison
RFC 6911 and dictionary
RFC 6930 and dictionary
Fix typo
I'll get it right at some point...
Updated for v3