code: def sign(self, headers: Mapping, method=None, path=None):
          
          required_headers = self.header_list
          message = generate_message(required_headers, headers, method, path)
  
          signature = encode_string(self._signer.sign(message), 'base64')
          ret_headers = multidict.CIMultiDict(headers)
          ret_headers['Authorization'] = self._signature_tpl % signature.decode('ascii')
  
          return ret_headers
docs: Add Signature Authorization header to case-insensitive header dict.
  
          `headers` is a case-insensitive dict of mutable headers.
          `host` is a override for the 'host' header (defaults to value in
              headers).
          `method` is the HTTP method (required when using '(request-target)').
          `path` is the HTTP path (required when using '(request-target)').