Blame gck/gck-private.h

Packit b00eeb
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
Packit b00eeb
/* gck-private.h - the GObject PKCS#11 wrapper library
Packit b00eeb
Packit b00eeb
   Copyright (C) 2008, Stefan Walter
Packit b00eeb
Packit b00eeb
   The Gnome Keyring Library is free software; you can redistribute it and/or
Packit b00eeb
   modify it under the terms of the GNU Library General Public License as
Packit b00eeb
   published by the Free Software Foundation; either version 2 of the
Packit b00eeb
   License, or (at your option) any later version.
Packit b00eeb
Packit b00eeb
   The Gnome Keyring Library is distributed in the hope that it will be useful,
Packit b00eeb
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit b00eeb
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit b00eeb
   Library General Public License for more details.
Packit b00eeb
Packit b00eeb
   You should have received a copy of the GNU Library General Public
Packit b00eeb
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
Packit b00eeb
   see <http://www.gnu.org/licenses/>.
Packit b00eeb
Packit b00eeb
   Author: Stef Walter <nielsen@memberwebs.com>
Packit b00eeb
*/
Packit b00eeb
Packit b00eeb
#ifndef GCK_PRIVATE_H_
Packit b00eeb
#define GCK_PRIVATE_H_
Packit b00eeb
Packit b00eeb
#include "gck.h"
Packit b00eeb
Packit b00eeb
#include <glib.h>
Packit b00eeb
#include <glib-object.h>
Packit b00eeb
#include <gio/gio.h>
Packit b00eeb
Packit b00eeb
G_BEGIN_DECLS
Packit b00eeb
Packit b00eeb
#define GCK_IS_GET_ATTRIBUTE_RV_OK(rv) \
Packit b00eeb
	((rv) == CKR_OK || (rv) == CKR_ATTRIBUTE_SENSITIVE || (rv) == CKR_ATTRIBUTE_TYPE_INVALID)
Packit b00eeb
Packit b00eeb
/* ---------------------------------------------------------------------------
Packit b00eeb
 * ATTRIBUTE INTERNALS
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
CK_ATTRIBUTE_PTR    _gck_attributes_commit_out             (GckAttributes *attrs,
Packit b00eeb
                                                             CK_ULONG_PTR n_attrs);
Packit b00eeb
Packit b00eeb
CK_ATTRIBUTE_PTR    _gck_builder_prepare_in                (GckBuilder *attrs,
Packit b00eeb
                                                            CK_ULONG_PTR n_attrs);
Packit b00eeb
Packit b00eeb
CK_ATTRIBUTE_PTR    _gck_builder_commit_in                 (GckBuilder *attrs,
Packit b00eeb
                                                            CK_ULONG_PTR n_attrs);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * MISC
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
guint               _gck_ulong_hash                        (gconstpointer v);
Packit b00eeb
Packit b00eeb
gboolean            _gck_ulong_equal                       (gconstpointer v1,
Packit b00eeb
                                                             gconstpointer v2);
Packit b00eeb
Packit b00eeb
const gchar *       _gck_stringize_rv                      (CK_RV rv);
Packit b00eeb
Packit b00eeb
CK_RV               _gck_rv_from_error                     (GError *error,
Packit b00eeb
                                                            CK_RV catch_all_code);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * MODULE
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
GckModule*          _gck_module_new_initialized            (CK_FUNCTION_LIST_PTR funcs);
Packit b00eeb
Packit b00eeb
GckModuleInfo*      _gck_module_info_from_pkcs11            (CK_INFO_PTR info);
Packit b00eeb
Packit b00eeb
void                _gck_module_info_to_pkcs11              (GckModuleInfo* module_info,
Packit b00eeb
                                                             CK_INFO_PTR info);
Packit b00eeb
Packit b00eeb
gboolean            _gck_module_info_match                  (GckModuleInfo *match,
Packit b00eeb
                                                             GckModuleInfo *module_info);
Packit b00eeb
Packit b00eeb
/* -----------------------------------------------------------------------------
Packit b00eeb
 * ENUMERATOR
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
GckEnumerator *     _gck_enumerator_new_for_modules         (GList *modules,
Packit b00eeb
                                                             GckSessionOptions session_options,
Packit b00eeb
                                                             GckUriData *uri_data);
Packit b00eeb
Packit b00eeb
GckEnumerator *     _gck_enumerator_new_for_slots           (GList *slots,
Packit b00eeb
                                                             GckSessionOptions session_options,
Packit b00eeb
                                                             GckUriData *uri_data);
Packit b00eeb
Packit b00eeb
GckEnumerator *     _gck_enumerator_new_for_session         (GckSession *session,
Packit b00eeb
                                                             GckUriData *uri_data);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * SLOT
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
GckTokenInfo*      _gck_token_info_from_pkcs11              (CK_TOKEN_INFO_PTR info);
Packit b00eeb
Packit b00eeb
void               _gck_token_info_to_pkcs11                (GckTokenInfo *token_info,
Packit b00eeb
                                                             CK_TOKEN_INFO_PTR info);
Packit b00eeb
Packit b00eeb
gboolean           _gck_token_info_match                    (GckTokenInfo *match,
Packit b00eeb
                                                             GckTokenInfo *info);
Packit b00eeb
Packit b00eeb
CK_RV              _gck_session_authenticate_token          (CK_FUNCTION_LIST_PTR funcs,
Packit b00eeb
                                                             CK_SESSION_HANDLE session,
Packit b00eeb
                                                             GckSlot *token,
Packit b00eeb
                                                             GTlsInteraction *interaction,
Packit b00eeb
                                                             GCancellable *cancellable);
Packit b00eeb
Packit b00eeb
CK_RV              _gck_session_authenticate_key            (CK_FUNCTION_LIST_PTR funcs,
Packit b00eeb
                                                             CK_SESSION_HANDLE session,
Packit b00eeb
                                                             GckObject *key,
Packit b00eeb
                                                             GTlsInteraction *interaction,
Packit b00eeb
                                                             GCancellable *cancellable);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * PASSWORD
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
void               _gck_password_update                     (GckPassword *self,
Packit b00eeb
                                                             gboolean request_retry);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * INTERACTION
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
#define GCK_TYPE_INTERACTION    (_gck_interaction_get_type ())
Packit b00eeb
#define GCK_INTERACTION(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GCK_TYPE_INTERACTION, GckInteraction))
Packit b00eeb
#define GCK_IS_INTERACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GCK_TYPE_INTERACTION))
Packit b00eeb
Packit b00eeb
typedef struct _GckInteraction GckInteraction;
Packit b00eeb
Packit b00eeb
GType               _gck_interaction_get_type               (void) G_GNUC_CONST;
Packit b00eeb
Packit b00eeb
GTlsInteraction *   _gck_interaction_new                    (gpointer token_or_key);
Packit b00eeb
Packit b00eeb
/* ----------------------------------------------------------------------------
Packit b00eeb
 * CALL
Packit b00eeb
 */
Packit b00eeb
Packit b00eeb
typedef CK_RV (*GckPerformFunc) (gpointer call_data);
Packit b00eeb
typedef gboolean (*GckCompleteFunc) (gpointer call_data, CK_RV result);
Packit b00eeb
Packit b00eeb
typedef struct _GckCall GckCall;
Packit b00eeb
Packit b00eeb
typedef struct _GckArguments {
Packit b00eeb
	GckCall *call;
Packit b00eeb
Packit b00eeb
	/* For the call function to use */
Packit b00eeb
	CK_FUNCTION_LIST_PTR pkcs11;
Packit b00eeb
	CK_ULONG handle;
Packit b00eeb
Packit b00eeb
} GckArguments;
Packit b00eeb
Packit b00eeb
#define GCK_MECHANISM_EMPTY        { 0UL, NULL, 0 }
Packit b00eeb
Packit b00eeb
#define GCK_ARGUMENTS_INIT 	   { NULL, NULL, 0 }
Packit b00eeb
Packit b00eeb
#define GCK_TYPE_CALL             (_gck_call_get_type())
Packit b00eeb
#define GCK_CALL(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), GCK_TYPE_CALL, GckCall))
Packit b00eeb
#define GCK_CALL_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), GCK_TYPE_CALL, GckCall))
Packit b00eeb
#define GCK_IS_CALL(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), GCK_TYPE_CALL))
Packit b00eeb
#define GCK_IS_CALL_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GCK_TYPE_CALL))
Packit b00eeb
#define GCK_CALL_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), GCK_TYPE_CALL, GckCallClass))
Packit b00eeb
Packit b00eeb
typedef struct _GckCallClass GckCallClass;
Packit b00eeb
Packit b00eeb
GType              _gck_call_get_type                    (void) G_GNUC_CONST;
Packit b00eeb
Packit b00eeb
#define            _gck_call_arguments(call, type)       (type*)(_gck_call_get_arguments (GCK_CALL (call)))
Packit b00eeb
Packit b00eeb
gpointer           _gck_call_get_arguments               (GckCall *call);
Packit b00eeb
Packit b00eeb
void               _gck_call_uninitialize                (void);
Packit b00eeb
Packit b00eeb
gboolean           _gck_call_sync                        (gpointer object,
Packit b00eeb
                                                           gpointer perform,
Packit b00eeb
                                                           gpointer complete,
Packit b00eeb
                                                           gpointer args,
Packit b00eeb
                                                           GCancellable *cancellable,
Packit b00eeb
                                                           GError **err);
Packit b00eeb
Packit b00eeb
gpointer           _gck_call_async_prep                  (gpointer object,
Packit b00eeb
                                                           gpointer cb_object,
Packit b00eeb
                                                           gpointer perform,
Packit b00eeb
                                                           gpointer complete,
Packit b00eeb
                                                           gsize args_size,
Packit b00eeb
                                                           gpointer destroy_func);
Packit b00eeb
Packit b00eeb
GckCall*          _gck_call_async_ready                 (gpointer args,
Packit b00eeb
                                                           GCancellable *cancellable,
Packit b00eeb
                                                           GAsyncReadyCallback callback,
Packit b00eeb
                                                           gpointer user_data);
Packit b00eeb
Packit b00eeb
void               _gck_call_async_go                    (GckCall *call);
Packit b00eeb
Packit b00eeb
void               _gck_call_async_ready_go              (gpointer args,
Packit b00eeb
                                                           GCancellable *cancellable,
Packit b00eeb
                                                           GAsyncReadyCallback callback,
Packit b00eeb
                                                           gpointer user_data);
Packit b00eeb
Packit b00eeb
void               _gck_call_async_short                 (GckCall *call,
Packit b00eeb
                                                           CK_RV rv);
Packit b00eeb
Packit b00eeb
gboolean           _gck_call_basic_finish                (GAsyncResult *result,
Packit b00eeb
                                                           GError **err);
Packit b00eeb
Packit b00eeb
void               _gck_call_async_object                (GckCall *call,
Packit b00eeb
                                                           gpointer object);
Packit b00eeb
Packit b00eeb
#endif /* GCK_PRIVATE_H_ */