Implementation of RFC4226