gnome-keyring r1209 - in trunk: . daemon/pk



Author: nnielsen
Date: Wed Jul 30 14:09:42 2008
New Revision: 1209
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1209&view=rev

Log:
	* daemon/pk/gkr-pk-cert.c:
	* daemon/pk/gkr-pk-index.c:
	* daemon/pk/gkr-pk-object.c:
	* daemon/pk/gkr-pk-object.h:
	* daemon/pk/gkr-pk-root-storage.c: When a certificate is in the Roots
	storage, assume it is a CA if no basic constraints are present. 


Modified:
   trunk/ChangeLog
   trunk/daemon/pk/gkr-pk-cert.c
   trunk/daemon/pk/gkr-pk-index.c
   trunk/daemon/pk/gkr-pk-object.c
   trunk/daemon/pk/gkr-pk-object.h
   trunk/daemon/pk/gkr-pk-root-storage.c

Modified: trunk/daemon/pk/gkr-pk-cert.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-cert.c	(original)
+++ trunk/daemon/pk/gkr-pk-cert.c	Wed Jul 30 14:09:42 2008
@@ -466,6 +466,8 @@
 		if ((ret = load_certificate (cert)) != CKR_OK)
 			return ret;
 		value = 0; /* unknown */
+
+		/* Read in the Basic Constraints section */
 		data = gkr_pk_cert_get_extension (cert, OID_BASIC_CONSTRAINTS, &n_data, NULL);
 		if (data) {
 			GkrPkixResult res;
@@ -477,7 +479,12 @@
 				return CKR_FUNCTION_FAILED;
 			if (is_ca)
 				value = 2; /* authority */
+
+		/* If no basic constraints section, see if it is marked as a CA manually */
+		} else if (gkr_pk_object_index_get_boolean (obj, "default-ca")) {
+			value = 2; /* authority */
 		}
+			
 		gkr_pk_attribute_set_ulong (attr, value);
 		return CKR_OK;
 	

Modified: trunk/daemon/pk/gkr-pk-index.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-index.c	(original)
+++ trunk/daemon/pk/gkr-pk-index.c	Wed Jul 30 14:09:42 2008
@@ -504,7 +504,6 @@
 	if (item != NULL)
 		attr = gkr_attribute_list_find (item->attributes, field);
 		
-	attr = gkr_attribute_list_find (item->attributes, field);
 	if (!attr) {
 		attr = find_default_attribute (index, field);
 		if (!attr)

Modified: trunk/daemon/pk/gkr-pk-object.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-object.c	(original)
+++ trunk/daemon/pk/gkr-pk-object.c	Wed Jul 30 14:09:42 2008
@@ -926,6 +926,23 @@
 	return gkr_pk_index_has_value (index, object->digest, field);
 }
 
+gboolean
+gkr_pk_object_index_get_boolean (GkrPkObject *object, const gchar *field)
+{
+	GkrPkIndex *index = NULL;
+
+	g_return_val_if_fail (GKR_IS_PK_OBJECT (object), FALSE);
+	g_return_val_if_fail (object->digest, FALSE);
+	g_return_val_if_fail (field, FALSE);
+	
+	if (object->storage) {
+		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), FALSE);
+		index = gkr_pk_storage_index (object->storage, object->location);
+	} 
+	
+	return gkr_pk_index_get_boolean (index, object->digest, field, FALSE);
+}
+
 GQuark*
 gkr_pk_object_index_get_quarks (GkrPkObject *object, const gchar *field)
 {
@@ -936,7 +953,7 @@
 	g_return_val_if_fail (field, NULL);
 	
 	if (object->storage) {
-		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), FALSE);
+		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), NULL);
 		index = gkr_pk_storage_index (object->storage, object->location);
 	} 
 	
@@ -953,7 +970,7 @@
 	g_return_val_if_fail (field, NULL);
 	
 	if (object->storage) {
-		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), FALSE);
+		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), NULL);
 		index = gkr_pk_storage_index (object->storage, object->location);
 	} 
 	
@@ -971,7 +988,7 @@
 	g_return_val_if_fail (field, NULL);
 	
 	if (object->storage) {
-		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), FALSE);
+		g_return_val_if_fail (GKR_IS_PK_STORAGE (object->storage), NULL);
 		index = gkr_pk_storage_index (object->storage, object->location);
 	} 
 	

Modified: trunk/daemon/pk/gkr-pk-object.h
==============================================================================
--- trunk/daemon/pk/gkr-pk-object.h	(original)
+++ trunk/daemon/pk/gkr-pk-object.h	Wed Jul 30 14:09:42 2008
@@ -164,6 +164,9 @@
 gboolean            gkr_pk_object_index_has_value    (GkrPkObject *object,
                                                       const gchar *field);
 
+gboolean            gkr_pk_object_index_get_boolean  (GkrPkObject *object,
+                                                      const gchar *field);
+
 GQuark*             gkr_pk_object_index_get_quarks   (GkrPkObject *object,
                                                       const gchar *field);
 

Modified: trunk/daemon/pk/gkr-pk-root-storage.c
==============================================================================
--- trunk/daemon/pk/gkr-pk-root-storage.c	(original)
+++ trunk/daemon/pk/gkr-pk-root-storage.c	Wed Jul 30 14:09:42 2008
@@ -224,6 +224,7 @@
 		/* Default attributes for our index */
 		attrs = gnome_keyring_attribute_list_new ();
 		gnome_keyring_attribute_list_append_string (attrs, "user-trust", "trusted");
+		gnome_keyring_attribute_list_append_uint32 (attrs, "default-ca", 1);
 
 		pv->index = gkr_pk_index_open_login (attrs);
 		if (!pv->index)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]