gnome-keyring r1289 - in trunk: . daemon/pk daemon/pk/tests
- From: nnielsen svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-keyring r1289 - in trunk: . daemon/pk daemon/pk/tests
- Date: Mon, 1 Sep 2008 03:27:39 +0000 (UTC)
Author: nnielsen
Date: Mon Sep 1 03:27:38 2008
New Revision: 1289
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1289&view=rev
Log:
* deamon/pk/gkr-pk-index.c:
* daemon/pk/gkr-pk-index.h:
* daemon/pk/gkr-pk-object.c:
* daemon/pk/gkr-pk-object.h:
* daemon/pk/gkr-pk-storage.c:
* daemon/pk/tests/unit-test-pk-index.c:
* daemon/pk/tests/unit-test-pk-object.c: Use the keyring item
display_name to store PK object labels in.
Modified:
trunk/ChangeLog
trunk/daemon/pk/gkr-pk-index.c
trunk/daemon/pk/gkr-pk-index.h
trunk/daemon/pk/gkr-pk-object.c
trunk/daemon/pk/gkr-pk-object.h
trunk/daemon/pk/gkr-pk-storage.c
trunk/daemon/pk/tests/unit-test-pk-index.c
trunk/daemon/pk/tests/unit-test-pk-object.c
Modified: trunk/daemon/pk/gkr-pk-index.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-index.c (original)
+++ trunk/daemon/pk/gkr-pk-index.c Mon Sep 1 03:27:38 2008
@@ -398,7 +398,7 @@
* - Encrypted indexes. It's not secure to store password
* in clear text indexes.
*/
-
+
return index->keyring->location &&
!gkr_keyring_is_insecure (index->keyring);
}
@@ -539,7 +539,7 @@
return g_strdup (attr->value.string);
}
-gchar*
+const gchar*
gkr_pk_index_get_secret (GkrPkIndex *index, gkrconstid digest)
{
GkrKeyringItem *item;
@@ -553,7 +553,24 @@
if (item == NULL)
return NULL;
- return gkr_secure_strdup (item->secret);
+ return item->secret;
+}
+
+const gchar*
+gkr_pk_index_get_label (GkrPkIndex *index, gkrconstid digest)
+{
+ GkrKeyringItem *item;
+
+ if (!index)
+ index = gkr_pk_index_default ();
+
+ g_return_val_if_fail (GKR_IS_PK_INDEX (index), NULL);
+
+ item = find_item_for_digest (index, digest, FALSE);
+ if (item == NULL)
+ return NULL;
+
+ return item->display_name;
}
guchar*
@@ -684,6 +701,34 @@
return write_string (index, digest, field, val);
}
+gboolean
+gkr_pk_index_set_label (GkrPkIndex *index, gkrconstid digest,
+ const gchar *label)
+{
+ GkrKeyringItem *item;
+
+ if (!index)
+ index = gkr_pk_index_default ();
+
+ g_return_val_if_fail (GKR_IS_PK_INDEX (index), FALSE);
+
+ item = find_item_for_digest (index, digest, TRUE);
+ if (!item)
+ return FALSE;
+
+ /* Make sure it's actually changed */
+ if (string_equal (item->display_name, label))
+ return FALSE;
+
+ g_free (item->display_name);
+ item->display_name = g_strdup (label);
+
+ if (!gkr_keyring_save_to_disk (index->keyring))
+ g_warning ("writing label: couldn't write index keyring to disk");
+
+ return TRUE;
+}
+
gboolean
gkr_pk_index_set_secret (GkrPkIndex *index, gkrconstid digest,
const gchar *val)
@@ -694,9 +739,10 @@
index = gkr_pk_index_default ();
g_return_val_if_fail (GKR_IS_PK_INDEX (index), FALSE);
+ g_return_val_if_fail (index->keyring, FALSE);
/* Cannot store secrets in an insecure keyring. Caller should have checked this. */
- if (val != NULL && !gkr_pk_index_allows_secrets (index)) {
+ if (val != NULL && index->keyring->location && !gkr_pk_index_allows_secrets (index)) {
g_warning ("gkr_pk_index_set_secret() called on an insecure keyring. Cannot "
"store secrets in a text based or otherwise insecure keyring.");
return FALSE;
Modified: trunk/daemon/pk/gkr-pk-index.h
==============================================================================
--- trunk/daemon/pk/gkr-pk-index.h (original)
+++ trunk/daemon/pk/gkr-pk-index.h Mon Sep 1 03:27:38 2008
@@ -75,7 +75,9 @@
gchar* gkr_pk_index_get_string (GkrPkIndex *index, gkrconstid digest,
const gchar *field);
-gchar* gkr_pk_index_get_secret (GkrPkIndex *index, gkrconstid digest);
+const gchar* gkr_pk_index_get_label (GkrPkIndex *index, gkrconstid digest);
+
+const gchar* gkr_pk_index_get_secret (GkrPkIndex *index, gkrconstid digest);
guchar* gkr_pk_index_get_binary (GkrPkIndex *index, gkrconstid digest,
const gchar *field, gsize *n_data);
@@ -92,6 +94,9 @@
gboolean gkr_pk_index_set_string (GkrPkIndex *index, gkrconstid digest,
const gchar *field, const gchar *val);
+gboolean gkr_pk_index_set_label (GkrPkIndex *index, gkrconstid digest,
+ const gchar *label);
+
gboolean gkr_pk_index_set_secret (GkrPkIndex *index, gkrconstid digest,
const gchar *secret);
Modified: trunk/daemon/pk/gkr-pk-object.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-object.c (original)
+++ trunk/daemon/pk/gkr-pk-object.c Mon Sep 1 03:27:38 2008
@@ -858,7 +858,7 @@
g_return_val_if_fail (GKR_IS_PK_OBJECT (xobj), FALSE);
return pv->orig_label != NULL ||
- gkr_pk_object_index_has_value (xobj, GKR_PK_INDEX_LABEL);
+ gkr_pk_object_index_get_label (xobj);
}
const gchar*
@@ -871,7 +871,7 @@
if (!pv->label) {
/* Try the label from the index */
- pv->label = gkr_pk_object_index_get_string (xobj, GKR_PK_INDEX_LABEL);
+ pv->label = g_strdup (gkr_pk_object_index_get_label (xobj));
/* Try any original label handed us by parsers */
if (!pv->label && pv->orig_label)
@@ -908,7 +908,7 @@
gkr_pk_object_set_label (GkrPkObject *xobj, const gchar *label)
{
g_return_if_fail (GKR_IS_PK_OBJECT (xobj));
- gkr_pk_object_index_set_string (xobj, "label", label);
+ gkr_pk_object_index_set_label (xobj, label);
}
/* -------------------------------------------------------------------
@@ -1001,6 +1001,22 @@
return gkr_pk_index_get_binary (index, object->digest, field, n_data);
}
+const gchar*
+gkr_pk_object_index_get_label (GkrPkObject *object)
+{
+ GkrPkIndex *index = NULL;
+
+ g_return_val_if_fail (GKR_IS_PK_OBJECT (object), NULL);
+ g_return_val_if_fail (object->digest, NULL);
+
+ if (object->storage) {
+ g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), NULL);
+ index = gkr_pk_storage_index (object->storage, object->location);
+ }
+
+ return gkr_pk_index_get_label (index, object->digest);
+}
+
void
gkr_pk_object_index_set_boolean (GkrPkObject *object, const gchar *field,
gboolean value)
@@ -1059,6 +1075,23 @@
}
void
+gkr_pk_object_index_set_label (GkrPkObject *object, const gchar *label)
+{
+ GkrPkIndex *index = NULL;
+
+ g_return_if_fail (GKR_IS_PK_OBJECT (object));
+ g_return_if_fail (object->digest);
+
+ if (object->storage) {
+ g_return_if_fail (GKR_IS_PK_STORAGE (object->storage));
+ index = gkr_pk_storage_index (object->storage, object->location);
+ }
+
+ if (gkr_pk_index_set_label (index, object->digest, label))
+ gkr_pk_object_flush (object);
+}
+
+void
gkr_pk_object_index_clear (GkrPkObject *object, const gchar *field)
{
GkrPkIndex *index = NULL;
Modified: trunk/daemon/pk/gkr-pk-object.h
==============================================================================
--- trunk/daemon/pk/gkr-pk-object.h (original)
+++ trunk/daemon/pk/gkr-pk-object.h Mon Sep 1 03:27:38 2008
@@ -31,8 +31,6 @@
G_BEGIN_DECLS
-#define GKR_PK_INDEX_LABEL "label"
-
#define GKR_PK_OBJECT_HANDLE_MASK 0x0FFFFFFF
#define GKR_PK_OBJECT_IS_PERMANENT 0x10000000
#define GKR_PK_OBJECT_IS_TEMPORARY 0x00000000
@@ -177,6 +175,8 @@
const gchar *field,
gsize *n_data);
+const gchar* gkr_pk_object_index_get_label (GkrPkObject *object);
+
void gkr_pk_object_index_set_boolean (GkrPkObject *object,
const gchar *field,
gboolean value);
@@ -190,6 +190,9 @@
const guchar *data,
gsize n_data);
+void gkr_pk_object_index_set_label (GkrPkObject *object,
+ const gchar *label);
+
void gkr_pk_object_index_clear (GkrPkObject *object,
const gchar *field);
Modified: trunk/daemon/pk/gkr-pk-storage.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-storage.c (original)
+++ trunk/daemon/pk/gkr-pk-storage.c Mon Sep 1 03:27:38 2008
@@ -791,7 +791,7 @@
/* See if we can find a valid password for this location */
if (st == 2) {
- *result = gkr_pk_index_get_secret (index, digest);
+ *result = gkr_secure_strdup (gkr_pk_index_get_secret (index, digest));
if (*result != NULL)
return TRUE;
Modified: trunk/daemon/pk/tests/unit-test-pk-index.c
==============================================================================
--- trunk/daemon/pk/tests/unit-test-pk-index.c (original)
+++ trunk/daemon/pk/tests/unit-test-pk-index.c Mon Sep 1 03:27:38 2008
@@ -89,6 +89,40 @@
CuAssert (cu, "get_binary returned wrong data", memcmp (data, DATA, DATA_L) == 0);
}
+void unit_test_index_secret (CuTest *cu)
+{
+ gboolean ret;
+ const gchar *secret;
+
+ ret = gkr_pk_index_set_secret (pk_index, object->digest, "my secret");
+ CuAssert (cu, "set_secret returned false", ret == TRUE);
+
+ /* Setting same secret should return false */
+ ret = gkr_pk_index_set_secret (pk_index, object->digest, "my secret");
+ CuAssert (cu, "set_secret shouldn't return true", ret == FALSE);
+
+ secret = gkr_pk_index_get_secret (pk_index, object->digest);
+ CuAssert (cu, "get_secret returned no data", secret != NULL);
+ CuAssert (cu, "get_secret returned wrong secret", strcmp (secret, "my secret") == 0);
+}
+
+void unit_test_index_label (CuTest *cu)
+{
+ gboolean ret;
+ const gchar *label;
+
+ ret = gkr_pk_index_set_label (pk_index, object->digest, "my label");
+ CuAssert (cu, "set_label returned false", ret == TRUE);
+
+ /* Setting same label should return false */
+ ret = gkr_pk_index_set_label (pk_index, object->digest, "my label");
+ CuAssert (cu, "set_label shouldn't return true", ret == FALSE);
+
+ label = gkr_pk_index_get_label (pk_index, object->digest);
+ CuAssert (cu, "get_label returned no data", label != NULL);
+ CuAssert (cu, "get_label returned wrong label", strcmp (label, "my label") == 0);
+}
+
void unit_test_index_string (CuTest *cu)
{
gchar *str;
Modified: trunk/daemon/pk/tests/unit-test-pk-object.c
==============================================================================
--- trunk/daemon/pk/tests/unit-test-pk-object.c (original)
+++ trunk/daemon/pk/tests/unit-test-pk-object.c Mon Sep 1 03:27:38 2008
@@ -90,7 +90,7 @@
g_printerr ("ORIG LABEL: %s\n", label);
/* After setting a label in index, should return that */
- gkr_pk_object_index_set_string (object_1, GKR_PK_INDEX_LABEL, "Index Label");
+ gkr_pk_object_index_set_label (object_1, "Index Label");
label = gkr_pk_object_get_label (object_1);
CuAssert (cu, "no label returned after index label", label != NULL);
CuAssert (cu, "wrong label returned after index label", strcmp (label, "Index Label") == 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]