RFC4226 Reference implementation