## Miscellaneous Functions

Miscellaneous Functions — Other miscellaneous functions.

## Synopsis

    GList *             gck_list_ref_copy                   (GList *reflist);
    void                gck_list_unref_free                 (GList *reflist);
    gchar *             gck_string_from_chars               (const guchar *data,
                                                             gsize max);
    gboolean            gck_string_to_chars                 (guchar *data,
                                                             gsize max,
                                                             const gchar *string);
    gboolean            gck_value_to_boolean                (gconstpointer value,
                                                             gsize length,
                                                             gboolean *result);
    gboolean            gck_value_to_ulong                  (gconstpointer value,
                                                             gsize length,
                                                             gulong *result);
    #define             GCK_INVALID

## Description

A few supporting functions that come in handy when dealing with the gck library or PKCS11 in general.

## Details

### gck_list_ref_copy ()

    GList *             gck_list_ref_copy                   (GList *reflist);

Copy a list of GObject based pointers. All objects in the list will be reffed and the list will be copied.

`reflist` : | List of GObject reference counted objects.
Returns : | The copied and reffed list. When done, free it with `gck_list_unref_free()`

### gck_list_unref_free ()

    void                gck_list_unref_free                 (GList *reflist);

Free a list of GObject based pointers. All objects in the list will be unreffed and then the list itself will be freed.

`reflist` : | List of Gobject reference counted pointers.

### gck_string_from_chars ()

    gchar *             gck_string_from_chars               (const guchar *data,
                                                             gsize max);

Create a string from a set of PKCS#11 characters. This is similar to g_strndup, except for that it also strips trailing spaces. These space padded strings are often used in PKCS#11 structures.

If the space padded string is filled with null characters then this function will return `NULL`.

`data` : | The character data to turn into a null terminated string.
`max` : | The maximum length of the charater data.
Returns : | The null terminated string.

### gck_string_to_chars ()

    gboolean            gck_string_to_chars                 (guchar *data,
                                                             gsize max,
                                                             const gchar *string);

Create a space padded PKCS#11 string from a null terminated string. The string must be shorter than the buffer or `FALSE` will be returned.

If a `NULL` string is passed, then the space padded string will be set to zero characters.

`data` : | The character buffer to place string into.
`max` : | The maximum length of the charater buffer.
`string` : | The string to place in the buffer.
Returns : | The null terminated string.

### gck_value_to_boolean ()

    gboolean            gck_value_to_boolean                (gconstpointer value,
                                                             gsize length,
                                                             gboolean *result);

Convert CK_BBOOL type memory to a boolean.

`value` : | memory to convert
`length` : | length of memory
`result` : | A location to store the result
Returns : | Whether the conversion was successful.

### gck_value_to_ulong ()

    gboolean            gck_value_to_ulong                  (gconstpointer value,
                                                             gsize length,
                                                             gulong *result);

Convert CK_ULONG type memory to a boolean.

`value` : | memory to convert
`length` : | length of memory
`result` : | A location to store the result
Returns : | Whether the conversion was successful.

### GCK_INVALID

    #define GCK_INVALID G_MAXULONG

Used as a terminator at the end of variable argument lists.