Ejemplo n.º 1
0
/*
 * Get the check sum of password and verify code.
 *
 * First, compute check sum of password for three times.
 * Then, join the result with the capitalizaion of the verify code.
 * Compute the chekc sum of the new string.
 */
GString* get_pwvc_md5(const gchar *pwd, const gchar *vc, GError **err)
{
	guint8 buf[100];
	gsize bsize = 100;
	
	GChecksum *cs = g_checksum_new(G_CHECKSUM_MD5);
	g_checksum_update(cs, (const guchar*)pwd, strlen(pwd));
	g_checksum_get_digest(cs, buf, &bsize);
	g_checksum_free(cs);
	
	cs = g_checksum_new(G_CHECKSUM_MD5);
	g_checksum_update(cs, buf, bsize);
	g_checksum_get_digest(cs, buf, &bsize);
	g_checksum_free(cs);
	
	cs = g_checksum_new(G_CHECKSUM_MD5);
	g_checksum_update(cs, buf, bsize);
	const gchar * md5_3 = g_checksum_get_string(cs);
	md5_3 = g_ascii_strup(md5_3, strlen(md5_3));
	gchar buf2[100];
	g_sprintf(buf2, "%s%s", md5_3, vc);
	g_checksum_free(cs);

	gchar *tmp1;
	tmp1 = g_ascii_strup(buf2, strlen(buf2));
	tmp1 = g_compute_checksum_for_string(G_CHECKSUM_MD5
						, tmp1, -1);
	tmp1 = g_ascii_strup(tmp1, strlen(tmp1));
	GString *re = g_string_new(tmp1);
	g_free(tmp1);

	return re;
}
Ejemplo n.º 2
0
static gchar *
renren_signature (gchar *kar[], gchar *var[])
{
  gsize i, len;
  gchar **v, *str, *buf, *md5;

  len = g_strv_length (kar);
  if (g_strv_length (var) < len)
    {
      g_error ("value list is too short");
      return NULL;
    }

  v = g_new (char *, len + 1);
  g_return_val_if_fail (v, NULL);

  for (i = 0; i < len; ++ i)
    {
      v[i] = g_strdup_printf ("%s=%s", kar[i], var[i]);
    }
  v[i] = NULL;

  qsort (v, len, sizeof (char *), cmpstring);

  str = g_strjoinv ("", v);
  g_strfreev (v);

  buf = g_strconcat (str, renren_secret, NULL);
  g_free (str);

  md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, buf, -1);
  g_free (buf);

  return md5;
}
Ejemplo n.º 3
0
/**
 * Check memory using specified rsa key and signature
 *
 * arguments:
 * (rsa_pubkey, rsa_signature, string)
 *
 * returns:
 * true - if string match rsa signature
 * false - otherwise
 */
static gint
lua_rsa_verify_memory (lua_State *L)
{
	RSA *rsa;
	rspamd_fstring_t *signature;
	const gchar *data;
	gchar *data_sig;
	gint ret;

	rsa = lua_check_rsa_pubkey (L, 1);
	signature = lua_check_rsa_sign (L, 2);
	data = luaL_checkstring (L, 3);

	if (rsa != NULL && signature != NULL && data != NULL) {
		data_sig = g_compute_checksum_for_string (G_CHECKSUM_SHA256, data, -1);
		ret = RSA_verify (NID_sha1, data_sig, strlen (data_sig),
				signature->str, signature->len, rsa);
		if (ret == 0) {
			msg_info ("cannot check rsa signature for data: %s",
				ERR_error_string (ERR_get_error (), NULL));
			lua_pushboolean (L, FALSE);
		}
		else {
			lua_pushboolean (L, TRUE);
		}
		g_free (data_sig);
	}
	else {
		lua_pushnil (L);
	}

	return 1;
}
void
file_share_write_out_password (const char *password)
{
    char *to_hash;
    char *ascii_digest;
    char *line;
    char *filename;
    FILE *file;

    to_hash = g_strdup_printf ("%s:%s:%s", USER, REALM, password);
    ascii_digest = g_compute_checksum_for_string (G_CHECKSUM_MD5, to_hash, strlen (to_hash));
    g_free (to_hash);
    line = g_strdup_printf ("%s:%s:%s\n", USER, REALM, ascii_digest);
    g_free (ascii_digest);

    filename = g_build_filename (g_get_user_config_dir (), "user-share", "passwd", NULL);

    file = fopen (filename, "w");
    if (file != NULL) {
        fwrite (line, strlen (line), 1, file);
        fclose (file);
    }

    g_free (filename);
    g_free (line);
}
Ejemplo n.º 5
0
/*
 * Here we're gracefully (ahem) extending the fd.o thumbnail specification[1]
 * with a size "huge", which is 512x512px.
 *
 * [1] http://people.freedesktop.org/~vuntz/thumbnail-spec-cache/directory.html
 */
static char *
get_thumbnail_path_for_uri (const char *uri)
{
  char *basepath;
  char *md5;
  char *file;
  char *path;

  basepath = g_build_filename (g_get_home_dir (),
                               ".thumbnails",
                               "x-huge",
                               NULL);
  g_mkdir_with_parents (basepath, 0777);

  md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);
  file = g_strconcat (md5, ".png", NULL);
  g_free (md5);

  path = g_build_filename (basepath,
                           file,
                           NULL);

  g_free (basepath);
  g_free (file);

  return path;
}
static char *scrobbler_get_signature(int nparams, API_Parameter *parameters) {
    qsort(parameters, nparams, sizeof(API_Parameter), scrobbler_compare_API_Parameters);

    char *all_params = NULL;
    gchar *result = NULL;
    gchar *api_sig = NULL;
    size_t api_sig_length = strlen(SCROBBLER_SHARED_SECRET);

    for (gint i = 0; i < nparams; i++) {
        api_sig_length += strlen(parameters[i].paramName) + strlen(parameters[i].argument);
    }
    all_params = calloc(api_sig_length, sizeof(gchar));

    for (int i = 0; i < nparams; i++) {
        strcat(all_params, parameters[i].paramName);
        strcat(all_params, parameters[i].argument);
    }

    api_sig = g_strconcat(all_params, SCROBBLER_SHARED_SECRET, NULL);
    free(all_params);


    result = g_compute_checksum_for_string(G_CHECKSUM_MD5, api_sig, -1);
    g_free(api_sig);
    return result;
}
Ejemplo n.º 7
0
GFile *
xdg_cache_cache_get_temp_file (const gchar            *uri,
                               TumblerThumbnailFlavor *flavor)
{
  const gchar *cachedir;
  const gchar *dirname;
  GTimeVal     current_time = { 0, 0 };
  GFile       *file;
  gchar       *filename;
  gchar       *md5_hash;
  gchar       *path;

  g_return_val_if_fail (uri != NULL && *uri != '\0', NULL);
  g_return_val_if_fail (TUMBLER_IS_THUMBNAIL_FLAVOR (flavor), NULL);

  cachedir = g_get_user_cache_dir ();
  dirname = tumbler_thumbnail_flavor_get_name (flavor);

  g_get_current_time (&current_time);

  md5_hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);
  filename = g_strdup_printf ("%s-%ld-%ld.png", md5_hash,
                              current_time.tv_sec, current_time.tv_usec);
  path = g_build_filename (cachedir, "thumbnails", dirname, filename, NULL);

  file = g_file_new_for_path (path);

  g_free (path);
  g_free (filename);
  g_free (md5_hash);

  return file;
}
Ejemplo n.º 8
0
static char*
waveform_get_peak_filename(const char* filename)
{
    // filename should be absolute.
    // caller must g_free the returned value.

    if(wf->load_peak == wf_load_ardour_peak) {
        gwarn("cannot automatically determine path of Ardour peakfile");
        return NULL;
    }

    GError* error = NULL;
    gchar* uri = g_filename_to_uri(filename, NULL, &error);
    if(error) {
        gwarn("%s", error->message);
        return NULL;
    }
    dbg(1, "uri=%s", uri);

    gchar* md5 = g_compute_checksum_for_string(G_CHECKSUM_MD5, uri, -1);
    g_free(uri);
    gchar* peak_basename = g_strdup_printf("%s.peak", md5);
    g_free(md5);
    char* cache_dir = get_cache_dir();
    gchar* peak_filename = g_build_filename(cache_dir, peak_basename, NULL);
    g_free(cache_dir);
    dbg(1, "peak_filename=%s", peak_filename);
    g_free(peak_basename);

    return peak_filename;
}
Ejemplo n.º 9
0
static gchar *
get_avatar (const gchar *field) {
  GMatchInfo *match_info = NULL;
  gchar *avatar = NULL;
  gchar *email;
  gchar *email_hash;
  gchar *lowercased_field;
  static GRegex *email_regex = NULL;

  if (!field) {
    return NULL;
  }

  lowercased_field = g_utf8_strdown (field, -1);

  if (!email_regex) {
    email_regex = g_regex_new ("[\\w-]+@([\\w-]+\\.)+[\\w-]+", G_REGEX_OPTIMIZE, 0, NULL);
  }

  if (g_regex_match (email_regex, lowercased_field, 0, &match_info)) {
    email = g_match_info_fetch (match_info, 0);
    g_match_info_free (match_info);
    email_hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, email, -1);
    avatar = g_strdup_printf (GRAVATAR_URL, email_hash);
    g_free (email);
    g_free (email_hash);
  }

  return avatar;
}
/**
 * Register a plaintext description for a query container. The passed
 * string will be modified to the checksum id of the container.
 *
 * @param id Originally contains the plaintext id which is replaced with
 *           the hashed id on return.
 */
void
rygel_media_export_query_container_factory_register_id (RygelMediaExportQueryContainerFactory  *self,
                                                        gchar                                 **id) {
  gchar *md5;
  gchar *tmp;
  GeeAbstractMap *abstract_virtuals;
  RygelMediaExportQueryContainerFactoryPrivate *priv;

  g_return_if_fail (RYGEL_MEDIA_EXPORT_IS_QUERY_CONTAINER_FACTORY (self));
  g_return_if_fail (id != NULL);
  g_return_if_fail (*id != NULL);

  priv = self->priv;
  md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, *id, (gsize) (-1));
  abstract_virtuals = GEE_ABSTRACT_MAP (priv->virtual_container_map);

  if (!gee_abstract_map_has_key (abstract_virtuals, md5)) {
    gee_abstract_map_set (abstract_virtuals, md5, *id);
    g_debug ("Registering %s for %s", md5, *id);
  }
  tmp = g_strconcat (RYGEL_MEDIA_EXPORT_QUERY_CONTAINER_PREFIX, md5, NULL);
  g_free (md5);
  g_free (*id);
  *id = tmp;
}
Ejemplo n.º 11
0
static char *
build_call_sig (GHashTable *params, const char *secret)
{
  char *str = NULL;
  char *sig, *temp;
  GList *keys = g_hash_table_get_keys (params);
  keys = g_list_sort (keys, (GCompareFunc)g_strcmp0);

  while (keys) {
    const char *value = (const char *) g_hash_table_lookup (params, keys->data);

    if (str == NULL) {
      str = g_strconcat((char *)keys->data, value, NULL);
    } else {
      temp = str;
      str = g_strconcat(str, (char *)keys->data, value, NULL);
      g_free (temp);
    }

    keys = keys->next;
  }

  temp = str;
  str = g_strconcat(str, secret, NULL);
  g_free (temp);

  sig = g_compute_checksum_for_string (G_CHECKSUM_MD5, str, -1);

  g_free (str);
  g_list_free (keys);

  return sig;
}
Ejemplo n.º 12
0
static void
ws_auth(sr_session_t *s)
{
	struct sr_session_priv *priv = s->priv;
	gchar *auth, *tmp;
	gchar *auth_url;
	SoupMessage *message;

	gchar *params;

	tmp = g_strdup_printf("%s%s", priv->user, priv->hash_pwd);
	auth = g_compute_checksum_for_string(G_CHECKSUM_MD5, tmp, -1);
	g_free(tmp);

	ws_params(s, &params,
			"api_key", priv->api_key,
			"authToken", auth,
			"method", "auth.getMobileSession",
			"username", priv->user,
			NULL);

	auth_url = g_strdup_printf("%s?%s",
			priv->api_url,
			params);
	g_free(params);

	message = soup_message_new("GET", auth_url);
	soup_session_queue_message(priv->soup,
			message,
			ws_auth_cb,
			s);

	g_free(auth_url);
	g_free(auth);
}
Ejemplo n.º 13
0
static void
update_from_state (IdolThumbnailPluginPrivate *priv,
		   IdolObject *idol,
		   const char *mrl)
{
	GdkPixbuf *pixbuf = NULL;
	GtkWindow *window = NULL;
	char *file_basename, *file_name, *uri_md5;
	GError *err = NULL;

	g_return_if_fail (IDOL_IS_OBJECT (idol));
	window = idol_get_main_window (idol);

	if (mrl == NULL) {
		set_icon_to_default (idol);
		return;
	}

	uri_md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5,
						 mrl,
						 strlen (mrl));
	file_basename = g_strdup_printf ("%s.png", uri_md5);
	file_name = g_build_filename (g_get_home_dir (),
				      ".thumbnails",
				      "normal",
				      file_basename,
				      NULL);

	pixbuf = gdk_pixbuf_new_from_file (file_name, &err);
	/* Try loading from the "large" thumbnails if normal fails */
	if (pixbuf == NULL && err != NULL && err->domain == G_FILE_ERROR) {
		g_clear_error (&err);
		g_free (file_name);
		file_name= g_build_filename (g_get_home_dir (),
					     ".thumbnails",
					     "large",
					     file_basename,
					     NULL);

		pixbuf = gdk_pixbuf_new_from_file (file_name, &err);
	}

	g_free (uri_md5);
	g_free (file_basename);
	g_free (file_name);

	if (pixbuf == NULL) {
		if (err != NULL && err->domain != G_FILE_ERROR) {
			g_printerr ("%s\n", err->message);
		}
		set_icon_to_default (idol);
		return;
	}

	gtk_window_set_icon (window, pixbuf);

	g_object_unref (pixbuf);
}
Ejemplo n.º 14
0
gchar* get_hexdigest(const gchar *salt, const gchar *raw_password)
{
    gchar *str;
    gchar *password;
    str = g_strdup_printf("%s%s", salt, raw_password);
    password = g_compute_checksum_for_string (G_CHECKSUM_SHA1, str, strlen(str));
    g_free(str);
    return password;
}
Ejemplo n.º 15
0
/*
 * compute cache file's absolute name
 */
static gchar *
compute_data_file_name (GdaQuarkList *params, gboolean is_cache, const gchar *data_type)
{
	/* real cache file name */
	GString *string;
	gchar *cfile, *evalue;
	const gchar *base_dn;
	const gchar *host;
	const gchar *require_ssl;
	const gchar *port;
	gint rport;
	gboolean use_ssl;

        base_dn = gda_quark_list_find (params, "DB_NAME");
	host = gda_quark_list_find (params, "HOST");
	if (!host)
		host = "127.0.0.1";
        port = gda_quark_list_find (params, "PORT");
        require_ssl = gda_quark_list_find (params, "USE_SSL");
	use_ssl = (require_ssl && ((*require_ssl == 't') || (*require_ssl == 'T'))) ? TRUE : FALSE;
	if (port && *port)
		rport = atoi (port);
	else {
		if (use_ssl)
			rport = LDAPS_PORT;
		else
			rport = LDAP_PORT;
	}
	string = g_string_new ("");
	evalue = gda_rfc1738_encode (host);
	g_string_append_printf (string, ",=%s", evalue);
	g_free (evalue);
	g_string_append_printf (string, ";PORT=%d", rport);
	if (base_dn) {
		evalue = gda_rfc1738_encode (base_dn);
		g_string_append_printf (string, ";BASE_DN,=%s", evalue);
		g_free (evalue);
	}
	evalue = g_compute_checksum_for_string (G_CHECKSUM_SHA1, string->str, -1);
	g_string_free (string, TRUE);
	if (is_cache)
		cfile = g_strdup_printf ("%s_%s", evalue, data_type);
	else
		cfile = g_strdup_printf ("ldap-%s.%s", evalue, data_type);
	g_free (evalue);
	
	gchar *fname;
	if (is_cache)
		fname = g_build_path (G_DIR_SEPARATOR_S, g_get_user_cache_dir (),
				      "libgda", "ldap", cfile, NULL);
	else
		fname = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (),
				      "libgda", cfile, NULL);

	g_free (cfile);
	return fname;
}
Ejemplo n.º 16
0
static gchar *
gs_screenshot_get_cachefn_for_url (const gchar *url)
{
	g_autofree gchar *basename = NULL;
	g_autofree gchar *checksum = NULL;
	checksum = g_compute_checksum_for_string (G_CHECKSUM_SHA256, url, -1);
	basename = g_path_get_basename (url);
	return g_strdup_printf ("%s-%s", checksum, basename);
}
Ejemplo n.º 17
0
/**
 * Sign file using specified rsa key and signature
 *
 * arguments:
 * (rsa_privkey, rsa_signature, string)
 *
 * returns:
 * true - if string match rsa signature
 * false - otherwise
 */
static gint
lua_rsa_sign_file (lua_State *L)
{
	RSA *rsa;
	rspamd_fstring_t *signature, **psig;
	const gchar *filename;
	gchar *data = NULL, *data_sig;
	gint ret, fd;
	struct stat st;

	rsa = lua_check_rsa_privkey (L, 1);
	filename = luaL_checkstring (L, 2);

	if (rsa != NULL && filename != NULL) {
		fd = open (filename, O_RDONLY);
		if (fd == -1) {
			msg_err ("cannot open file %s: %s", filename, strerror (errno));
			lua_pushnil (L);
		}
		else {
			if (fstat (fd, &st) == -1 ||
				(data =
				mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd,
				0)) == MAP_FAILED) {
				msg_err ("cannot mmap file %s: %s", filename, strerror (errno));
				lua_pushnil (L);
			}
			else {
				signature = rspamd_fstring_sized_new (RSA_size (rsa));
				data_sig = g_compute_checksum_for_string (G_CHECKSUM_SHA256,
						data,
						st.st_size);
				ret = RSA_sign (NID_sha1, data_sig, strlen (data_sig),
						signature->str, (guint *)&signature->len, rsa);
				if (ret == 0) {
					msg_info ("cannot make a signature for data: %s",
						ERR_error_string (ERR_get_error (), NULL));
					lua_pushnil (L);
					rspamd_fstring_free (signature);
				}
				else {
					psig = lua_newuserdata (L, sizeof (rspamd_fstring_t *));
					rspamd_lua_setclass (L, "rspamd{rsa_signature}", -1);
					*psig = signature;
				}
				g_free (data_sig);
				munmap (data, st.st_size);
			}
			close (fd);
		}
	}
	else {
		lua_pushnil (L);
	}

	return 1;
}
Ejemplo n.º 18
0
/**
 * mpl_utils_get_thumbnail_path:
 * @uri: image uri
 *
 * Retrieves the path to thumbnail for an image identified by uri. The
 * thumbnails are searched for in ~/.bk-thumbnails, ~/thumbnails/large and
 * ~/thumbnails/normal, in that order.
 *
 * Return value: path to the thumbnail, or %NULL if thumbnail does not exist.
 * The retured string must be freed with g_free() when no longer needed.
 */
gchar *
mpl_utils_get_thumbnail_path (const gchar *uri)
{
  gchar *thumbnail_path;
  gchar *thumbnail_filename = NULL;
  gchar *csum;

  csum = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);

  thumbnail_path = g_build_filename (g_get_home_dir (),
                                     ".bkl-thumbnails",
                                     csum,
                                     NULL);

  if (g_file_test (thumbnail_path, G_FILE_TEST_EXISTS))
  {
    g_free (csum);
    goto success;
  }

  g_free (thumbnail_path);

  thumbnail_filename = g_strconcat (csum, ".png", NULL);
  thumbnail_path = g_build_filename (g_get_home_dir (),
                                     ".thumbnails",
                                     "large",
                                     thumbnail_filename,
                                     NULL);

  g_free (csum);

  if (g_file_test (thumbnail_path, G_FILE_TEST_EXISTS))
  {
    goto success;
  } else {
    g_free (thumbnail_path);
    thumbnail_path = g_build_filename (g_get_home_dir (),
                                       ".thumbnails",
                                       "normal",
                                       thumbnail_filename,
                                       NULL);

    if (g_file_test (thumbnail_path, G_FILE_TEST_EXISTS))
    {
      goto success;
    }
  }

  g_free (thumbnail_filename);
  g_free (thumbnail_path);
  return NULL;

success:
  g_free (thumbnail_filename);
  return thumbnail_path;
}
Ejemplo n.º 19
0
void sr_session_set_cred(sr_session_t *s,
		char *user,
		char *password)
{
	struct sr_session_priv *priv = s->priv;
	g_free(priv->user);
	g_free(priv->hash_pwd);
	priv->user = g_strdup(user);
	priv->hash_pwd = g_compute_checksum_for_string(G_CHECKSUM_MD5, password, -1);
}
Ejemplo n.º 20
0
PurpleUtilFetchUrlData *
np_http_login0(NPSession *session,PurpleUtilFetchUrlCallback callback)
{
    PurpleUtilFetchUrlData *url_data;
    PurpleAccount *account;
    
    account = session->account;
    
    const char *username = account->username;
    const char *pwd_md5 = g_compute_checksum_for_string(G_CHECKSUM_MD5,account->password,strlen(account->password));
    const char *http_server = purple_account_get_string(session->account, "http_method_server", NP_HTTPCONN_SERVER);
    const char *_ua = purple_account_get_string(session->account, "np_user_agent", NP_USER_AGENT);

    char *login_url = g_strdup_printf("%s/%s",http_server,NP_LOGIN_0_PATH);
    purple_debug_info("np", "login_url: %s",login_url);
    
    const char *login_from = "niupai";
    const char *login_device_id = purple_account_get_string(session->account, "device_id", "FAKE_DEVICE_ID_FROM_PURPLE");
    char *plain_login_key = g_strdup_printf("%s%s",login_device_id,"nPiGa:#)");
    char *login_key = g_compute_checksum_for_string(G_CHECKSUM_MD5,plain_login_key,strlen(plain_login_key));
    purple_debug_info("np", "login_device_id: %s",login_device_id);
    
    
    gchar *content = g_strdup_printf("account=%s&password=%s&login_from=%s&login_device_id=%s&login_key=%s&_ua=%s",
                                     username,
                                     pwd_md5,
                                     login_from,
                                     login_device_id,
                                     login_key,
                                     _ua,
                                     NULL
                                     );
    url_data = np_util_post_url(login_url, content,TRUE, callback, session);
    
    g_free(plain_login_key);
    g_free(login_key);
	g_free(login_url);
    g_free(content);
    
    return url_data;
    
}
Ejemplo n.º 21
0
static gboolean
gimp_test_get_file_state_verbose (const gchar       *filename,
                                  GimpTestFileState *filestate)
{
  gboolean success = TRUE;

  filestate->filename = g_strdup (filename);

  /* Get checksum */
  if (success)
    {
      gchar *contents = NULL;
      gsize  length   = 0;

      success = g_file_get_contents (filename,
                                     &contents,
                                     &length,
                                     NULL);
      if (success)
        {
          filestate->md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5,
                                                          contents,
                                                          length);
        }

      g_free (contents);
    }

  /* Get modification time */
  if (success)
    {
      GFile     *file = g_file_new_for_path (filename);
      GFileInfo *info = g_file_query_info (file,
                                           G_FILE_ATTRIBUTE_TIME_MODIFIED, 0,
                                           NULL, NULL);
      if (info)
        {
          g_file_info_get_modification_time (info, &filestate->modtime);
          success = TRUE;
          g_object_unref (info);
        }
      else
        {
          success = FALSE;
        }

      g_object_unref (file);
    }

  if (! success)
    g_printerr ("Failed to get initial file info for '%s'\n", filename);

  return success;
}
Ejemplo n.º 22
0
static char *
build_request_filename (const char *uri)
{
  char *hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);

  char *filename = g_strdup_printf ("%"G_GINT64_FORMAT "-%s.data",
                                    g_get_monotonic_time (), hash);

  g_free (hash);
  return filename;
}
Ejemplo n.º 23
0
/**
 * korva_upnp_host_data_get_id:
 *
 * Get a uniquish identifier for this #KorvaUPnPHostData.
 * It is used to generate the URLs served by #KorvaUPnPFileServer.
 *
 * @self: An instance of #KorvaUPnPHostData
 *
 * Returns: (transfer full): A new string containing the id. Free after use.
 */
char *
korva_upnp_host_data_get_id (KorvaUPnPHostData *self)
{
    char *hash, *uri;

    uri = g_file_get_uri (self->priv->file);
    hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, uri, -1);
    g_free (uri);

    return hash;
}
Ejemplo n.º 24
0
static gchar *
get_nonce (void)
{
  gchar *timestamp = get_timestamp();
  guint rnd_number = g_random_int ();
  gchar *rnd_str = g_strdup_printf ("%d_%s", rnd_number, timestamp);
  gchar *nonce = g_compute_checksum_for_string (G_CHECKSUM_MD5, rnd_str, -1);
  g_free (timestamp);
  g_free (rnd_str);

  return nonce;
}
Ejemplo n.º 25
0
	 void p2pserver_json_identupdate_response(char **response, json_t *json){
		 
		 //Define local variables
		 char * local_response;
		 
		 json_t *client_public_key;
		 
		 //Begin local function logic
		 
			/** General Instruction Description
			 * 
			 * Parse "json", check if this clients publickey is in the database
			 * if no: Add it to the database and send back our public key
			 * if yes: Update the users current "status"
			 **/
			 
			//JSON: Get the public_key value of the user.
			client_public_key = json_object_get(json, "public_key");
			 
			const guchar * client_public_key_string;
			client_public_key_string = g_strdup_printf("%s", json_string_value(client_public_key));
			
			//SHA256: public_key 
			gchar * client_public_key_string_sha256;
			client_public_key_string_sha256 = g_compute_checksum_for_string(G_CHECKSUM_SHA256, client_public_key_string, strlen(client_public_key_string));
			
			//SQLite3: Search for the "sha256s" associated public key in the SQLite3 DB and match that found result with its public key (efficent search, less characters to match)
			int client_public_key_exists = p2pserver_sql_client_pubkey_exists(client_public_key_string_sha256, client_public_key_string);
			
			//Decision: If no: add it to the DB, if yes, update the current users "status" (Only if the status is signed and valid, of course)
			if(client_public_key_exists == 1){
				//TO DO: Update the clients "status" locally to DB
				
				//Respond to the client with a return_code of 1001 (identupdate success)
				local_response = g_strdup_printf("{\"return_code\":\"1001\", \"public_key\":\"%s\"}\n", p2pserver_rsa_active_identity);
				
			}else if(client_public_key_exists == 0){
				//This client is new, save it into the database
				int add_client_locally_success = p2pserver_sql_add_client_identity(client_public_key_string_sha256, client_public_key_string);
				
				local_response = g_strdup_printf("{\"return_code\":\"1002\", \"public_key\":\"%s\"}\n", p2pserver_rsa_active_identity);
			}else{
				//Error status invoked during the search
				local_response = g_strdup_printf("{\"return_code\":\"-1000\"}\n");
			}
			
			g_print("%s\n", local_response);

		 //output with response
		 *response = local_response;
		 
		 return;
	 }
Ejemplo n.º 26
0
static void
verify_user (SwService *service)
{
  SwServiceLastfm *lastfm = SW_SERVICE_LASTFM (service);
  SwServiceLastfmPrivate *priv = lastfm->priv;
  char *hash_pw, *user_pass, *auth_token;
  RestProxyCall *call;
  RestParams *params;
  GHashTable *params_t;
  char *api_sig;

  hash_pw = g_compute_checksum_for_string (G_CHECKSUM_MD5,
					   priv->password, -1);
  user_pass = g_strconcat(priv->username, hash_pw, NULL);
  auth_token = g_compute_checksum_for_string (G_CHECKSUM_MD5,
					      user_pass, -1);

  call = rest_proxy_new_call (priv->proxy);
  rest_proxy_call_add_params (call,
			      "api_key", priv->api_key,
			      "username", priv->username,
			      "authToken", auth_token,
			      "method", "auth.getMobileSession",
			      NULL);
  params = rest_proxy_call_get_params (call);
  params_t = rest_params_as_string_hash_table (params);

  api_sig = build_call_sig (params_t, priv->api_secret);
  rest_proxy_call_add_params (call,
			      "api_sig", api_sig,
			      NULL);

  rest_proxy_call_async (call, _mobile_session_cb, (GObject*)lastfm, NULL, NULL);

  g_hash_table_unref (params_t);
  g_free (api_sig);
  g_free (hash_pw);
  g_free (user_pass);
  g_free (auth_token);
}
Ejemplo n.º 27
0
/**
 * gs_utils_get_user_hash:
 * @error: A #GError, or %NULL
 *
 * This SHA1 hash is composed of the contents of machine-id and your
 * usename and is also salted with a hardcoded value.
 *
 * This provides an identifier that can be used to identify a specific
 * user on a machine, allowing them to cast only one vote or perform
 * one review on each application.
 *
 * There is no known way to calculate the machine ID or username from
 * the machine hash and there should be no privacy issue.
 *
 * Returns: The user hash, or %NULL on error
 */
gchar *
gs_utils_get_user_hash (GError **error)
{
	g_autofree gchar *data = NULL;
	g_autofree gchar *salted = NULL;

	if (!g_file_get_contents ("/etc/machine-id", &data, NULL, error))
		return NULL;

	salted = g_strdup_printf ("gnome-software[%s:%s]",
				  g_get_user_name (), data);
	return g_compute_checksum_for_string (G_CHECKSUM_SHA1, salted, -1);
}
Ejemplo n.º 28
0
static char *
oauth_create_nonce (GTimeVal *t)
{
	char *s;
	char *v;

	s = g_strdup_printf ("%ld%u", t->tv_usec, g_random_int ());
	v = g_compute_checksum_for_string (G_CHECKSUM_MD5, s, -1);

	g_free (s);

	return v;
}
static gboolean
slmock_check_login(GDBusConnection * session, slmock_table_t * slmockdata, gboolean clear_cache)
{
	if (clear_cache) {
		gchar *username_sha = g_compute_checksum_for_string (G_CHECKSUM_SHA256, slmockdata->username, -1);
		gchar *file_path = g_build_path ("/", g_get_user_cache_dir(), "remote-logon-service", "cache", username_sha, NULL);
		unlink (file_path);
		g_free (username_sha);
		g_free (file_path);
	}
	GVariant * retval = g_dbus_connection_call_sync(session,
	                                                "org.ArcticaProject.RemoteLogon",
	                                                "/org/ArcticaProject/RemoteLogon",
	                                                "org.ArcticaProject.RemoteLogon",
	                                                "GetServersForLogin",
	                                                g_variant_new("(sssb)",
	                                                              "https://slmock.com/",
	                                                              slmockdata->username,
	                                                              slmockdata->password,
	                                                              TRUE), /* params */
	                                                G_VARIANT_TYPE("(bsa(sssba(sbva{sv})a(si)))"), /* ret type */
	                                                G_DBUS_CALL_FLAGS_NONE,
	                                                -1,
	                                                NULL,
	                                                NULL);

	g_assert(retval != NULL);
	g_assert(g_variant_n_children(retval) == 3);

	GVariant * loggedin = g_variant_get_child_value(retval, 0);
	g_assert(g_variant_get_boolean(loggedin));
	g_variant_unref(loggedin); loggedin = NULL;

	GVariant * data = g_variant_get_child_value(retval, 1);
	g_assert(g_strcmp0(g_variant_get_string(data, NULL), "network") == 0);
	g_variant_unref(data); data = NULL;

	GVariant * array = g_variant_get_child_value(retval, 2);
	int i;
	// Check all servers should be in the result are in the result
	for (i = 0; slmockdata->servers[i].name != NULL; i++) {
		g_assert(find_server(array, &slmockdata->servers[i]));
	}
	// Check there is no more servers in the result than we expected
	g_assert(i == g_variant_n_children(array));
	g_variant_unref(array);

	g_variant_unref(retval);

	return TRUE;
}
Ejemplo n.º 30
0
static void
ws_params(sr_session_t *s, char **params, ...)
{
	struct sr_session_priv *priv = s->priv;
	GList *l = NULL;
	va_list args;
	GString *params_str, *tmp;
	gchar *api_sig;

	if (!params)
		return;

	params_str = g_string_sized_new(0x100);

	va_start(args, params);
	do {
		const char *key, *value;
		key = va_arg(args, char *);
		if (!key)
			break;
		value = va_arg(args, char *);
		if (!value)
			break;
		l = g_list_prepend(l, param_new(key, value));
		g_string_append_printf(params_str, "&%s=%s", key, value);
	} while (true);
	va_end(args);

	l = g_list_sort(l, (GCompareFunc) param_compare);

	tmp = g_string_sized_new(0x100);

	GList *c;
	for (c = l; c; c = c->next) {
		struct ws_param *p = c->data;
		g_string_append_printf(tmp, "%s%s", p->key, p->value);
	}

	g_string_append(tmp, priv->api_secret);

	api_sig = g_compute_checksum_for_string(G_CHECKSUM_MD5, tmp->str, -1);

	g_string_free(tmp, TRUE);
	g_list_foreach(l, (GFunc) free, NULL);

	g_string_append_printf(params_str, "&api_sig=%s", api_sig);
	g_free(api_sig);

	*params = params_str->str;
	g_string_free(params_str, FALSE);
}