<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def key_from_file(filename, passphrase):
 """Calculate convergent encryption key. This takes a filename and an optional passphrase. If no passphrase is given, a default is used. Using the default passphrase means you will be vulnerable to confirmation attacks and learn-partial-information attacks. :param filename: The filename you want to create a key for. :type filename: str :param passphrase: The passphrase you want to use to encrypt the file. :type passphrase: str or None :returns: A convergent encryption key. :rtype: str """

    hexdigest = sha256_file(filename)

    if passphrase is None:
        passphrase = DEFAULT_HMAC_PASSPHRASE

    return keyed_hash(hexdigest, passphrase)