code: async def get_signing_key(self, verkey: str) -> KeyInfo:
          
  
          LOGGER.debug('Wallet.get_signing_key >>> seed: [SEED], verkey: %s', verkey)
  
          if not self.handle:
              LOGGER.debug('Wallet.get_signing_key <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          try:
              metadata = await crypto.get_key_metadata(self.handle, verkey)
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.WalletItemNotFound:
                  LOGGER.debug('Wallet.get_signing_key <!< Verification key %s not in wallet %s', verkey, self.name)
                  raise AbsentRecord('Verification key not in wallet {}'.format(self.name))
              LOGGER.debug('Wallet.get_signing_key <!< indy-sdk raised error %s', x_indy.error_code)
              raise
  
          rv = KeyInfo(verkey, json.loads(metadata) if metadata else {})
          LOGGER.debug('Wallet.get_signing_key <<< %s', rv)
          return rv
docs: Get signing key pair for input verification key.
  
          Raise WalletState if wallet is closed, AbsentRecord for no such key pair.
  
          :param verkey: verification key of key pair
          :return: KeyInfo for key pair