[gnome-keyring/dbus-api] Figure out CKA_TOKEN for a PKCS#11 object based on manager.
- From: Stefan Walter <stefw src gnome org>
- To: svn-commits-list gnome org
- Subject: [gnome-keyring/dbus-api] Figure out CKA_TOKEN for a PKCS#11 object based on manager.
- Date: Tue, 21 Jul 2009 00:36:52 +0000 (UTC)
commit c6984ff529116280817fecda73250b4027da9da7
Author: Stef Walter <stef memberwebs com>
Date: Sat Jul 18 19:30:16 2009 +0000
Figure out CKA_TOKEN for a PKCS#11 object based on manager.
Instead of manually setting CKA_TOKEN as the 'permanent' property
on an object, we automatically infer it from the manager that
the token object is on.
pkcs11/gck/gck-manager.c | 3 ---
pkcs11/gck/gck-object.c | 23 +++++------------------
pkcs11/gck/gck-session.c | 5 -----
3 files changed, 5 insertions(+), 26 deletions(-)
---
diff --git a/pkcs11/gck/gck-manager.c b/pkcs11/gck/gck-manager.c
index 2b305dc..1638b3e 100644
--- a/pkcs11/gck/gck-manager.c
+++ b/pkcs11/gck/gck-manager.c
@@ -407,9 +407,6 @@ add_object (GckManager *self, GckObject *object)
gck_object_set_handle (object, handle);
}
- /* Make the object know about its token state */
- g_object_set (object, "permanent", self->pv->for_token, NULL);
-
/*
* We don't ref the objects or anything. They're expected to
* unregister upon dispose.
diff --git a/pkcs11/gck/gck-object.c b/pkcs11/gck/gck-object.c
index 928638e..b9fef0c 100644
--- a/pkcs11/gck/gck-object.c
+++ b/pkcs11/gck/gck-object.c
@@ -38,8 +38,7 @@ enum {
PROP_HANDLE,
PROP_MANAGER,
PROP_STORE,
- PROP_UNIQUE,
- PROP_PERMANENT
+ PROP_UNIQUE
};
enum {
@@ -59,7 +58,6 @@ struct _GckObjectPrivate {
GckManager *manager;
GckStore *store;
gchar *unique;
- gboolean permanent;
GckObjectLifetime *lifetime;
};
@@ -142,7 +140,9 @@ gck_object_real_get_attribute (GckObject *self, CK_ATTRIBUTE* attr)
case CKA_PRIVATE:
return gck_attribute_set_bool (attr, FALSE);
case CKA_TOKEN:
- return gck_attribute_set_bool (attr, self->pv->permanent);
+ if (!self->pv->manager)
+ return gck_attribute_set_bool (attr, FALSE);
+ return gck_attribute_set_bool (attr, gck_manager_get_for_token (self->pv->manager));
case CKA_GNOME_UNIQUE:
if (self->pv->unique)
return gck_attribute_set_string (attr, self->pv->unique);
@@ -215,9 +215,7 @@ gck_object_real_create_attribute (GckObject *self, GckTransaction *transaction,
gck_attribute_consume (attr);
if (rv == CKR_OK) {
/* Must be a session object for an auto destruct */
- if (self->pv->lifetime->timed_when >= 0 && self->pv->permanent)
- rv = CKR_TEMPLATE_INCONSISTENT;
- else
+ if (self->pv->lifetime->timed_when >= 0)
gck_transaction_add (transaction, self, start_callback, session);
}
if (rv != CKR_OK)
@@ -343,10 +341,6 @@ gck_object_set_property (GObject *obj, guint prop_id, const GValue *value,
g_return_if_fail (!self->pv->unique);
self->pv->unique = g_value_dup_string (value);
break;
- case PROP_PERMANENT:
- self->pv->permanent = g_value_get_boolean (value);
- g_object_notify (G_OBJECT (self), "permanent");
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -372,9 +366,6 @@ gck_object_get_property (GObject *obj, guint prop_id, GValue *value,
case PROP_UNIQUE:
g_value_set_string (value, gck_object_get_unique (self));
break;
- case PROP_PERMANENT:
- g_value_set_boolean (value, self->pv->permanent);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -416,10 +407,6 @@ gck_object_class_init (GckObjectClass *klass)
g_param_spec_string ("unique", "Unique Identifer", "Machine unique identifier",
NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
- g_object_class_install_property (gobject_class, PROP_PERMANENT,
- g_param_spec_boolean ("permanent", "Is Permanent Object", "Is permanent token object",
- FALSE, G_PARAM_READWRITE));
-
signals[NOTIFY_ATTRIBUTE] = g_signal_new ("notify-attribute", GCK_TYPE_OBJECT,
G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GckObjectClass, notify_attribute),
NULL, NULL, g_cclosure_marshal_VOID__ULONG,
diff --git a/pkcs11/gck/gck-session.c b/pkcs11/gck/gck-session.c
index a8055d4..334a770 100644
--- a/pkcs11/gck/gck-session.c
+++ b/pkcs11/gck/gck-session.c
@@ -791,11 +791,6 @@ gck_session_C_CreateObject (GckSession* self, CK_ATTRIBUTE_PTR template,
}
}
- if (!gck_transaction_get_failed (transaction)) {
- g_object_set (object, "permanent", is_token, NULL);
- gck_attributes_consume (attrs, n_attrs, CKA_TOKEN, G_MAXULONG);
- }
-
/* Give the object a chance to create additional attributes */
for (i = 0; i < n_attrs && !gck_transaction_get_failed (transaction); ++i) {
if (!gck_attribute_consumed (&attrs[i]))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]