code: def sign(self, message, do_hash=True):
          
          return self._key.sign(message, do_hash)
docs: Signs message using the underlying non-extended private key.
  
          Note:
              This differs from `raw_sign()` since it returns a Signature object.
  
          Args:
              message (bytes or str): The message to be signed. If a
                  string is provided it is assumed the encoding is
                  'ascii' and converted to bytes. If this is not the
                  case, it is up to the caller to convert the string to
                  bytes appropriately and pass in the bytes.
              do_hash (bool): True if the message should be hashed prior
                  to signing, False if not. This should always be left as
                  True except in special situations which require doing
                  the hash outside (e.g. handling Bitcoin bugs).
  
          Returns:
              Signature: The signature corresponding to message.