[glib-networking/wip/tingping/pkcs11-2] fixup! fixup! fixup! WIP: Add PKCS #11 support
- From: Patrick Griffis <pgriffis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib-networking/wip/tingping/pkcs11-2] fixup! fixup! fixup! WIP: Add PKCS #11 support
- Date: Thu, 8 Aug 2019 20:37:03 +0000 (UTC)
commit 5b49e2a7f5d51f235a4326c200a136967f17e87f
Author: Patrick Griffis <pgriffis igalia com>
Date: Thu Aug 8 13:36:32 2019 -0700
fixup! fixup! fixup! WIP: Add PKCS #11 support
tls/gnutls/gtlsconnection-gnutls.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/tls/gnutls/gtlsconnection-gnutls.c b/tls/gnutls/gtlsconnection-gnutls.c
index 8f683b5..d4a38e5 100644
--- a/tls/gnutls/gtlsconnection-gnutls.c
+++ b/tls/gnutls/gtlsconnection-gnutls.c
@@ -74,6 +74,7 @@ typedef struct
gnutls_certificate_credentials_t creds;
gnutls_session_t session;
gchar *interaction_id;
+ GCancellable *pin_interaction_cancellable;
} GTlsConnectionGnutlsPrivate;
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GTlsConnectionGnutls, g_tls_connection_gnutls, G_TYPE_TLS_CONNECTION_BASE,
@@ -259,6 +260,12 @@ g_tls_connection_gnutls_finalize (GObject *object)
if (priv->creds)
gnutls_certificate_free_credentials (priv->creds);
+ if (priv->pin_interaction_cancellable)
+ {
+ g_cancellable_cancel (priv->pin_interaction_cancellable);
+ g_clear_object (&priv->pin_interaction_cancellable);
+ }
+
g_free (priv->interaction_id);
G_OBJECT_CLASS (g_tls_connection_gnutls_parent_class)->finalize (object);
@@ -290,6 +297,7 @@ on_pin_request (void *userdata,
size_t pin_max)
{
GTlsConnection *connection = G_TLS_CONNECTION (userdata);
+ GTlsConnectionGnutlsPrivate *priv = g_tls_connection_gnutls_get_instance_private (G_TLS_CONNECTION_GNUTLS
(connection));
GTlsInteraction *interaction = g_tls_connection_get_interaction (connection);
GTlsInteractionResult result;
GTlsPassword *password;
@@ -309,10 +317,14 @@ on_pin_request (void *userdata,
if (callback_flags & GNUTLS_PIN_FINAL_TRY || attempt > 5) /* Give up at some point */
password_flags |= G_TLS_PASSWORD_FINAL_TRY;
+ if (!priv->pin_interaction_cancellable)
+ priv->pin_interaction_cancellable = g_cancellable_new ();
+
description = g_strdup_printf (_("PIN for PKCS #11 token: %s (%s)"), token_label, token_url);
password = g_tls_password_new (password_flags, description);
- // FIXME: Cancellation
- result = g_tls_interaction_invoke_ask_password (interaction, password, NULL, &error);
+ result = g_tls_interaction_invoke_ask_password (interaction, password,
+ priv->pin_interaction_cancellable,
+ &error);
g_free (description);
switch (result)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]