code: async def create_link_secret(self, label: str) -> None:
          
  
          LOGGER.debug('Wallet.create_link_secret >>> label: %s', label)
  
          if not self.handle:
              LOGGER.debug('Wallet.create_link_secret <!< Wallet %s is closed', self.name)
              raise WalletState('Wallet {} is closed'.format(self.name))
  
          try:
              await anoncreds.prover_create_master_secret(self.handle, label)
              await self._write_link_secret_label(label)
          except IndyError as x_indy:
              if x_indy.error_code == ErrorCode.AnoncredsMasterSecretDuplicateNameError:
                  LOGGER.warning(
                      'Wallet %s link secret already current: abstaining from updating label record', self.name)
                  await self._write_link_secret_label(label)
              else:
                  LOGGER.debug(
                      'Wallet.create_link_secret <!< cannot create link secret for wallet %s, indy error code %s',
                      self.name,
                      x_indy.error_code)
                  raise
  
          LOGGER.debug('Wallet.create_link_secret <<<')
docs: Create link secret (a.k.a. master secret) used in proofs by HolderProver, if the
          current link secret does not already correspond to the input link secret label.
  
          Raise WalletState if wallet is closed, or any other IndyError causing failure
          to set link secret in wallet.
  
          :param label: label for link secret; indy-sdk uses label to generate link secret