code: def verify(self, smessage, signature=None, encoder=encoding.RawEncoder):
          
          if signature is not None:
              # If we were given the message and signature separately, combine
              #   them.
              smessage = signature + encoder.decode(smessage)
          else:
              # Decode the signed message
              smessage = encoder.decode(smessage)
  
          return nacl.bindings.crypto_sign_open(smessage, self._key)
docs: Verifies the signature of a signed message, returning the message
          if it has not been tampered with else raising
          :class:`~nacl.signing.BadSignatureError`.
  
          :param smessage: [:class:`bytes`] Either the original messaged or a
              signature and message concated together.
          :param signature: [:class:`bytes`] If an unsigned message is given for
              smessage then the detached signature must be provided.
          :param encoder: A class that is able to decode the secret message and
              signature.
          :rtype: :class:`bytes`