[seahorse/be9ddd5: 5/8] removed the key creation code from on_gpgme_generate_response and put it into a separate function ca
- From: Thorsten Sick <tsick src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [seahorse/be9ddd5: 5/8] removed the key creation code from on_gpgme_generate_response and put it into a separate function ca
- Date: Sat, 9 Jan 2010 12:34:22 +0000 (UTC)
commit c58f5e38b7fd05821ad5f1b8a40545457c4fea7a
Author: Thorsten Sick <thorsten sick email de>
Date: Mon Nov 16 20:05:44 2009 +0100
removed the key creation code from on_gpgme_generate_response and put it into a separate function called seahorse_gpgme_generate_key. This is now called from seahorse_service_generate_credentials to handle the DBus call GenerateCredentials
daemon/seahorse-service.c | 12 +++--
pgp/seahorse-gpgme-dialogs.h | 9 ++++
pgp/seahorse-gpgme-generate.c | 90 +++++++++++++++++++++++++++--------------
3 files changed, 76 insertions(+), 35 deletions(-)
---
diff --git a/daemon/seahorse-service.c b/daemon/seahorse-service.c
index 6a6cb6c..f095a17 100644
--- a/daemon/seahorse-service.c
+++ b/daemon/seahorse-service.c
@@ -38,6 +38,7 @@
#include "../pgp/seahorse-pgp.h"
#include "../pgp/seahorse-gpgme-source.h"
+#include "../pgp/seahorse-gpgme-key-op.h"
#include <gio/gio.h>
@@ -191,6 +192,7 @@ seahorse_service_generate_credentials (SeahorseService *svc, gchar *ktype,
gchar *name=NULL;
gchar *email=NULL;
gchar *comment=NULL;
+ SeahorseWidget *swidget;
sksrc = seahorse_context_find_source (seahorse_context_for_app (),
SEAHORSE_PGP_TYPE,
@@ -212,12 +214,12 @@ seahorse_service_generate_credentials (SeahorseService *svc, gchar *ktype,
if ((pval) && (G_VALUE_TYPE (pval) == G_TYPE_STRING))
comment=g_value_dup_string (pval);
+ swidget = seahorse_widget_new ("pgp-generate", NULL);
+ g_object_ref(sksrc);
+ g_object_set_data_full(G_OBJECT(swidget), "source", sksrc, g_object_unref);
+ seahorse_gpgme_generate_key(swidget, name, email, comment,
+ DSA_ELGAMAL, 2048,0);
- seahorse_gpgme_generate_show (SEAHORSE_GPGME_SOURCE (sksrc),
- NULL,
- name,
- email,
- comment);
g_free (name);
name = NULL;
g_free (email);
diff --git a/pgp/seahorse-gpgme-dialogs.h b/pgp/seahorse-gpgme-dialogs.h
index cbc1c06..83f6c9b 100644
--- a/pgp/seahorse-gpgme-dialogs.h
+++ b/pgp/seahorse-gpgme-dialogs.h
@@ -34,6 +34,7 @@
#include "pgp/seahorse-gpgme-subkey.h"
#include "pgp/seahorse-gpgme-source.h"
#include "pgp/seahorse-gpgme-uid.h"
+#include "libseahorse/seahorse-widget.h"
void seahorse_gpgme_sign_prompt (SeahorseGpgmeKey *key,
GtkWindow *parent);
@@ -49,6 +50,14 @@ void seahorse_gpgme_generate_show (SeahorseGpgmeSource *sksrc,
const char *email,
const gchar *comment);
+void gpgme_generate_key (SeahorseWidget *swidget,
+ const gchar *name,
+ const gchar *email,
+ const gchar *comment,
+ guint type,
+ guint bits,
+ time_t expires);
+
void seahorse_gpgme_add_revoker_new (SeahorseGpgmeKey *pkey,
GtkWindow *parent);
diff --git a/pgp/seahorse-gpgme-generate.c b/pgp/seahorse-gpgme-generate.c
index 2743a92..02f8c6f 100644
--- a/pgp/seahorse-gpgme-generate.c
+++ b/pgp/seahorse-gpgme-generate.c
@@ -165,6 +165,58 @@ get_expiry_date (SeahorseWidget *swidget)
return widget;
}
+
+/**
+ * gpgme_generate_key:
+ * @swidget: the #SeahorseWidget
+ * @name: the user's full name
+ * @email: the user's email address
+ * @comment: a comment, added to the key
+ * @type: key type like DSA_ELGAMAL
+ * @bits: the number of bits for the key to generate (2048)
+ * @expires: expiry date can be 0
+ *
+ * Displays a password generation box and creates a key afterwards. For the key
+ * data it uses @name @email and @comment ncryption is chosen by @type and @bits
+ * @expire sets the expiry date
+ *
+ */
+void seahorse_gpgme_generate_key (SeahorseWidget *swidget, const gchar *name, const gchar *email,
+ const gchar *comment, guint type, guint bits, time_t expires)
+{
+ SeahorseGpgmeSource *sksrc;
+ SeahorseOperation *op;
+ const gchar *pass;
+ gpgme_error_t gerr;
+ GtkDialog *dialog;
+
+ sksrc = SEAHORSE_GPGME_SOURCE (g_object_get_data (G_OBJECT (swidget), "source"));
+ g_assert (SEAHORSE_IS_GPGME_SOURCE (sksrc));
+
+ /* Less confusing with less on the screen */
+ gtk_widget_hide (seahorse_widget_get_toplevel (swidget));
+
+ dialog = seahorse_passphrase_prompt_show (_("Passphrase for New PGP Key"),
+ _("Enter the passphrase for your new key twice."),
+ NULL, NULL, TRUE);
+ if (gtk_dialog_run (dialog) == GTK_RESPONSE_ACCEPT)
+ {
+ pass = seahorse_passphrase_prompt_get (dialog);
+ op = seahorse_gpgme_key_op_generate (sksrc, name, email, comment,
+ pass, type, bits, expires, &gerr);
+
+ if (!GPG_IS_OK (gerr)) {
+ seahorse_gpgme_handle_error (gerr, _("Couldn't generate key"));
+ } else {
+ seahorse_progress_show (op, _("Generating key"), TRUE);
+ seahorse_operation_watch (op, (SeahorseDoneFunc)completion_handler, NULL, NULL, NULL);
+ g_object_unref (op);
+ }
+ }
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+
+
/**
* on_gpgme_generate_response:
* @dialog:
@@ -195,12 +247,12 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
seahorse_widget_show_help (swidget);
return;
}
-
+
if (response != GTK_RESPONSE_OK) {
seahorse_widget_destroy (swidget);
return;
}
-
+
/* The name */
widget = seahorse_widget_get_widget (swidget, "name-entry");
g_return_if_fail (widget != NULL);
@@ -210,17 +262,17 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
/* Make sure it's the right length. Should have been checked earlier */
name = g_strstrip (name);
g_return_if_fail (strlen(name) >= 5);
-
+
/* The email address */
widget = seahorse_widget_get_widget (swidget, "email-entry");
g_return_if_fail (widget != NULL);
email = gtk_entry_get_text (GTK_ENTRY (widget));
-
+
/* The comment */
widget = seahorse_widget_get_widget (swidget, "comment-entry");
g_return_if_fail (widget != NULL);
comment = gtk_entry_get_text (GTK_ENTRY (widget));
-
+
/* The algorithm */
widget = seahorse_widget_get_widget (swidget, "algorithm-choice");
g_return_if_fail (widget != NULL);
@@ -249,31 +301,9 @@ on_gpgme_generate_response (GtkDialog *dialog, guint response, SeahorseWidget *s
egg_datetime_get_as_time_t (EGG_DATETIME (widget), &expires);
}
- sksrc = SEAHORSE_GPGME_SOURCE (g_object_get_data (G_OBJECT (swidget), "source"));
- g_assert (SEAHORSE_IS_GPGME_SOURCE (sksrc));
-
- /* Less confusing with less on the screen */
- gtk_widget_hide (seahorse_widget_get_toplevel (swidget));
-
- dialog = seahorse_passphrase_prompt_show (_("Passphrase for New PGP Key"),
- _("Enter the passphrase for your new key twice."),
- NULL, NULL, TRUE);
- if (gtk_dialog_run (dialog) == GTK_RESPONSE_ACCEPT)
- {
- pass = seahorse_passphrase_prompt_get (dialog);
- op = seahorse_gpgme_key_op_generate (sksrc, name, email, comment,
- pass, type, bits, expires, &gerr);
-
- if (!GPG_IS_OK (gerr)) {
- seahorse_gpgme_handle_error (gerr, _("Couldn't generate key"));
- } else {
- seahorse_progress_show (op, _("Generating key"), TRUE);
- seahorse_operation_watch (op, (SeahorseDoneFunc)completion_handler, NULL, NULL, NULL);
- g_object_unref (op);
- }
- }
-
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ seahorse_gpgme_generate_key (swidget, name, email, comment, type, bits, expires);
+
+
seahorse_widget_destroy (swidget);
g_free (name);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]