static void on_subject_public_key (GObject *source, GAsyncResult *result, gpointer user_data) { GcrKeyRenderer *self = GCR_KEY_RENDERER (user_data); GError *error = NULL; GNode *node; node = _gcr_subject_public_key_load_finish (result, &error); if (error != NULL) { g_message ("couldn't load key information: %s", error->message); g_clear_error (&error); } else { if (self->pv->spk) g_bytes_unref (self->pv->spk); self->pv->spk = NULL; self->pv->spk = egg_asn1x_encode (node, NULL); if (self->pv->spk == NULL) g_warning ("invalid subjectPublicKey loaded: %s", egg_asn1x_message (node)); egg_asn1x_destroy (node); gcr_renderer_emit_data_changed (GCR_RENDERER (self)); } g_object_unref (self); }
static void on_object_cache_attributes (GObject *obj, GParamSpec *spec, gpointer user_data) { GcrKeyRenderer *self = GCR_KEY_RENDERER (user_data); update_subject_public_key (self); gcr_renderer_emit_data_changed (GCR_RENDERER (self)); }
static void gcr_key_renderer_set_property (GObject *obj, guint prop_id, const GValue *value, GParamSpec *pspec) { GcrKeyRenderer *self = GCR_KEY_RENDERER (obj); switch (prop_id) { case PROP_LABEL: g_free (self->pv->label); self->pv->label = g_value_dup_string (value); g_object_notify (obj, "label"); gcr_renderer_emit_data_changed (GCR_RENDERER (self)); break; case PROP_ATTRIBUTES: gck_attributes_unref (self->pv->attributes); self->pv->attributes = g_value_dup_boxed (value); gcr_renderer_emit_data_changed (GCR_RENDERER (self)); break; case PROP_OBJECT: g_clear_object (&self->pv->object); self->pv->object = g_value_dup_object (value); if (self->pv->object) { gck_attributes_unref (self->pv->attributes); self->pv->attributes = NULL; } if (GCK_IS_OBJECT_CACHE (self->pv->object)) { self->pv->notify_sig = g_signal_connect (self->pv->object, "notify::attributes", G_CALLBACK (on_object_cache_attributes), self); on_object_cache_attributes (G_OBJECT (self->pv->object), NULL, self); } g_object_notify (obj, "attributes"); g_object_notify (obj, "object"); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } }
/** * gcr_key_renderer_set_attributes: * @self: The key renderer * @attrs: (allow-none): the attributes to display * * Get the attributes displayed in the renderer. The attributes should represent * either an RSA, DSA, or EC key in PKCS\#11 style. */ void gcr_key_renderer_set_attributes (GcrKeyRenderer *self, GckAttributes *attrs) { g_return_if_fail (GCR_IS_KEY_RENDERER (self)); if (self->pv->attributes) gck_attributes_unref (self->pv->attributes); self->pv->attributes = attrs; if (self->pv->attributes) gck_attributes_ref (self->pv->attributes); g_object_notify (G_OBJECT (self), "attributes"); gcr_renderer_emit_data_changed (GCR_RENDERER (self)); }
static void patrol_dialog_window_init (PatrolDialogWindow *self) { PatrolDialogWindowPrivate *pv = self->pv = G_TYPE_INSTANCE_GET_PRIVATE(self, PATROL_TYPE_DIALOG_WINDOW, PatrolDialogWindowPrivate); pv->host = NULL; pv->proto = NULL; pv->port = 0; pv->chains = NULL; pv->result = PATROL_VERIFY_OK; pv->add_pin = FALSE; pv->all_hostnames = FALSE; pv->renderer = gcr_certificate_renderer_new(NULL); pv->viewer = gcr_viewer_new_scrolled(); gcr_viewer_add_renderer(pv->viewer, GCR_RENDERER(pv->renderer)); }
static GObject* gcr_key_widget_constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *obj = G_OBJECT_CLASS (gcr_key_widget_parent_class)->constructor (type, n_props, props); GcrKeyWidget *self = NULL; GtkWidget *scroll; g_return_val_if_fail (obj, NULL); self = GCR_KEY_WIDGET (obj); self->pv->viewer = gcr_viewer_new (); scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (self->pv->viewer)); gtk_container_add (GTK_CONTAINER (self), scroll); gtk_widget_show_all (scroll); gcr_viewer_add_renderer (self->pv->viewer, GCR_RENDERER (self->pv->renderer)); return obj; }