RandomBytes returns n random bytes by reading from crypto/rand.Reader
HMACStrategy is responsible for generating and validating challenges.
Generate generates a token and a matching signature or returns an error. This method implements rfc6819 Section 188.8.131.52.2: Use High Entropy for Secrets.
Validate validates a token and returns its signature or an error if the token is not valid.