docs: 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)