static void
prepare_create_prompt (GkdSecretCreate *self)
{
	GkuPrompt *prompt;
	gchar *label;
	gchar *text;

	g_assert (GKD_SECRET_IS_CREATE (self));
	g_assert (self->pkcs11_attrs);

	prompt = GKU_PROMPT (self);

	if (!gck_attributes_find_string (self->pkcs11_attrs, CKA_LABEL, &label))
		label = g_strdup (_("Unnamed"));

	gku_prompt_reset (prompt, TRUE);

	gku_prompt_set_title (prompt, _("New Keyring Password"));
	gku_prompt_set_primary_text (prompt, _("Choose password for new keyring"));

	text = g_markup_printf_escaped (_("An application wants to create a new keyring called '%s'. "
	                                  "Choose the password you want to use for it."), label);
	gku_prompt_set_secondary_text (prompt, text);
	g_free (text);

	gku_prompt_show_widget (prompt, "password_area");
	gku_prompt_show_widget (prompt, "confirm_area");

	g_free (label);
}
static gboolean
create_collection_with_secret (GkdSecretCreate *self, GkdSecretSecret *master)
{
	DBusError derr = DBUS_ERROR_INIT;
	GkdSecretService *service;
	gchar *identifier;

	g_assert (GKD_SECRET_IS_CREATE (self));
	g_assert (master);
	g_assert (!self->result_path);

	self->result_path = gkd_secret_create_with_secret (self->pkcs11_attrs, master, &derr);

	if (!self->result_path) {
		g_warning ("couldn't create new collection: %s", derr.message);
		dbus_error_free (&derr);
		return FALSE;
	}

	if (self->alias) {
		if (!gkd_secret_util_parse_path (self->result_path, &identifier, NULL))
			g_assert_not_reached ();
		service = gkd_secret_prompt_get_service (GKD_SECRET_PROMPT (self));
		gkd_secret_service_set_alias (service, self->alias, identifier);
		g_free (identifier);
	}

	return TRUE;
}
static gboolean
create_collection_with_secret (GkdSecretCreate *self, GkdSecretSecret *master)
{
    GError *error = NULL;
    GkdSecretService *service;
    gchar *identifier;

    g_assert (GKD_SECRET_IS_CREATE (self));
    g_assert (master);
    g_assert (!self->result_path);

    self->result_path = gkd_secret_create_with_secret (self->attributes, master, &error);

    if (!self->result_path) {
        g_warning ("couldn't create new collection: %s", error->message);
        g_error_free (error);
        return FALSE;
    }

    service = gkd_secret_prompt_get_service (GKD_SECRET_PROMPT (self));

    if (self->alias) {
        if (!gkd_secret_util_parse_path (self->result_path, &identifier, NULL))
            g_assert_not_reached ();
        gkd_secret_service_set_alias (service, self->alias, identifier);
        g_free (identifier);
    }

    /* Notify the callers that a collection was created */
    gkd_secret_service_emit_collection_created (service, self->result_path);

    return TRUE;
}