summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2022-08-11 18:15:55 +0200
committerMilan Crha <mcrha@redhat.com>2022-08-11 18:15:55 +0200
commit1385e7259c9a5bf4478ab3a2558dcbaaa63b098e (patch)
tree9595a7ebc11ce34608ad565439ebefc508a6d2aa /src/modules
parent5fe79c2c6451819faf8f8b00a135489897757686 (diff)
downloadevolution-data-server-1385e7259c9a5bf4478ab3a2558dcbaaa63b098e.tar.gz
Replace GcrCertificateWidget with libedataserverui's ECertificateWidget
The GcrCertificateWidget will be removed, thus use the one provided by the libedataserverui instead. It helps to limit spread of the GCR in the code.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/trust-prompt/CMakeLists.txt9
-rw-r--r--src/modules/trust-prompt/module-trust-prompt.c58
-rw-r--r--src/modules/trust-prompt/trust-prompt-gtk.c40
-rw-r--r--src/modules/trust-prompt/trust-prompt.h10
4 files changed, 15 insertions, 102 deletions
diff --git a/src/modules/trust-prompt/CMakeLists.txt b/src/modules/trust-prompt/CMakeLists.txt
index 7aed5125a..f39034642 100644
--- a/src/modules/trust-prompt/CMakeLists.txt
+++ b/src/modules/trust-prompt/CMakeLists.txt
@@ -5,27 +5,20 @@ set(TRUST_PROMPT_SOURCES
set(TRUST_PROMPT_CFLAGS
${GNOME_PLATFORM_CFLAGS}
${GTK_CFLAGS}
- ${GCR_CFLAGS}
)
set(TRUST_PROMPT_INCLUDE_DIRS
${GNOME_PLATFORM_INCLUDE_DIRS}
${GTK_INCLUDE_DIRS}
- ${GCR_INCLUDE_DIRS}
)
set(TRUST_PROMPT_LDFLAGS
${GNOME_PLATFORM_LDFLAGS}
${GTK_LDFLAGS}
- ${GCR_LDFLAGS}
)
set(extra_defines)
-if(WITH_GCR3)
- set(extra_defines -DWITH_GCR3=1)
-endif(WITH_GCR3)
-
-set(extra_deps)
+set(extra_deps edataserverui)
set(sources
module-trust-prompt.c
trust-prompt.h
diff --git a/src/modules/trust-prompt/module-trust-prompt.c b/src/modules/trust-prompt/module-trust-prompt.c
index b2379e581..151b97019 100644
--- a/src/modules/trust-prompt/module-trust-prompt.c
+++ b/src/modules/trust-prompt/module-trust-prompt.c
@@ -105,18 +105,6 @@ cert_errors_to_reason (GTlsCertificateFlags flags)
return g_string_free (reason, FALSE);
}
-static void
-parser_parsed_cb (GcrParser *parser,
- GcrParsed **out_parsed)
-{
- GcrParsed *parsed;
-
- parsed = gcr_parser_get_parsed (parser);
- g_return_if_fail (parsed != NULL);
-
- *out_parsed = gcr_parsed_ref (parsed);
-}
-
static gboolean
trust_prompt_show_trust_prompt (EUserPrompterServerExtension *extension,
gint prompt_id,
@@ -125,25 +113,11 @@ trust_prompt_show_trust_prompt (EUserPrompterServerExtension *extension,
const gchar *host, *markup, *base64_cert, *cert_errs_str;
gchar *reason;
gint64 cert_errs;
- GcrParser *parser;
- GcrParsed *parsed = NULL;
- guchar *data;
- gsize data_length;
- gboolean success = FALSE;
- GError *local_error = NULL;
+ gboolean success;
g_return_val_if_fail (extension != NULL, FALSE);
g_return_val_if_fail (parameters != NULL, FALSE);
- /* Continue even if PKCS#11 module registration fails.
- * Certificate details won't display correctly but the
- * user can still respond to the prompt. */
- gcr_pkcs11_initialize (NULL, &local_error);
- if (local_error != NULL) {
- g_warning ("%s: %s", G_STRFUNC, local_error->message);
- g_clear_error (&local_error);
- }
-
host = e_named_parameters_get (parameters, "host");
markup = e_named_parameters_get (parameters, "markup");
base64_cert = e_named_parameters_get (parameters, "certificate");
@@ -156,39 +130,13 @@ trust_prompt_show_trust_prompt (EUserPrompterServerExtension *extension,
cert_errs = g_ascii_strtoll (cert_errs_str, NULL, 16);
reason = cert_errors_to_reason (cert_errs);
- parser = gcr_parser_new ();
-
- g_signal_connect (
- parser, "parsed",
- G_CALLBACK (parser_parsed_cb), &parsed);
-
- data = g_base64_decode (base64_cert, &data_length);
- gcr_parser_parse_data (parser, data, data_length, &local_error);
- g_free (data);
-
- g_object_unref (parser);
-
- /* Sanity check. */
- g_warn_if_fail (
- ((parsed != NULL) && (local_error == NULL)) ||
- ((parsed == NULL) && (local_error != NULL)));
-
- if (parsed != NULL) {
- success = trust_prompt_show (
- extension, prompt_id, host, markup, parsed, reason);
- gcr_parsed_unref (parsed);
- }
-
- if (local_error != NULL) {
- g_warning ("%s: %s", G_STRFUNC, local_error->message);
- g_clear_error (&local_error);
- success = FALSE;
- }
+ success = trust_prompt_show (extension, prompt_id, host, markup, base64_cert, reason);
g_free (reason);
return success;
}
+
static void
trust_prompt_register_dialogs (EExtension *extension,
EUserPrompterServer *server)
diff --git a/src/modules/trust-prompt/trust-prompt-gtk.c b/src/modules/trust-prompt/trust-prompt-gtk.c
index bcacdbeb2..a7b6c6b6c 100644
--- a/src/modules/trust-prompt/trust-prompt-gtk.c
+++ b/src/modules/trust-prompt/trust-prompt-gtk.c
@@ -21,14 +21,7 @@
#include <glib/gi18n-lib.h>
#include <libebackend/libebackend.h>
-
-#define GCR_API_SUBJECT_TO_CHANGE
-#ifdef WITH_GCR3
-#include <gcr/gcr.h>
-#else
-#include <gcr-gtk3/gcr-gtk3.h>
-#endif
-#undef GCR_API_SUBJECT_TO_CHANGE
+#include <libedataserverui/libedataserverui.h>
#include "trust-prompt.h"
@@ -120,14 +113,13 @@ trust_prompt_show (EUserPrompterServerExtension *extension,
gint prompt_id,
const gchar *host,
const gchar *markup,
- GcrParsed *parsed,
+ const gchar *base64_certificate_der,
const gchar *reason)
{
- GcrCertificate *certificate;
+ guchar *certificate_der;
+ gsize certificate_der_len = 0;
GtkWidget *dialog, *widget;
GtkGrid *grid;
- const guchar *data;
- gsize length;
gchar *tmp;
gint row = 0;
@@ -191,29 +183,17 @@ trust_prompt_show (EUserPrompterServerExtension *extension,
trust_prompt_add_info_line (grid, _("Reason:"), reason, FALSE, &row);
- data = gcr_parsed_get_data (parsed, &length);
-
- certificate = gcr_simple_certificate_new (data, length);
-
- #ifdef WITH_GCR3
- {
- GcrCertificateWidget *certificate_widget;
- GckAttributes *attributes;
+ widget = e_certificate_widget_new ();
- attributes = gcr_parsed_get_attributes (parsed);
- certificate_widget = gcr_certificate_widget_new (certificate);
- gcr_certificate_widget_set_attributes (certificate_widget, attributes);
-
- widget = GTK_WIDGET (certificate_widget);
+ certificate_der = g_base64_decode (base64_certificate_der, &certificate_der_len);
+ if (certificate_der) {
+ e_certificate_widget_set_der (E_CERTIFICATE_WIDGET (widget), certificate_der, certificate_der_len);
+ g_free (certificate_der);
}
- #else
- widget = gcr_certificate_widget_new (certificate);
- #endif
+
gtk_grid_attach (grid, widget, 1, row, 2, 1);
gtk_widget_show (widget);
- g_clear_object (&certificate);
-
g_object_set_data (G_OBJECT (dialog), TRUST_PROMP_ID_KEY, GINT_TO_POINTER (prompt_id));
g_signal_connect (dialog, "response", G_CALLBACK (trust_prompt_response_cb), extension);
diff --git a/src/modules/trust-prompt/trust-prompt.h b/src/modules/trust-prompt/trust-prompt.h
index 0bdf4e959..965753578 100644
--- a/src/modules/trust-prompt/trust-prompt.h
+++ b/src/modules/trust-prompt/trust-prompt.h
@@ -18,14 +18,6 @@
#ifndef TRUST_PROMPT_H
#define TRUST_PROMPT_H
-#define GCR_API_SUBJECT_TO_CHANGE
-#ifdef WITH_GCR3
-#include <gcr/gcr.h>
-#else
-#include <gcr-gtk3/gcr-gtk3.h>
-#endif
-#undef GCR_API_SUBJECT_TO_CHANGE
-
#include <libebackend/libebackend.h>
G_BEGIN_DECLS
@@ -45,7 +37,7 @@ trust_prompt_show (EUserPrompterServerExtension *extension,
gint prompt_id,
const gchar *host,
const gchar *markup,
- GcrParsed *parsed,
+ const gchar *base64_certificate_der,
const gchar *reason);
G_END_DECLS