def __call__(self, key, data_input):
h = hmac.new(key, data_input, self.hash_algo).digest()<EOL>if self.truncation_length:<EOL><INDENT>return hotp.dec(h, self.truncation_length)<EOL><DEDENT>else:<EOL><INDENT>return str(hotp.truncated_value(h))<EOL><DEDENT>
Compute an HOTP digest using the given key and data input and
           following the current crypto function description.

           :param key:
               a byte string containing the HMAC key

           :param data_input:
               the data input assembled as a byte-string as described by the
               OCRA specification
           :returns:
               the computed digest
           :rtype: str