def METHOD_NAME(self,
         counter=None,
         key=None,
         challenge=None):
    """
    :param counter:
    :param key:
    :param challenge: The datainput for OCRA
    :type challenge: hex string
    :return:
    :rtype: bytes
    """
    # log.error("hmacSecret()")
    if counter is None:
        counter = self.counter
    # When using a counter, we can only use 64bit as data_input.
    # When we allow a raw data_input, we could use 160bit or more.
    if not challenge:
        data_input = struct.pack(">Q", counter)
    else:
        data_input = binascii.unhexlify(challenge)
    if key is None:
        dig = self.secretObj.hmac_digest(data_input, self.hashfunc)
    else:
        dig = METHOD_NAME.new(key, data_input, self.hashfunc).digest()
    return dig