docs: async def create_key(wallet_handle: int,
                       key_json: str) -> str:
      """
      Creates keys pair and stores in the wallet.
  
      :param wallet_handle: Wallet handle (created by open_wallet).
      :param key_json: Key information as json. Example:
          {
  	        "seed": string, (optional) Seed that allows deterministic key creation (if not set random one will be created).
  	                                   Can be UTF-8, base64 or hex string.
              "crypto_type": string, // Optional (if not set then ed25519 curve is used);
                      Currently only 'ed25519' value is supported for this field.
          }
      :return: verkey: Ver key of generated key pair, also used as key identifier
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("create_key: >>> wallet_handle: %r, key_json: %r",
                   wallet_handle,
                   key_json)
  
      if not hasattr(create_key, "cb"):
          logger.debug("create_key: Creating callback")
          create_key.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))
  
      c_wallet_handle = c_int32(wallet_handle)
      c_key_json = c_char_p(key_json.encode('utf-8'))
  
      verkey = await do_call('indy_create_key',
                             c_wallet_handle,
                             c_key_json,
                             create_key.cb)
  
      res = verkey.decode()
  
      logger.debug("create_key: <<< res: %r", res)
      return res