GckSlot

GckSlot — Represents a PKCS#11 slot that can contain a token.

Properties

gulong handle Read / Write / Construct Only
GckModule * module Read / Write / Construct Only

Types and Values

Object Hierarchy

    GBoxed
    ├── GckMechanismInfo
    ├── GckSlotInfo
    ╰── GckTokenInfo
    GObject
    ╰── GckSlot

Description

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.

Functions

gck_mechanism_info_copy ()

GckMechanismInfo *
gck_mechanism_info_copy (GckMechanismInfo *mech_info);

Make a copy of the mechanism info.

Parameters

mech_info

a mechanism info

 

Returns

a newly allocated copy mechanism info.

[transfer full]


gck_mechanism_info_free ()

void
gck_mechanism_info_free (GckMechanismInfo *mech_info);

Free the GckMechanismInfo and associated resources.

Parameters

mech_info

The mechanism info to free, or NULL.

 

gck_mechanisms_length()

#define             gck_mechanisms_length(a)                ((a)->len)

Get the number of GckMechanismInfo in the set.

Parameters

a

A GckMechanisms set.

 

Returns

The number in the set.


gck_mechanisms_at()

#define             gck_mechanisms_at(a, i)                 (g_array_index (a, CK_MECHANISM_TYPE, i))

Get a specific mechanism in a the set.

Parameters

a

A GckMechanisms set.

 

i

The index of a mechanism

 

Returns

the mechanism


gck_mechanisms_check ()

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.

Parameters

mechanisms

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.


gck_slot_equal ()

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.

Parameters

slot1

a pointer to the first GckSlot.

[type Gck.Slot]

slot2

a pointer to the second GckSlot.

[type Gck.Slot]

Returns

TRUE if slot1 and slot2 are equal. FALSE if either is not a GckSlot.


gck_slot_hash ()

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.

Parameters

slot

a pointer to a GckSlot.

[type Gck.Slot]

Returns

An integer that can be used as a hash value, or 0 if invalid.


gck_slot_get_module ()

GckModule *
gck_slot_get_module (GckSlot *self);

Get the module that this slot is on.

Parameters

self

The slot to get the module for.

 

Returns

The module, you must unreference this after you're done with it.

[transfer full]


gck_slot_get_handle ()

gulong
gck_slot_get_handle (GckSlot *self);

Get the raw PKCS#11 handle of a slot.

Parameters

self

The slot to get the handle of.

 

Returns

the raw CK_SLOT_ID handle


gck_slot_get_info ()

GckSlotInfo *
gck_slot_get_info (GckSlot *self);

Get the information for this slot.

Parameters

self

The slot to get info for.

 

Returns

the slot information, when done, use gck_slot_info_free() to release it.

[transfer full]


gck_slot_match ()

gboolean
gck_slot_match (GckSlot *self,
                GckUriData *uri);

Check whether the PKCS#11 URI matches the slot

Parameters

self

the slot to match

 

uri

the uri to match against the slot

 

Returns

whether the URI matches or not


gck_slot_get_token_info ()

GckTokenInfo *
gck_slot_get_token_info (GckSlot *self);

Get the token information for this slot.

Parameters

self

The slot to get info for.

 

Returns

the token information; when done, use gck_token_info_free() to release it.

[transfer full]


gck_slot_get_mechanisms ()

GArray *
gck_slot_get_mechanisms (GckSlot *self);

Get the available mechanisms for this slot.

Parameters

self

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]


gck_slot_get_mechanism_info ()

GckMechanismInfo *
gck_slot_get_mechanism_info (GckSlot *self,
                             gulong mech_type);

Get information for the specified mechanism.

Parameters

self

The slot to get mechanism info from.

 

mech_type

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]


gck_slot_has_flags ()

gboolean
gck_slot_has_flags (GckSlot *self,
                    gulong flags);

Check if the PKCS11 slot has the given flags.

Parameters

self

The GckSlot object.

 

flags

The flags to check.

 

Returns

Whether one or more flags exist.


gck_slot_enumerate_objects ()

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.

Parameters

self

a GckSlot to enumerate objects on

 

match

attributes that the objects must match, or empty for all objects

 

options

options for opening a session

 

Returns

a new enumerator.

[transfer full]


gck_slots_enumerate_objects ()

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.

Parameters

slots

a list of GckSlot to enumerate objects on.

[element-type Gck.Slot]

match

attributes that the objects must match, or empty for all objects

 

options

options for opening a session

 

Returns

a new enumerator.

[transfer full]


gck_slot_open_session ()

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.

Parameters

self

The slot ot open a session on.

 

options

The GckSessionOptions to open a session with.

 

cancellable

An optional cancellation object, or NULL.

 

error

A location to return an error, or NULL.

 

Returns

a new session or NULL if an error occurs.

[transfer full]


gck_slot_open_session_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.

[skip]

Parameters

self

The slot to open a session on.

 

options

The options to open the new session with.

 

pkcs11_flags

Additional raw PKCS#11 flags.

 

app_data

Application data for notification callback.

 

notify

PKCS#11 notification callback.

 

cancellable

Optional cancellation object, or NULL.

 

error

A location to return an error, or NULL.

 

Returns

a new session or NULL if an error occurs.

[transfer full]


gck_slot_open_session_full_async ()

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.

[skip]

Parameters

self

The slot to open a session on.

 

options

Options to open the new session with.

 

pkcs11_flags

Additional raw PKCS#11 flags.

 

app_data

Application data for notification callback.

 

notify

PKCS#11 notification callback.

 

cancellable

Optional cancellation object, or NULL.

 

callback

Called when the operation completes.

 

user_data

Data to pass to the callback.

 

gck_slot_open_session_async ()

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.

Parameters

self

The slot to open a session on.

 

options

The options to open the new session with.

 

cancellable

Optional cancellation object, or NULL.

 

callback

Called when the operation completes.

 

user_data

Data to pass to the callback.

 

gck_slot_open_session_finish ()

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.

Parameters

self

The slot to open a session on.

 

result

The result passed to the callback.

 

error

A location to return an error or NULL.

 

Returns

the new session or NULL if an error occurs.

[transfer full]


gck_slot_from_handle ()

GckSlot *
gck_slot_from_handle (GckModule *module,
                      gulong slot_id);

Create a new GckSlot object for a raw PKCS#11 handle.

Parameters

module

The module that this slot is on.

 

slot_id

The raw PKCS#11 handle or slot id of this slot.

 

Returns

The new GckSlot object.

[transfer full]


gck_slot_info_copy ()

GckSlotInfo *
gck_slot_info_copy (GckSlotInfo *slot_info);

Make a copy of the slot info.

Parameters

slot_info

a slot info

 

Returns

a newly allocated copy slot info.

[transfer full]


gck_slot_info_free ()

void
gck_slot_info_free (GckSlotInfo *slot_info);

Free the GckSlotInfo and associated resources.

Parameters

slot_info

The slot info to free, or NULL.

 

gck_token_info_copy ()

GckTokenInfo *
gck_token_info_copy (GckTokenInfo *token_info);

Make a copy of the token info.

Parameters

token_info

a token info

 

Returns

a newly allocated copy token info.

[transfer full]


gck_token_info_free ()

void
gck_token_info_free (GckTokenInfo *token_info);

Free the GckTokenInfo and associated resources.

Parameters

token_info

The token info to free, or NULL.

 

Types and Values

struct GckMechanismInfo

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().

Members

gulong min_key_size;

The minimum key size that can be used with this mechanism.

 

gulong max_key_size;

The maximum key size that can be used with this mechanism.

 

gulong flags;

Various PKCS11 flags that apply to this mechanism.

 

enum GckSessionOptions

Options for creating sessions.

Members

GCK_SESSION_READ_ONLY

Open session as read only

 

GCK_SESSION_READ_WRITE

Open sessions as read/write

 

GCK_SESSION_LOGIN_USER

Login as user on new sessions

 

GCK_SESSION_AUTHENTICATE

Authenticate as necessary

 

struct GckSlot

struct GckSlot;

Represents a PKCS11 slot.


struct GckSlotInfo

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().

Members

gchar *slot_description;

Description of the slot.

 

gchar *manufacturer_id;

The manufacturer of this slot.

 

gulong flags;

Various PKCS11 flags that apply to this slot.

 

guint8 hardware_version_major;

The major version of the hardware.

 

guint8 hardware_version_minor;

The minor version of the hardware.

 

guint8 firmware_version_major;

The major version of the firmware.

 

guint8 firmware_version_minor;

The minor version of the firmware.

 

struct GckTokenInfo

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().

Members

gchar *label;

The displayable token label.

 

gchar *manufacturer_id;

The manufacturer of this slot.

 

gchar *model;

The token model number as a string.

 

gchar *serial_number;

The token serial number as a string.

 

gulong flags;

Various PKCS11 flags that apply to this token.

 

glong max_session_count;

The maximum number of sessions allowed on this token.

 

glong session_count;

The number of sessions open on this token.

 

glong max_rw_session_count;

The maximum number of read/write sessions allowed on this token.

 

glong rw_session_count;

The number of sessions open on this token.

 

glong max_pin_len;

The maximum length of a PIN for locking this token.

 

glong min_pin_len;

The minimum length of a PIN for locking this token.

 

glong total_public_memory;

The total amount of memory on this token for storing public objects.

 

glong free_public_memory;

The available amount of memory on this token for storing public objects.

 

glong total_private_memory;

The total amount of memory on this token for storing private objects.

 

glong free_private_memory;

The available amount of memory on this token for storing private objects.

 

guint8 hardware_version_major;

The major version of the hardware.

 

guint8 hardware_version_minor;

The minor version of the hardware.

 

guint8 firmware_version_major;

The major version of the firmware.

 

guint8 firmware_version_minor;

The minor version of the firmware.

 

gint64 utc_time;

If the token has a hardware clock, this is set to the number of seconds since the epoch.

 

Property Details

The “handle” property

  “handle”                   gulong

The raw CK_SLOT_ID handle of this slot.

Flags: Read / Write / Construct Only


The “module” property

  “module”                   GckModule *

The PKCS11 object that this slot is a part of.

Flags: Read / Write / Construct Only