code: 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
  }
docs: // 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.