diff options
author | Stef Walter <stef@memberwebs.com> | 2010-06-12 17:38:27 +0000 |
---|---|---|
committer | Stef Walter <stef@memberwebs.com> | 2010-06-12 21:22:07 +0000 |
commit | 92852897d420071033557bf77123a447c45b0ea1 (patch) | |
tree | e2c553b3a2661ac0a9aca11f6a2076082072f239 /pkcs11/secret-store | |
parent | 2954ca8774c95bd2a033b3d62a64ce78c1a2fe93 (diff) | |
download | gnome-keyring-92852897d420071033557bf77123a447c45b0ea1.tar.gz |
Implement auto unlock in wrap-layer.
* Including tests and necessary infrastructure.
Diffstat (limited to 'pkcs11/secret-store')
-rw-r--r-- | pkcs11/secret-store/gkm-secret-collection.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/pkcs11/secret-store/gkm-secret-collection.c b/pkcs11/secret-store/gkm-secret-collection.c index 04e7718c..970da454 100644 --- a/pkcs11/secret-store/gkm-secret-collection.c +++ b/pkcs11/secret-store/gkm-secret-collection.c @@ -398,12 +398,23 @@ static CK_RV gkm_secret_collection_get_attribute (GkmObject *base, GkmSession *session, CK_ATTRIBUTE_PTR attr) { GkmSecretCollection *self = GKM_SECRET_COLLECTION (base); + const gchar *identifier; + GkmSecret *master; switch (attr->type) { case CKA_CLASS: return gkm_attribute_set_ulong (attr, CKO_G_COLLECTION); case CKA_G_CREDENTIAL_TEMPLATE: return gkm_attribute_set_template (attr, self->template); + case CKA_G_LOGIN_COLLECTION: + identifier = gkm_secret_object_get_identifier (GKM_SECRET_OBJECT (base)); + g_return_val_if_fail (identifier, CKR_GENERAL_ERROR); + return gkm_attribute_set_bool (attr, g_str_equal (identifier, "login")); + case CKA_TRUSTED: + if (self->sdata) + return gkm_attribute_set_bool (attr, CK_FALSE); + master = gkm_secret_data_get_master (self->sdata); + return gkm_attribute_set_bool (attr, (master && !gkm_secret_is_trivially_weak (master))); } return GKM_OBJECT_CLASS (gkm_secret_collection_parent_class)->get_attribute (base, session, attr); } |