code: async def sign(self, message: bytes, verkey: str = None) -> bytes:
          
  
          LOGGER.debug('Wallet.sign >>> message: %s, verkey: %s', message, verkey)
  
          if not message:
              LOGGER.debug('Wallet.sign <!< No message to sign')
              raise AbsentMessage('No message to sign')
  
          if not self.handle:
              LOGGER.debug('Wallet.sign <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          rv = await crypto.crypto_sign(self.handle, verkey or self.verkey, message)
  
          LOGGER.debug('Wallet.sign <<< %s', rv)
          return rv
docs: Derive signing key and Sign message; return signature. Raise WalletState if wallet is closed.
          Raise AbsentMessage for missing message, or WalletState if wallet is closed.
  
          :param message: Content to sign, as bytes
          :param verkey: verification key corresponding to private signing key (default anchor's own)
          :return: signature, as bytes