code: def verify_message(self, key_or_address, signature, message=None, msg_hash=None):
          
          if isinstance(key_or_address, str):
              # they gave us a private key or a public key already loaded.
              key = self._network.parse.address(key_or_address)
          else:
              key = key_or_address
  
          try:
              msg_hash = self.hash_for_signing(message) if message is not None else msg_hash
              pair, is_compressed = self.pair_for_message_hash(signature, msg_hash)
          except EncodingError:
              return False
          return self.pair_matches_key(pair, key, is_compressed)
docs: Take a signature, encoded in Base64, and verify it against a
          key object (which implies the public key),
          or a specific base58-encoded pubkey hash.