code: func Unmarshal(in []byte) (otp *HOTP, err error) {
  	var asnHOTP struct {
  		Key     []byte
  		Counter *big.Int
  		Digits  int
  	}
  	_, err = asn1.Unmarshal(in, &asnHOTP)
  	if err != nil {
  		return
  	}
  
  	otp = &HOTP{
  		Key:    asnHOTP.Key[:],
  		Digits: asnHOTP.Digits,
  	}
  	otp.setCounter(asnHOTP.Counter.Uint64())
  	return
  }
docs: // Unmarshal parses a DER-encoded serialised HOTP key value.