code: def calculate_signatures(self):
          
          if not self.signing_algorithm:
              return []
  
          algo_id = {'sha1': 1, 'sha384': 2}[self.signing_algorithm]
          hashers = [(algo_id, make_hasher(algo_id))]
          for block in get_signature_data(self.fileobj, self.filesize):
              [h.update(block) for (_, h) in hashers]
  
          signatures = [(algo_id, sign_hash(self.signing_key, h.finalize(), h.algorithm.name)) for (algo_id, h) in hashers]
          return signatures
docs: Calculate the signatures for this MAR file.
  
          Returns:
              A list of signature tuples: [(algorithm_id, signature_data), ...]