gnome-keyring r1213 - in trunk/gp11: . tests



Author: nnielsen
Date: Sun Aug  3 17:03:01 2008
New Revision: 1213
URL: http://svn.gnome.org/viewvc/gnome-keyring?rev=1213&view=rev

Log:
	* gp11/gp11-attributes.c:
	* gp11/gp11-object.c: 
	* gp11/gp11-session.c:
	* gp11/gp11-slot.c: 
	* gp11/gp11.h:
	* gp11/tests/unit-test-gp11-attributes.c: More fine tuning of GP11 
	library. Add missing functions. Clarify date handling.


Modified:
   trunk/gp11/gp11-attributes.c
   trunk/gp11/gp11-object.c
   trunk/gp11/gp11-session.c
   trunk/gp11/gp11-slot.c
   trunk/gp11/gp11.h
   trunk/gp11/tests/unit-test-gp11-attributes.c

Modified: trunk/gp11/gp11-attributes.c
==============================================================================
--- trunk/gp11/gp11-attributes.c	(original)
+++ trunk/gp11/gp11-attributes.c	Sun Aug  3 17:03:01 2008
@@ -140,35 +140,35 @@
 	return g_strndup ((gchar*)attr->value, attr->length);
 }
 
-GDate*
-gp11_attribute_get_date (GP11Attribute *attr)
+void
+gp11_attribute_get_date (GP11Attribute *attr, GDate *value)
 {
 	guint year, month, day;
 	gchar buffer[5];
 	CK_DATE *date;
 	gchar *end;
 	
-	g_return_val_if_fail (attr, NULL);
-	g_return_val_if_fail (attr->length == sizeof (CK_DATE), NULL);
-	g_return_val_if_fail (attr->value, NULL);
+	g_return_if_fail (attr);
+	g_return_if_fail (attr->length == sizeof (CK_DATE));
+	g_return_if_fail (attr->value);
 	date = (CK_DATE*)attr->value;
 	
 	memset (&buffer, 0, sizeof (buffer));
 	memcpy (buffer, date->year, 4);
 	year = strtol (buffer, &end, 10);
-	g_return_val_if_fail (end != buffer && !*end, NULL); 
+	g_return_if_fail (end != buffer && !*end); 
 	
 	memset (&buffer, 0, sizeof (buffer));
 	memcpy (buffer, date->month, 2);
 	month = strtol (buffer, &end, 10);
-	g_return_val_if_fail (end != buffer && !*end, NULL); 
+	g_return_if_fail (end != buffer && !*end); 
 
 	memset (&buffer, 0, sizeof (buffer));
 	memcpy (buffer, date->day, 2);
 	day = strtol (buffer, &end, 10);
-	g_return_val_if_fail (end != buffer && !*end, NULL); 
+	g_return_if_fail (end != buffer && !*end); 
 	
-	return g_date_new_dmy (day, month, year);	
+	g_date_set_dmy (value, day, month, year);	
 }
 
 GP11Attribute*
@@ -222,6 +222,17 @@
 	gint refs;
 };
 
+GType
+gp11_attributes_get_boxed_type (void)
+{
+	static GType type = 0;
+	if (!type)
+		type = g_boxed_type_register_static ("GP11Attributes", 
+		                                     (GBoxedCopyFunc)gp11_attributes_ref,
+		                                     (GBoxedFreeFunc)gp11_attributes_unref);
+	return type;
+}
+
 GP11Attributes*
 gp11_attributes_new (void)
 {
@@ -470,7 +481,7 @@
 }
 
 gboolean
-gp11_attributes_find_date (GP11Attributes *attrs, guint attr_type, GDate **value)
+gp11_attributes_find_date (GP11Attributes *attrs, guint attr_type, GDate *value)
 {
 	GP11Attribute *attr;
 	g_return_val_if_fail (value, FALSE);
@@ -478,15 +489,16 @@
 	attr = gp11_attributes_find (attrs, attr_type);
 	if (!attr)
 		return FALSE;
-	*value = gp11_attribute_get_date (attr);
+	gp11_attribute_get_date (attr, value);
 	return TRUE;
 }
 
-void 
+GP11Attributes*
 gp11_attributes_ref (GP11Attributes *attrs)
 {
-	g_return_if_fail (attrs);
+	g_return_val_if_fail (attrs, NULL);
 	g_atomic_int_inc (&attrs->refs);
+	return attrs;
 }
 
 void

Modified: trunk/gp11/gp11-object.c
==============================================================================
--- trunk/gp11/gp11-object.c	(original)
+++ trunk/gp11/gp11-object.c	Sun Aug  3 17:03:01 2008
@@ -134,6 +134,29 @@
 	return g_object_new (GP11_TYPE_OBJECT, "module", session->module, "handle", handle, "session", session, NULL);
 }
 
+GList*
+gp11_objects_from_handle_array (GP11Session *session, const GP11Attribute *attr)
+{
+	GList *results = NULL;
+	CK_OBJECT_HANDLE *array;
+	guint i, n_array;
+	
+	g_return_val_if_fail (GP11_IS_SESSION (session), NULL);
+	
+	array = (CK_OBJECT_HANDLE*)attr->value;
+	n_array = attr->length / sizeof (CK_OBJECT_HANDLE);
+	for (i = 0; i < n_array; ++i)
+		results = g_list_prepend (results, gp11_object_from_handle (session, array[i]));
+	return g_list_reverse (results);
+}
+
+CK_OBJECT_HANDLE
+gp11_object_get_handle (GP11Object *object)
+{
+	g_return_val_if_fail (GP11_IS_OBJECT (object), (CK_OBJECT_HANDLE)-1);
+	return object->handle;
+}
+
 /* DESTROY */
 
 typedef struct _Destroy {
@@ -354,7 +377,7 @@
 }
 
 GP11Attributes*
-gp11_object_get_full (GP11Object *object, guint *attr_types, gsize n_attr_types,
+gp11_object_get_full (GP11Object *object, const guint *attr_types, gsize n_attr_types,
                       GCancellable *cancellable, GError **err)
 {
 	GetAttributes args;
@@ -362,7 +385,7 @@
 	g_return_val_if_fail (GP11_IS_OBJECT (object), FALSE);
 	
 	memset (&args, 0, sizeof (args));
-	args.attr_types = attr_types;
+	args.attr_types = (guint*)attr_types;
 	args.n_attr_types = n_attr_types;
 	args.object = object->handle;
 
@@ -375,7 +398,7 @@
 }
 
 void
-gp11_object_get_async (GP11Object *object, guint *attr_types, gsize n_attr_types,
+gp11_object_get_async (GP11Object *object, const guint *attr_types, gsize n_attr_types,
                        GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
 {
 	GetAttributes *args;

Modified: trunk/gp11/gp11-session.c
==============================================================================
--- trunk/gp11/gp11-session.c	(original)
+++ trunk/gp11/gp11-session.c	Sun Aug  3 17:03:01 2008
@@ -172,6 +172,13 @@
 	                     "handle", handle, "slot", slot, NULL);
 }
 
+CK_SESSION_HANDLE
+gp11_session_get_handle (GP11Session *session)
+{
+	g_return_val_if_fail (GP11_IS_SESSION (session), (CK_SESSION_HANDLE)-1);
+	return session->handle;
+}
+
 GP11SessionInfo*
 gp11_session_get_info (GP11Session *session)
 {

Modified: trunk/gp11/gp11-slot.c
==============================================================================
--- trunk/gp11/gp11-slot.c	(original)
+++ trunk/gp11/gp11-slot.c	Sun Aug  3 17:03:01 2008
@@ -418,6 +418,13 @@
 	g_free (mech_info);
 }
 
+CK_SLOT_ID
+gp11_slot_get_handle (GP11Slot *slot)
+{
+	g_return_val_if_fail (GP11_IS_SLOT (slot), (CK_SLOT_ID)-1);
+	return slot->handle;
+}
+
 gboolean
 gp11_slot_get_reuse_sessions (GP11Slot *slot)
 {

Modified: trunk/gp11/gp11.h
==============================================================================
--- trunk/gp11/gp11.h	(original)
+++ trunk/gp11/gp11.h	Sun Aug  3 17:03:01 2008
@@ -93,7 +93,8 @@
 
 gchar*              gp11_attribute_get_string               (GP11Attribute *attr);
 
-GDate*              gp11_attribute_get_date                 (GP11Attribute *attr);
+void                gp11_attribute_get_date                 (GP11Attribute *attr, 
+                                                             GDate* value);
 
 GP11Attribute*      gp11_attribute_dup                      (GP11Attribute *attr);
 
@@ -101,7 +102,12 @@
 
 void                gp11_attribute_free                     (GP11Attribute *attr);
 
+
 typedef struct _GP11Attributes GP11Attributes;
+
+#define             GP11_TYPE_ATTRIBUTES                    (gp11_attributes_get_boxed_type ())
+
+GType               gp11_attributes_get_boxed_type          (void) G_GNUC_CONST;
  
 GP11Attributes*     gp11_attributes_new                     (void);
 
@@ -157,11 +163,11 @@
 
 gboolean            gp11_attributes_find_date               (GP11Attributes *attrs,
                                                              guint attr_type,
-                                                             GDate **value);            
+                                                             GDate *value);
 
 gulong              gp11_attributes_count                   (GP11Attributes *attrs);
 
-void                gp11_attributes_ref                     (GP11Attributes *attrs);
+GP11Attributes*     gp11_attributes_ref                     (GP11Attributes *attrs);
 
 void                gp11_attributes_unref                   (GP11Attributes *attrs);
 
@@ -311,6 +317,8 @@
 
 GType               gp11_slot_get_type                      (void) G_GNUC_CONST;
 
+CK_SLOT_ID          gp11_slot_get_handle                    (GP11Slot *slot);
+
 gboolean            gp11_slot_get_reuse_sessions            (GP11Slot *slot);
 
 void                gp11_slot_set_reuse_sessions            (GP11Slot *slot, 
@@ -413,6 +421,8 @@
 
 GP11Session*        gp11_session_from_handle                (GP11Slot *slot, CK_SESSION_HANDLE handle); 
 
+CK_SESSION_HANDLE   gp11_session_get_handle                 (GP11Session *session);
+
 GP11SessionInfo*    gp11_session_get_info                   (GP11Session *session);
 
 #if UNIMPLEMENTED
@@ -1158,6 +1168,11 @@
 GP11Object*         gp11_object_from_handle                 (GP11Session *session, 
                                                              CK_OBJECT_HANDLE handle);
 
+GList*              gp11_objects_from_handle_array          (GP11Session *session,
+                                                             const GP11Attribute *attr);
+
+CK_OBJECT_HANDLE    gp11_object_get_handle                  (GP11Object *object);
+
 #ifdef UNIMPLEMENTED
 
 GP11Object*         gp11_object_copy                        (GP11Object *object,
@@ -1239,13 +1254,13 @@
                                                              ...);
 
 GP11Attributes*     gp11_object_get_full                    (GP11Object *object,
-                                                             guint *attr_types,
+                                                             const guint *attr_types,
                                                              gsize n_attr_types,
                                                              GCancellable *cancellable,
                                                              GError **err);
 
 void                gp11_object_get_async                   (GP11Object *object,
-                                                             guint *attr_types,
+                                                             const guint *attr_types,
                                                              gsize n_attr_types,
                                                              GCancellable *cancellable,
                                                              GAsyncReadyCallback callback,

Modified: trunk/gp11/tests/unit-test-gp11-attributes.c
==============================================================================
--- trunk/gp11/tests/unit-test-gp11-attributes.c	(original)
+++ trunk/gp11/tests/unit-test-gp11-attributes.c	Sun Aug  3 17:03:01 2008
@@ -158,17 +158,15 @@
 {
 	GP11Attribute *attr;
 	CK_DATE ck_date;
-	GDate *date, *date2;
+	GDate date, date2;
 
-	date = g_date_new_dmy(05, 06, 1800);
+	g_date_set_dmy(&date, 05, 06, 1800);
 	memcpy (ck_date.year, "1800", 4);
 	memcpy (ck_date.month, "06", 2);
 	memcpy (ck_date.day, "05", 2);
-	attr = gp11_attribute_new_date (ATTR_TYPE, date);
-	date2 = gp11_attribute_get_date (attr);
-	g_assert (g_date_compare (date, date2) == 0);
-	g_date_free (date);
-	g_date_free (date2);
+	attr = gp11_attribute_new_date (ATTR_TYPE, &date);
+	gp11_attribute_get_date (attr, &date2);
+	g_assert (g_date_compare (&date, &date2) == 0);
 	gp11_attribute_free (attr);
 }
 
@@ -249,7 +247,7 @@
 {
 	GP11Attribute *attr;
 	gchar *value;
-	GDate *date, *check;
+	GDate date, *check;
 	
 	g_assert (attrs != NULL);
 	g_assert (gp11_attributes_count (attrs) == 5);
@@ -271,9 +269,8 @@
 	attr = gp11_attributes_at (attrs, 3);
 	g_assert (attr->type == 303);
 	check = g_date_new_dmy (11, 12, 2008);
-	date = gp11_attribute_get_date (attr);
-	g_assert (g_date_compare (date, check) == 0);
-	g_date_free (date);
+	gp11_attribute_get_date (attr, &date);
+	g_assert (g_date_compare (&date, check) == 0);
 	g_date_free (check);
 	
 	attr = gp11_attributes_at (attrs, 4);
@@ -398,7 +395,7 @@
 DEFINE_TEST(find_attributes)
 {
 	GP11Attribute *attr;
-	GDate *check, *date = g_date_new_dmy (13, 12, 2008);
+	GDate check, *date = g_date_new_dmy (13, 12, 2008);
 	gboolean bvalue, ret;
 	gulong uvalue;
 	gchar *svalue;
@@ -432,9 +429,8 @@
 	
 	ret = gp11_attributes_find_date (attrs, 303, &check);
 	g_assert (ret == TRUE);
-	g_assert (check != NULL);
-	g_assert (g_date_compare (date, check) == 0);
-	g_date_free (check);
+	g_assert (g_date_compare (date, &check) == 0);
 	
 	gp11_attributes_unref (attrs);
+	g_date_free (date);
 }



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