|  |  |  | Gck Library Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Properties | ||||
struct GckMechanismInfo; GckMechanismInfo * gck_mechanism_info_copy (GckMechanismInfo *mech_info); void gck_mechanism_info_free (GckMechanismInfo *mech_info); #define gck_mechanisms_length (a) #define gck_mechanisms_at (a, i) gboolean gck_mechanisms_check (GArray *mechanisms,...); enum GckSessionOptions; struct GckSlot; gboolean gck_slot_equal (gconstpointer slot1,gconstpointer slot2); guint gck_slot_hash (gconstpointer slot); GckModule * gck_slot_get_module (GckSlot *self); gulong gck_slot_get_handle (GckSlot *self); GckSlotInfo * gck_slot_get_info (GckSlot *self); gboolean gck_slot_match (GckSlot *self,GckUriData *uri); GckTokenInfo * gck_slot_get_token_info (GckSlot *self); GArray * gck_slot_get_mechanisms (GckSlot *self); GckMechanismInfo * gck_slot_get_mechanism_info (GckSlot *self,gulong mech_type); gboolean gck_slot_has_flags (GckSlot *self,gulong flags); GckEnumerator * gck_slot_enumerate_objects (GckSlot *self,GckAttributes *match,GckSessionOptions options); GckEnumerator * gck_slots_enumerate_objects (GList *slots,GckAttributes *match,GckSessionOptions options); GckSession * gck_slot_open_session (GckSlot *self,GckSessionOptions options,GCancellable *cancellable,GError **error); GckSession * gck_slot_open_session_full (GckSlot *self,GckSessionOptions options,gulong pkcs11_flags,gpointer app_data,CK_NOTIFY notify,GCancellable *cancellable,GError **error); void gck_slot_open_session_full_async (GckSlot *self,GckSessionOptions options,gulong pkcs11_flags,gpointer app_data,CK_NOTIFY notify,GCancellable *cancellable,GAsyncReadyCallback callback,gpointer user_data); void gck_slot_open_session_async (GckSlot *self,GckSessionOptions options,GCancellable *cancellable,GAsyncReadyCallback callback,gpointer user_data); GckSession * gck_slot_open_session_finish (GckSlot *self,GAsyncResult *result,GError **error); GckSlot * gck_slot_from_handle (GckModule *module,gulong slot_id); struct GckSlotInfo; GckSlotInfo * gck_slot_info_copy (GckSlotInfo *slot_info); void gck_slot_info_free (GckSlotInfo *slot_info); struct GckTokenInfo; GckTokenInfo * gck_token_info_copy (GckTokenInfo *token_info); void gck_token_info_free (GckTokenInfo *token_info);
GBoxed +----GckMechanismInfo
GObject +----GckSlot
GBoxed +----GckSlotInfo
GBoxed +----GckTokenInfo
"handle" gulong : Read / Write / Construct Only "module" GckModule* : Read / Write / Construct Only
A PKCS11 slot can contain a token. As an example, a slot might be a card reader, and the token the card. If the PKCS#11 module is not a hardware driver, often the slot and token are equivalent.
struct GckMechanismInfo {
	gulong min_key_size;
	gulong max_key_size;
	gulong flags;
};
Represents information about a PKCS11 mechanism.
This is analogous to a CK_MECHANISM_INFO structure.
When you're done with this structure it should be released with
gck_mechanism_info_free().
GckMechanismInfo *  gck_mechanism_info_copy             (GckMechanismInfo *mech_info);
Make a copy of the mechanism info.
| 
 | a mechanism info | 
| Returns : | a newly allocated copy mechanism info. [transfer full] | 
void                gck_mechanism_info_free             (GckMechanismInfo *mech_info);
Free the GckMechanismInfo and associated resources.
| 
 | The mechanism info to free, or NULL. | 
#define gck_mechanisms_length(a) ((a)->len)
Get the number of GckMechanismInfo in the set.
| 
 | A GckMechanisms set. | 
| Returns : | The number in the set. | 
#define gck_mechanisms_at(a, i) (g_array_index (a, CK_MECHANISM_TYPE, i))
Get a specific mechanism in a the set.
| 
 | A GckMechanisms set. | 
| 
 | The index of a mechanism | 
| Returns : | the mechanism | 
gboolean gck_mechanisms_check (GArray *mechanisms,...);
Check whether all the mechanism types are in the list.
The arguments should be a list of CKM_XXX mechanism types. The last argument should be GCK_INVALID.
| 
 | A list of mechanisms, perhaps
retrieved from gck_slot_get_mechanisms(). [element-type ulong] | 
| 
 | A list of mechanism types followed by GCK_INVALID. | 
| Returns : | Whether the mechanism is in the list or not. | 
typedef enum {
	GCK_SESSION_READ_ONLY = 0,
	GCK_SESSION_READ_WRITE = 1 << 1,
	GCK_SESSION_LOGIN_USER =  1 << 2,
	GCK_SESSION_AUTHENTICATE = 1 << 3,
} GckSessionOptions;
Options for creating sessions.
gboolean gck_slot_equal (gconstpointer slot1,gconstpointer slot2);
Checks equality of two slots. Two GckSlot objects can point to the same underlying PKCS#11 slot.
guint               gck_slot_hash                       (gconstpointer slot);
Create a hash value for the GckSlot.
This function is intended for easily hashing a GckSlot to add to a GHashTable or similar data structure.
| 
 | a pointer to a GckSlot. [type Gck.Slot] | 
| Returns : | An integer that can be used as a hash value, or 0 if invalid. | 
GckModule *         gck_slot_get_module                 (GckSlot *self);
Get the module that this slot is on.
| 
 | The slot to get the module for. | 
| Returns : | The module, you must unreference this after you're done with it. [transfer full] | 
gulong              gck_slot_get_handle                 (GckSlot *self);
Get the raw PKCS#11 handle of a slot.
| 
 | The slot to get the handle of. | 
| Returns : | the raw CK_SLOT_ID handle | 
GckSlotInfo *       gck_slot_get_info                   (GckSlot *self);
Get the information for this slot.
| 
 | The slot to get info for. | 
| Returns : | the slot information, when done, use gck_slot_info_free()to release it. [transfer full] | 
gboolean gck_slot_match (GckSlot *self,GckUriData *uri);
Check whether the PKCS#11 URI matches the slot
| 
 | the slot to match | 
| 
 | the uri to match against the slot | 
| Returns : | whether the URI matches or not | 
GckTokenInfo *      gck_slot_get_token_info             (GckSlot *self);
Get the token information for this slot.
| 
 | The slot to get info for. | 
| Returns : | the token information; when done, use gck_token_info_free()to release it. [transfer full] | 
GArray *            gck_slot_get_mechanisms             (GckSlot *self);
Get the available mechanisms for this slot.
| 
 | The slot to get mechanisms for. | 
| Returns : | a list of the mechanisms
for this slot, which should be freed with g_array_free(). [transfer full][element-type ulong] | 
GckMechanismInfo * gck_slot_get_mechanism_info (GckSlot *self,gulong mech_type);
Get information for the specified mechanism.
| 
 | The slot to get mechanism info from. | 
| 
 | The mechanisms type to get info for. | 
| Returns : | the mechanism information, or NULL if failed; use gck_mechanism_info_free()when done with it. [transfer full] | 
gboolean gck_slot_has_flags (GckSlot *self,gulong flags);
Check if the PKCS11 slot has the given flags.
| 
 | The GckSlot object. | 
| 
 | The flags to check. | 
| Returns : | Whether one or more flags exist. | 
GckEnumerator * gck_slot_enumerate_objects (GckSlot *self,GckAttributes *match,GckSessionOptions options);
Setup an enumerator for listing matching objects on the slot.
If the match GckAttributes is floating, it is consumed.
This call will not block but will return an enumerator immediately.
| 
 | a GckSlot to enumerate objects on | 
| 
 | attributes that the objects must match, or empty for all objects | 
| 
 | options for opening a session | 
| Returns : | a new enumerator. [transfer full] | 
GckEnumerator * gck_slots_enumerate_objects (GList *slots,GckAttributes *match,GckSessionOptions options);
Setup an enumerator for listing matching objects on the slots.
If the match GckAttributes is floating, it is consumed.
This call will not block but will return an enumerator immediately.
| 
 | a list of GckSlot to enumerate objects on. [element-type Gck.Slot] | 
| 
 | attributes that the objects must match, or empty for all objects | 
| 
 | options for opening a session | 
| Returns : | a new enumerator. [transfer full] | 
GckSession * gck_slot_open_session (GckSlot *self,GckSessionOptions options,GCancellable *cancellable,GError **error);
Open a session on the slot. If the 'auto reuse' setting is set, then this may be a recycled session with the same flags.
This call may block for an indefinite period.
| 
 | The slot ot open a session on. | 
| 
 | The GckSessionOptions to open a session with. | 
| 
 | An optional cancellation object, or NULL. | 
| 
 | A location to return an error, or NULL. | 
| Returns : | a new session or NULLif an error occurs. [transfer full] | 
GckSession * gck_slot_open_session_full (GckSlot *self,GckSessionOptions options,gulong pkcs11_flags,gpointer app_data,CK_NOTIFY notify,GCancellable *cancellable,GError **error);
Open a session on the slot. If the 'auto reuse' setting is set, then this may be a recycled session with the same flags.
This call may block for an indefinite period.
| 
 | The slot to open a session on. | 
| 
 | The options to open the new session with. | 
| 
 | Additional raw PKCS#11 flags. | 
| 
 | Application data for notification callback. | 
| 
 | PKCS#11 notification callback. | 
| 
 | Optional cancellation object, or NULL. | 
| 
 | A location to return an error, or NULL. | 
| Returns : | a new session or NULLif an error occurs. [transfer full] | 
void gck_slot_open_session_full_async (GckSlot *self,GckSessionOptions options,gulong pkcs11_flags,gpointer app_data,CK_NOTIFY notify,GCancellable *cancellable,GAsyncReadyCallback callback,gpointer user_data);
Open a session on the slot. If the 'auto reuse' setting is set, then this may be a recycled session with the same flags.
This call will return immediately and complete asynchronously.
| 
 | The slot to open a session on. | 
| 
 | Options to open the new session with. | 
| 
 | Additional raw PKCS#11 flags. | 
| 
 | Application data for notification callback. | 
| 
 | PKCS#11 notification callback. | 
| 
 | Optional cancellation object, or NULL. | 
| 
 | Called when the operation completes. | 
| 
 | Data to pass to the callback. | 
void gck_slot_open_session_async (GckSlot *self,GckSessionOptions options,GCancellable *cancellable,GAsyncReadyCallback callback,gpointer user_data);
Open a session on the slot. If the 'auto reuse' setting is set, then this may be a recycled session with the same flags.
This call will return immediately and complete asynchronously.
| 
 | The slot to open a session on. | 
| 
 | The options to open the new session with. | 
| 
 | Optional cancellation object, or NULL. | 
| 
 | Called when the operation completes. | 
| 
 | Data to pass to the callback. | 
GckSession * gck_slot_open_session_finish (GckSlot *self,GAsyncResult *result,GError **error);
Get the result of an open session operation. If the 'auto reuse' setting is set, then this may be a recycled session with the same flags.
| 
 | The slot to open a session on. | 
| 
 | The result passed to the callback. | 
| 
 | A location to return an error or NULL. | 
| Returns : | the new session or NULLif an error occurs. [transfer full] | 
GckSlot * gck_slot_from_handle (GckModule *module,gulong slot_id);
Create a new GckSlot object for a raw PKCS#11 handle.
| 
 | The module that this slot is on. | 
| 
 | The raw PKCS#11 handle or slot id of this slot. | 
| Returns : | The new GckSlot object. [transfer full] | 
struct GckSlotInfo {
	gchar *slot_description;
	gchar *manufacturer_id;
	gulong flags;
	guint8 hardware_version_major;
	guint8 hardware_version_minor;
	guint8 firmware_version_major;
	guint8 firmware_version_minor;
};
Represents information about a PKCS11 slot.
This is analogous to a CK_SLOT_INFO structure, but the strings are far more usable.
When you're done with this structure it should be released with
gck_slot_info_free().
| gchar * | Description of the slot. | 
| gchar * | The manufacturer of this slot. | 
| gulong  | Various PKCS11 flags that apply to this slot. | 
| guint8  | The major version of the hardware. | 
| guint8  | The minor version of the hardware. | 
| guint8  | The major version of the firmware. | 
| guint8  | The minor version of the firmware. | 
GckSlotInfo *       gck_slot_info_copy                  (GckSlotInfo *slot_info);
Make a copy of the slot info.
| 
 | a slot info | 
| Returns : | a newly allocated copy slot info. [transfer full] | 
void                gck_slot_info_free                  (GckSlotInfo *slot_info);
Free the GckSlotInfo and associated resources.
| 
 | The slot info to free, or NULL. | 
struct GckTokenInfo {
	gchar *label;
	gchar *manufacturer_id;
	gchar *model;
	gchar *serial_number;
	gulong flags;
	glong max_session_count;
	glong session_count;
	glong max_rw_session_count;
	glong rw_session_count;
	glong max_pin_len;
	glong min_pin_len;
	glong total_public_memory;
	glong free_public_memory;
	glong total_private_memory;
	glong free_private_memory;
	guint8 hardware_version_major;
	guint8 hardware_version_minor;
	guint8 firmware_version_major;
	guint8 firmware_version_minor;
	gint64 utc_time;
};
Represents information about a PKCS11 token.
This is analogous to a CK_TOKEN_INFO structure, but the strings are far more usable.
When you're done with this structure it should be released with
gck_token_info_free().
| gchar * | The displayable token label. | 
| gchar * | The manufacturer of this slot. | 
| gchar * | The token model number as a string. | 
| gchar * | The token serial number as a string. | 
| gulong  | Various PKCS11 flags that apply to this token. | 
| glong  | The maximum number of sessions allowed on this token. | 
| glong  | The number of sessions open on this token. | 
| glong  | The maximum number of read/write sessions allowed on this token. | 
| glong  | The number of sessions open on this token. | 
| glong  | The maximum length of a PIN for locking this token. | 
| glong  | The minimum length of a PIN for locking this token. | 
| glong  | The total amount of memory on this token for storing public objects. | 
| glong  | The available amount of memory on this token for storing public objects. | 
| glong  | The total amount of memory on this token for storing private objects. | 
| glong  | The available amount of memory on this token for storing private objects. | 
| guint8  | The major version of the hardware. | 
| guint8  | The minor version of the hardware. | 
| guint8  | The major version of the firmware. | 
| guint8  | The minor version of the firmware. | 
| gint64  | If the token has a hardware clock, this is set to the number of seconds since the epoch. | 
GckTokenInfo *      gck_token_info_copy                 (GckTokenInfo *token_info);
Make a copy of the token info.
| 
 | a token info | 
| Returns : | a newly allocated copy token info. [transfer full] | 
void                gck_token_info_free                 (GckTokenInfo *token_info);
Free the GckTokenInfo and associated resources.
| 
 | The token info to free, or NULL. |