hotp.go
func NewHOTP(key []byte, counter uint64, digits int) *HOTP {
	otp := &HOTP{
		Key:    key,
		Digits: digits,
	}
	otp.counter = new([ctrSize]byte)
	binary.BigEndian.PutUint64(otp.counter[:], counter)

	return otp
}
func NewHOTP(key []byte, counter uint64, digits int) *HOTP {
	otp := &HOTP{
		Key:    key,
		Digits: digits,
	}
	otp.counter = new([ctrSize]byte)
	binary.BigEndian.PutUint64(otp.counter[:], counter)

	return otp
}
// NewHOTP intialises a new HOTP instance with the key and counter
// values. No check is done on the digits, but typical values are 6
// and 8.