static void test_expose_transaction (Test* test, gconstpointer unused) { CK_OBJECT_HANDLE handle; GkmManager *manager; GkmObject *check, *object; GkmTransaction *transaction; manager = gkm_session_get_manager (test->session); object = mock_module_object_new (test->session); handle = gkm_object_get_handle (object); transaction = gkm_transaction_new (); /* Should be hidden */ gkm_object_expose (object, FALSE); check = gkm_manager_find_by_handle (manager, handle); g_assert (check == NULL); /* Now it should have a handle, and be visible */ gkm_object_expose_full (object, transaction, TRUE); check = gkm_manager_find_by_handle (manager, handle); g_assert (check == object); gkm_transaction_fail (transaction, CKR_GENERAL_ERROR); gkm_transaction_complete (transaction); /* Now should be invisible */ check = gkm_manager_find_by_handle (manager, handle); g_assert (check == NULL); g_object_unref (transaction); }
static CK_RV gkm_user_module_real_login_change (GkmModule *base, CK_SLOT_ID slot_id, CK_UTF8CHAR_PTR old_pin, CK_ULONG n_old_pin, CK_UTF8CHAR_PTR new_pin, CK_ULONG n_new_pin) { GkmUserModule *self = GKM_USER_MODULE (base); GkmSecret *old_login, *new_login; GkmTransaction *transaction; CK_RV rv; /* * Remember this doesn't affect the currently logged in user. Logged in * sessions will remain logged in, and vice versa. */ old_login = gkm_secret_new_from_login (old_pin, n_old_pin); new_login = gkm_secret_new_from_login (new_pin, n_new_pin); transaction = gkm_transaction_new (); gkm_user_storage_relock (self->storage, transaction, old_login, new_login); g_object_unref (old_login); g_object_unref (new_login); gkm_transaction_complete (transaction); rv = gkm_transaction_get_result (transaction); g_object_unref (transaction); return rv; }
static void self_destruct (GkmObject *self) { GkmTransaction *transaction; CK_RV rv; transaction = gkm_transaction_new (); gkm_object_destroy (self, transaction); gkm_transaction_complete (transaction); rv = gkm_transaction_get_result (transaction); g_object_unref (transaction); if (rv != CKR_OK) g_warning ("Unexpected failure to auto destruct object (code: %lu)", (gulong)rv); }
static void self_destruct (GkmCredential *self) { GkmTransaction *transaction; CK_RV rv; g_assert (GKM_IS_CREDENTIAL (self)); transaction = gkm_transaction_new (); /* Destroy ourselves */ gkm_object_destroy (GKM_OBJECT (self), transaction); gkm_transaction_complete (transaction); rv = gkm_transaction_get_result (transaction); g_object_unref (transaction); if (rv != CKR_OK) g_warning ("Couldn't destroy credential object: (code %lu)", (gulong)rv); }