summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2021-07-28 11:59:37 -0500
committerPatrick Griffis <pgriffis@igalia.com>2021-07-28 11:59:37 -0500
commit379d1d1b2d65622ad725f7ddc0a70ed40762d448 (patch)
treeee8a58f3a71ee67da5d86e317ff07e42c52d3233 /examples
parent28a3eac331f1db62de25d0e982f0ffc5e2a1f432 (diff)
downloadlibsoup-379d1d1b2d65622ad725f7ddc0a70ed40762d448.tar.gz
examples: Update get to use client certificate API
Diffstat (limited to 'examples')
-rw-r--r--examples/get.c60
1 files changed, 2 insertions, 58 deletions
diff --git a/examples/get.c b/examples/get.c
index ee70dceb..f7bad501 100644
--- a/examples/get.c
+++ b/examples/get.c
@@ -110,59 +110,6 @@ on_request_sent (GObject *source, GAsyncResult *result, gpointer user_data)
g_object_unref (in);
}
-
-/* Inline class for providing a pre-configured client certificate */
-typedef struct _GetTlsCertInteraction GetTlsCertInteraction;
-typedef struct _GetTlsCertInteractionClass GetTlsCertInteractionClass;
-
-static GType _get_tls_cert_interaction_get_type (void) G_GNUC_CONST;
-static GetTlsCertInteraction * _get_tls_cert_interaction_new (GTlsCertificate *cert);
-
-struct _GetTlsCertInteraction
-{
- GTlsInteraction parent_instance;
- GTlsCertificate *cert;
-};
-
-struct _GetTlsCertInteractionClass
-{
- GTlsInteractionClass parent_class;
-};
-
-G_DEFINE_TYPE (GetTlsCertInteraction, _get_tls_cert_interaction, G_TYPE_TLS_INTERACTION);
-
-static GTlsInteractionResult
-request_certificate (GTlsInteraction *interaction,
- GTlsConnection *connection,
- GTlsCertificateRequestFlags flags,
- GCancellable *cancellable,
- GError **error)
-{
- GetTlsCertInteraction *self = (GetTlsCertInteraction*)interaction;
- g_tls_connection_set_certificate (connection, self->cert);
- return G_TLS_INTERACTION_HANDLED;
-}
-
-static void
-_get_tls_cert_interaction_init (GetTlsCertInteraction *interaction)
-{
-}
-
-static void
-_get_tls_cert_interaction_class_init (GetTlsCertInteractionClass *klass)
-{
- GTlsInteractionClass *interaction_class = G_TLS_INTERACTION_CLASS (klass);
- interaction_class->request_certificate = request_certificate;
-}
-
-GetTlsCertInteraction *
-_get_tls_cert_interaction_new (GTlsCertificate *cert)
-{
- GetTlsCertInteraction *self = g_object_new (_get_tls_cert_interaction_get_type (), NULL);
- self->cert = g_object_ref (cert);
- return self;
-}
-
static const char *ca_file, *proxy;
static char *client_cert_file, *client_key_file;
static gboolean ntlm;
@@ -213,6 +160,7 @@ main (int argc, char **argv)
const char *url;
SoupMessage *msg;
GUri *parsed;
+ GTlsCertificate *client_cert = NULL;
GError *error = NULL;
opts = g_option_context_new (NULL);
@@ -272,8 +220,6 @@ main (int argc, char **argv)
}
if (client_cert_file) {
- GTlsCertificate *client_cert;
- GetTlsCertInteraction *interaction;
if (!client_key_file) {
g_printerr ("--key is required with --cert\n");
g_object_unref (session);
@@ -286,9 +232,6 @@ main (int argc, char **argv)
g_object_unref (session);
exit (1);
}
- interaction = _get_tls_cert_interaction_new (client_cert);
- soup_session_set_tls_interaction (session, G_TLS_INTERACTION (interaction));
- g_object_unref (interaction);
}
if (debug) {
@@ -316,6 +259,7 @@ main (int argc, char **argv)
/* Send the request */
msg = soup_message_new (head ? "HEAD" : "GET", url);
+ soup_message_set_tls_client_certificate (msg, client_cert);
soup_session_send_async (session, msg, G_PRIORITY_DEFAULT, NULL,
on_request_sent, NULL);
g_object_unref (msg);