2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4
<refentry id="gp11-gp11-module">
6
<refentrytitle role="top_of_page" id="gp11-gp11-module.top_of_page">GP11Module</refentrytitle>
7
<manvolnum>3</manvolnum>
8
<refmiscinfo>GP11 Library</refmiscinfo>
12
<refname>GP11Module</refname>
13
<refpurpose>A loaded and initialized PKCS<link linkend="11--CAPS"><type>11</type></link> module.</refpurpose>
16
<refsynopsisdiv id="gp11-gp11-module.synopsis" role="synopsis">
17
<title role="synopsis.title">Synopsis</title>
18
<anchor id="GP11Module"/>
20
<link linkend="GP11Module-struct">GP11Module</link>;
21
<link linkend="GP11Module">GP11Module</link>* <link linkend="gp11-module-new">gp11_module_new</link> (<link linkend="CK-FUNCTION-LIST-PTR--CAPS">CK_FUNCTION_LIST_PTR</link> funcs);
22
<link linkend="GP11Module">GP11Module</link>* <link linkend="gp11-module-initialize">gp11_module_initialize</link> (const <link linkend="gchar">gchar</link> *path,
23
<link linkend="gpointer">gpointer</link> reserved,
24
<link linkend="GError">GError</link> **err);
25
<link linkend="gboolean">gboolean</link> <link linkend="gp11-module-equal">gp11_module_equal</link> (<link linkend="gconstpointer">gconstpointer</link> module1,
26
<link linkend="gconstpointer">gconstpointer</link> module2);
27
<link linkend="guint">guint</link> <link linkend="gp11-module-hash">gp11_module_hash</link> (<link linkend="gconstpointer">gconstpointer</link> module);
28
const <link linkend="gchar">gchar</link>* <link linkend="gp11-module-get-path">gp11_module_get_path</link> (<link linkend="GP11Module">GP11Module</link> *self);
29
<link linkend="CK-FUNCTION-LIST-PTR--CAPS">CK_FUNCTION_LIST_PTR</link> <link linkend="gp11-module-get-functions">gp11_module_get_functions</link> (<link linkend="GP11Module">GP11Module</link> *self);
30
<link linkend="GP11ModuleInfo">GP11ModuleInfo</link>* <link linkend="gp11-module-get-info">gp11_module_get_info</link> (<link linkend="GP11Module">GP11Module</link> *self);
31
<link linkend="GList">GList</link>* <link linkend="gp11-module-get-slots">gp11_module_get_slots</link> (<link linkend="GP11Module">GP11Module</link> *self,
32
<link linkend="gboolean">gboolean</link> token_present);
33
<link linkend="gboolean">gboolean</link> <link linkend="gp11-module-get-pool-sessions">gp11_module_get_pool_sessions</link> (<link linkend="GP11Module">GP11Module</link> *self);
34
<link linkend="void">void</link> <link linkend="gp11-module-set-pool-sessions">gp11_module_set_pool_sessions</link> (<link linkend="GP11Module">GP11Module</link> *self,
35
<link linkend="gboolean">gboolean</link> pool);
36
<link linkend="gint">gint</link> <link linkend="gp11-module-get-auto-authenticate">gp11_module_get_auto_authenticate</link> (<link linkend="GP11Module">GP11Module</link> *self);
37
<link linkend="void">void</link> <link linkend="gp11-module-set-auto-authenticate">gp11_module_set_auto_authenticate</link> (<link linkend="GP11Module">GP11Module</link> *self,
38
<link linkend="gint">gint</link> auto_authenticate);
39
<link linkend="gboolean">gboolean</link> <link linkend="gp11-module-enumerate-objects">gp11_module_enumerate_objects</link> (<link linkend="GP11Module">GP11Module</link> *self,
40
<link linkend="GP11ObjectForeachFunc">GP11ObjectForeachFunc</link> func,
41
<link linkend="gpointer">gpointer</link> user_data,
43
<link linkend="gboolean">gboolean</link> (<link linkend="GP11ObjectForeachFunc">*GP11ObjectForeachFunc</link>) (<link linkend="GP11Object">GP11Object</link> *object,
44
<link linkend="gpointer">gpointer</link> user_data);
45
<link linkend="GP11ModuleInfo">GP11ModuleInfo</link>;
46
<link linkend="void">void</link> <link linkend="gp11-module-info-free">gp11_module_info_free</link> (<link linkend="GP11ModuleInfo">GP11ModuleInfo</link> *module_info);
50
<refsect1 id="gp11-gp11-module.object-hierarchy" role="object_hierarchy">
51
<title role="object_hierarchy.title">Object Hierarchy</title>
53
<link linkend="GObject">GObject</link>
62
<refsect1 id="gp11-gp11-module.properties" role="properties">
63
<title role="properties.title">Properties</title>
65
"<link linkend="GP11Module--auto-authenticate">auto-authenticate</link>" <link linkend="gint">gint</link> : Read / Write
66
"<link linkend="GP11Module--functions">functions</link>" <link linkend="gpointer">gpointer</link> : Read / Write / Construct Only
67
"<link linkend="GP11Module--path">path</link>" <link linkend="gchar">gchar</link>* : Read / Write / Construct Only
68
"<link linkend="GP11Module--pool-sessions">pool-sessions</link>" <link linkend="gboolean">gboolean</link> : Read / Write
72
<refsect1 id="gp11-gp11-module.signals" role="signal_proto">
73
<title role="signal_proto.title">Signals</title>
75
"<link linkend="GP11Module-authenticate-object">authenticate-object</link>" : Run Last
76
"<link linkend="GP11Module-authenticate-slot">authenticate-slot</link>" : Run Last
81
<refsect1 id="gp11-gp11-module.description" role="desc">
82
<title role="desc.title">Description</title>
84
A GP11Module object holds a loaded PKCS<link linkend="11--CAPS"><type>11</type></link> module. A PKCS<link linkend="11--CAPS"><type>11</type></link> module is a shared library.
87
You can load and initialize a PKCS<link linkend="11--CAPS"><type>11</type></link> module with the <link linkend="gp11-module-initialize"><function>gp11_module_initialize()</function></link> call. If you already
88
have a loaded and initialized module that you'd like to use with the various GP11 functions, then
89
you can use <link linkend="gp11-module-new"><function>gp11_module_new()</function></link>.</para>
94
<refsect1 id="gp11-gp11-module.details" role="details">
95
<title role="details.title">Details</title>
96
<refsect2 id="GP11Module-struct" role="struct">
97
<title>GP11Module</title>
98
<indexterm zone="GP11Module-struct"><primary sortas="GP11Module">GP11Module</primary></indexterm><programlisting>typedef struct _GP11Module GP11Module;</programlisting>
100
Holds a loaded and initialized PKCS<link linkend="11--CAPS"><type>11</type></link> module.</para>
103
<refsect2 id="gp11-module-new" role="function">
104
<title>gp11_module_new ()</title>
105
<indexterm zone="gp11-module-new"><primary sortas="gp11_module_new">gp11_module_new</primary></indexterm><programlisting><link linkend="GP11Module">GP11Module</link>* gp11_module_new (<link linkend="CK-FUNCTION-LIST-PTR--CAPS">CK_FUNCTION_LIST_PTR</link> funcs);</programlisting>
107
Create a GP11Module representing a PKCS<link linkend="11--CAPS"><type>11</type></link> module. It is assumed that
108
this the module is already initialized. In addition it will not be
109
finalized when complete.</para>
111
</para><variablelist role="params">
112
<varlistentry><term><parameter>funcs</parameter> :</term>
113
<listitem><simpara> Initialized PKCS<link linkend="11--CAPS"><type>11</type></link> function list pointer
114
</simpara></listitem></varlistentry>
115
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The new PKCS<link linkend="11--CAPS"><type>11</type></link> module.
116
</simpara></listitem></varlistentry>
117
</variablelist></refsect2>
118
<refsect2 id="gp11-module-initialize" role="function">
119
<title>gp11_module_initialize ()</title>
120
<indexterm zone="gp11-module-initialize"><primary sortas="gp11_module_initialize">gp11_module_initialize</primary></indexterm><programlisting><link linkend="GP11Module">GP11Module</link>* gp11_module_initialize (const <link linkend="gchar">gchar</link> *path,
121
<link linkend="gpointer">gpointer</link> reserved,
122
<link linkend="GError">GError</link> **err);</programlisting>
124
Load and initialize a PKCS<link linkend="11--CAPS"><type>11</type></link> module represented by a GP11Module object.</para>
126
</para><variablelist role="params">
127
<varlistentry><term><parameter>path</parameter> :</term>
128
<listitem><simpara> The file system path to the PKCS<link linkend="11--CAPS"><type>11</type></link> module to load.
129
</simpara></listitem></varlistentry>
130
<varlistentry><term><parameter>reserved</parameter> :</term>
131
<listitem><simpara> Extra arguments for the PKCS<link linkend="11--CAPS"><type>11</type></link> module, should usually be NULL.
132
</simpara></listitem></varlistentry>
133
<varlistentry><term><parameter>err</parameter> :</term>
134
<listitem><simpara> A location to store an error resulting from a failed load.
135
</simpara></listitem></varlistentry>
136
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The loaded PKCS<link linkend="11--CAPS"><type>11</type></link> module or NULL if failed.
137
</simpara></listitem></varlistentry>
138
</variablelist></refsect2>
139
<refsect2 id="gp11-module-equal" role="function">
140
<title>gp11_module_equal ()</title>
141
<indexterm zone="gp11-module-equal"><primary sortas="gp11_module_equal">gp11_module_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gp11_module_equal (<link linkend="gconstpointer">gconstpointer</link> module1,
142
<link linkend="gconstpointer">gconstpointer</link> module2);</programlisting>
144
Checks equality of two modules. Two GP11Module objects can point to the same
145
underlying PKCS<link linkend="11--CAPS"><type>11</type></link> module.</para>
147
</para><variablelist role="params">
148
<varlistentry><term><parameter>module1</parameter> :</term>
149
<listitem><simpara> A pointer to the first GP11Module
150
</simpara></listitem></varlistentry>
151
<varlistentry><term><parameter>module2</parameter> :</term>
152
<listitem><simpara> A pointer to the second GP11Module
153
</simpara></listitem></varlistentry>
154
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if module1 and module2 are equal. FALSE if either is not a GP11Module.
155
</simpara></listitem></varlistentry>
156
</variablelist></refsect2>
157
<refsect2 id="gp11-module-hash" role="function">
158
<title>gp11_module_hash ()</title>
159
<indexterm zone="gp11-module-hash"><primary sortas="gp11_module_hash">gp11_module_hash</primary></indexterm><programlisting><link linkend="guint">guint</link> gp11_module_hash (<link linkend="gconstpointer">gconstpointer</link> module);</programlisting>
161
Create a hash value for the GP11Module.
164
This function is intended for easily hashing a GP11Module to add to
165
a GHashTable or similar data structure.</para>
167
</para><variablelist role="params">
168
<varlistentry><term><parameter>module</parameter> :</term>
169
<listitem><simpara> A pointer to a GP11Module
170
</simpara></listitem></varlistentry>
171
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> An integer that can be used as a hash value, or 0 if invalid.
172
</simpara></listitem></varlistentry>
173
</variablelist></refsect2>
174
<refsect2 id="gp11-module-get-path" role="function">
175
<title>gp11_module_get_path ()</title>
176
<indexterm zone="gp11-module-get-path"><primary sortas="gp11_module_get_path">gp11_module_get_path</primary></indexterm><programlisting>const <link linkend="gchar">gchar</link>* gp11_module_get_path (<link linkend="GP11Module">GP11Module</link> *self);</programlisting>
178
Get the file path of this module. This may not be an absolute path, and
179
usually reflects the path passed to <link linkend="gp11-module-initialize"><function>gp11_module_initialize()</function></link>.</para>
181
</para><variablelist role="params">
182
<varlistentry><term><parameter>self</parameter> :</term>
183
<listitem><simpara> The module for which to get the path.
184
</simpara></listitem></varlistentry>
185
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The path, do not modify or free this value.
186
</simpara></listitem></varlistentry>
187
</variablelist></refsect2>
188
<refsect2 id="gp11-module-get-functions" role="function">
189
<title>gp11_module_get_functions ()</title>
190
<indexterm zone="gp11-module-get-functions"><primary sortas="gp11_module_get_functions">gp11_module_get_functions</primary></indexterm><programlisting><link linkend="CK-FUNCTION-LIST-PTR--CAPS">CK_FUNCTION_LIST_PTR</link> gp11_module_get_functions (<link linkend="GP11Module">GP11Module</link> *self);</programlisting>
192
Get the PKCS<link linkend="11--CAPS"><type>11</type></link> function list for the module.</para>
194
</para><variablelist role="params">
195
<varlistentry><term><parameter>self</parameter> :</term>
196
<listitem><simpara> The module for which to get the function list.
197
</simpara></listitem></varlistentry>
198
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The function list, do not modify this structure.
199
</simpara></listitem></varlistentry>
200
</variablelist></refsect2>
201
<refsect2 id="gp11-module-get-info" role="function">
202
<title>gp11_module_get_info ()</title>
203
<indexterm zone="gp11-module-get-info"><primary sortas="gp11_module_get_info">gp11_module_get_info</primary></indexterm><programlisting><link linkend="GP11ModuleInfo">GP11ModuleInfo</link>* gp11_module_get_info (<link linkend="GP11Module">GP11Module</link> *self);</programlisting>
205
Get the info about a PKCS<link linkend="11--CAPS"><type>11</type></link> module.</para>
207
</para><variablelist role="params">
208
<varlistentry><term><parameter>self</parameter> :</term>
209
<listitem><simpara> The module to get info for.
210
</simpara></listitem></varlistentry>
211
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The module info. Release this with <link linkend="gp11-module-info-free"><function>gp11_module_info_free()</function></link>.
212
</simpara></listitem></varlistentry>
213
</variablelist></refsect2>
214
<refsect2 id="gp11-module-get-slots" role="function">
215
<title>gp11_module_get_slots ()</title>
216
<indexterm zone="gp11-module-get-slots"><primary sortas="gp11_module_get_slots">gp11_module_get_slots</primary></indexterm><programlisting><link linkend="GList">GList</link>* gp11_module_get_slots (<link linkend="GP11Module">GP11Module</link> *self,
217
<link linkend="gboolean">gboolean</link> token_present);</programlisting>
219
Get the GP11Slot objects for a given module.</para>
221
</para><variablelist role="params">
222
<varlistentry><term><parameter>self</parameter> :</term>
223
<listitem><simpara> The module for which to get the slots.
224
</simpara></listitem></varlistentry>
225
<varlistentry><term><parameter>token_present</parameter> :</term>
226
<listitem><simpara> Whether to limit only to slots with a token present.
227
</simpara></listitem></varlistentry>
228
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The possibly empty list of slots. Release this with <link linkend="gp11-list-unref-free"><function>gp11_list_unref_free()</function></link>.
229
</simpara></listitem></varlistentry>
230
</variablelist></refsect2>
231
<refsect2 id="gp11-module-get-pool-sessions" role="function">
232
<title>gp11_module_get_pool_sessions ()</title>
233
<indexterm zone="gp11-module-get-pool-sessions"><primary sortas="gp11_module_get_pool_sessions">gp11_module_get_pool_sessions</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gp11_module_get_pool_sessions (<link linkend="GP11Module">GP11Module</link> *self);</programlisting>
235
Get the reuse sessions setting. When this is set, sessions
236
will be pooled and reused if their flags match when
237
<link linkend="gp11-slot-open-session"><function>gp11_slot_open_session()</function></link> is called.</para>
239
</para><variablelist role="params">
240
<varlistentry><term><parameter>self</parameter> :</term>
241
<listitem><simpara> The module to get setting from.
242
</simpara></listitem></varlistentry>
243
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Whether reusing sessions or not.
244
</simpara></listitem></varlistentry>
245
</variablelist></refsect2>
246
<refsect2 id="gp11-module-set-pool-sessions" role="function">
247
<title>gp11_module_set_pool_sessions ()</title>
248
<indexterm zone="gp11-module-set-pool-sessions"><primary sortas="gp11_module_set_pool_sessions">gp11_module_set_pool_sessions</primary></indexterm><programlisting><link linkend="void">void</link> gp11_module_set_pool_sessions (<link linkend="GP11Module">GP11Module</link> *self,
249
<link linkend="gboolean">gboolean</link> pool);</programlisting>
251
When this is set, sessions will be pooled and reused
252
if their flags match when <link linkend="gp11-slot-open-session"><function>gp11_slot_open_session()</function></link> is called.</para>
254
</para><variablelist role="params">
255
<varlistentry><term><parameter>self</parameter> :</term>
256
<listitem><simpara> The module to set the setting on.
257
</simpara></listitem></varlistentry>
258
<varlistentry><term><parameter>pool</parameter> :</term>
259
<listitem><simpara> Whether to reuse sessions or not.
260
</simpara></listitem></varlistentry>
261
</variablelist></refsect2>
262
<refsect2 id="gp11-module-get-auto-authenticate" role="function">
263
<title>gp11_module_get_auto_authenticate ()</title>
264
<indexterm zone="gp11-module-get-auto-authenticate"><primary sortas="gp11_module_get_auto_authenticate">gp11_module_get_auto_authenticate</primary></indexterm><programlisting><link linkend="gint">gint</link> gp11_module_get_auto_authenticate (<link linkend="GP11Module">GP11Module</link> *self);</programlisting>
266
Get the auto login setting. When this is set, this slot
267
will emit the 'authenticate-slot' signal when a session
268
requires authentication, and the 'authenticate-object'
269
signal when an object requires authintication.</para>
271
</para><variablelist role="params">
272
<varlistentry><term><parameter>self</parameter> :</term>
273
<listitem><simpara> The module to get setting from.
274
</simpara></listitem></varlistentry>
275
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> Whether auto login or not.
276
</simpara></listitem></varlistentry>
277
</variablelist></refsect2>
278
<refsect2 id="gp11-module-set-auto-authenticate" role="function">
279
<title>gp11_module_set_auto_authenticate ()</title>
280
<indexterm zone="gp11-module-set-auto-authenticate"><primary sortas="gp11_module_set_auto_authenticate">gp11_module_set_auto_authenticate</primary></indexterm><programlisting><link linkend="void">void</link> gp11_module_set_auto_authenticate (<link linkend="GP11Module">GP11Module</link> *self,
281
<link linkend="gint">gint</link> auto_authenticate);</programlisting>
283
When this is set, this slot
284
will emit the 'authenticate-slot' signal when a session
285
requires authentication, and the 'authenticate-object'
286
signal when an object requires authintication.</para>
288
</para><variablelist role="params">
289
<varlistentry><term><parameter>self</parameter> :</term>
290
<listitem><simpara> The module to set the setting on.
291
</simpara></listitem></varlistentry>
292
<varlistentry><term><parameter>auto_authenticate</parameter> :</term>
293
<listitem><simpara> Whether auto login or not.
294
</simpara></listitem></varlistentry>
295
</variablelist></refsect2>
296
<refsect2 id="gp11-module-enumerate-objects" role="function">
297
<title>gp11_module_enumerate_objects ()</title>
298
<indexterm zone="gp11-module-enumerate-objects"><primary sortas="gp11_module_enumerate_objects">gp11_module_enumerate_objects</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gp11_module_enumerate_objects (<link linkend="GP11Module">GP11Module</link> *self,
299
<link linkend="GP11ObjectForeachFunc">GP11ObjectForeachFunc</link> func,
300
<link linkend="gpointer">gpointer</link> user_data,
301
...);</programlisting>
303
Call a function for every matching object on the module. This call may
304
block for an indefinite period.
307
<para>The variable argument list should contain:
311
<listitem><para>The gulong attribute type (ie: CKA_LABEL). </para></listitem>
315
<listitem><para>The attribute data type (one of GP11_BOOLEAN, GP11_ULONG,
316
GP11_STRING, GP11_DATE) orthe raw attribute value length.</para></listitem>
320
<listitem><para>The attribute value, either a gboolean, gulong, gchar*, GDate* or
321
a pointer to a raw attribute value.</para></listitem>
324
The variable argument list should be terminated with GP11_INVALID.</para>
327
This function will open a session per slot. It's recommended that you
328
set the 'reuse-sessions' property on each slot if you'll be calling
332
You can access the session in which the object was found, by using the
333
<link linkend="gp11-object-get-session"><function>gp11_object_get_session()</function></link> function on the resulting objects.
336
This function skips tokens that are not initialize, and makes a best effort to
337
find objects on valid tokens.
340
The function can return FALSE to stop the enumeration.</para>
342
</para><variablelist role="params">
343
<varlistentry><term><parameter>self</parameter> :</term>
344
<listitem><simpara> The module to enumerate objects.
345
</simpara></listitem></varlistentry>
346
<varlistentry><term><parameter>func</parameter> :</term>
347
<listitem><simpara> Function to call for each object.
348
</simpara></listitem></varlistentry>
349
<varlistentry><term><parameter>user_data</parameter> :</term>
350
<listitem><simpara> Data to pass to the function.
351
</simpara></listitem></varlistentry>
352
<varlistentry><term><parameter>...</parameter> :</term>
353
<listitem><simpara> The arguments must be triples of: attribute type, data type, value.
354
</simpara></listitem></varlistentry>
355
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> If FALSE then an error prevented all matching objects from being enumerated.
356
</simpara></listitem></varlistentry>
357
</variablelist></refsect2>
358
<refsect2 id="GP11ObjectForeachFunc" role="function">
359
<title>GP11ObjectForeachFunc ()</title>
360
<indexterm zone="GP11ObjectForeachFunc"><primary sortas="GP11ObjectForeachFunc">GP11ObjectForeachFunc</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> (*GP11ObjectForeachFunc) (<link linkend="GP11Object">GP11Object</link> *object,
361
<link linkend="gpointer">gpointer</link> user_data);</programlisting>
363
This function is passed to <link linkend="gp11-module-enumerate-objects"><function>gp11_module_enumerate_objects()</function></link> or a similar function.
364
It is called once for each object matched.
367
The GP11Session through which the object is accessible can be retrieved by calling
368
<link linkend="gp11-object-get-session"><function>gp11_object_get_session()</function></link> on object.</para>
370
</para><variablelist role="params">
371
<varlistentry><term><parameter>object</parameter> :</term>
372
<listitem><simpara> The enumerated object.
373
</simpara></listitem></varlistentry>
374
<varlistentry><term><parameter>user_data</parameter> :</term>
375
<listitem><simpara> Data passed to enumerate function.
376
</simpara></listitem></varlistentry>
377
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE to continue enumerating, FALSE to stop.
378
</simpara></listitem></varlistentry>
379
</variablelist></refsect2>
380
<refsect2 id="GP11ModuleInfo" role="struct">
381
<title>GP11ModuleInfo</title>
382
<indexterm zone="GP11ModuleInfo"><primary sortas="GP11ModuleInfo">GP11ModuleInfo</primary></indexterm><programlisting>typedef struct {
383
guint8 pkcs11_version_major;
384
guint8 pkcs11_version_minor;
386
gchar *manufacturer_id;
389
gchar *library_description;
390
guint8 library_version_major;
391
guint8 library_version_minor;
395
Holds information about the PKCS#11 module.
398
This structure corresponds to CK_MODULE_INFO in the PKCS<link linkend="11--CAPS"><type>11</type></link> standard. The
399
strings are NULL terminated for easier use.
402
Use <link linkend="gp11-module-info-free"><function>gp11_module_info_free()</function></link> to release this structure when done with it.</para>
404
</para><variablelist role="struct">
406
<term><link linkend="guint8">guint8</link> <structfield>pkcs11_version_major</structfield>;</term>
407
<listitem><simpara> The major version of the module.
408
</simpara></listitem>
411
<term><link linkend="guint8">guint8</link> <structfield>pkcs11_version_minor</structfield>;</term>
412
<listitem><simpara> The minor version of the module.
413
</simpara></listitem>
416
<term><link linkend="gchar">gchar</link> *<structfield>manufacturer_id</structfield>;</term>
417
<listitem><simpara> The module manufacturer.
418
</simpara></listitem>
421
<term><link linkend="gulong">gulong</link> <structfield>flags</structfield>;</term>
422
<listitem><simpara> The module PKCS#11 flags.
423
</simpara></listitem>
426
<term><link linkend="gchar">gchar</link> *<structfield>library_description</structfield>;</term>
427
<listitem><simpara> The module description.
428
</simpara></listitem>
431
<term><link linkend="guint8">guint8</link> <structfield>library_version_major</structfield>;</term>
432
<listitem><simpara> The major version of the library.
433
</simpara></listitem>
436
<term><link linkend="guint8">guint8</link> <structfield>library_version_minor</structfield>;</term>
437
<listitem><simpara> The minor version of the library.
438
</simpara></listitem>
440
</variablelist></refsect2>
441
<refsect2 id="gp11-module-info-free" role="function">
442
<title>gp11_module_info_free ()</title>
443
<indexterm zone="gp11-module-info-free"><primary sortas="gp11_module_info_free">gp11_module_info_free</primary></indexterm><programlisting><link linkend="void">void</link> gp11_module_info_free (<link linkend="GP11ModuleInfo">GP11ModuleInfo</link> *module_info);</programlisting>
445
Free a GP11ModuleInfo structure.</para>
447
</para><variablelist role="params">
448
<varlistentry><term><parameter>module_info</parameter> :</term>
449
<listitem><simpara> The module info to free, or NULL.
450
</simpara></listitem></varlistentry>
451
</variablelist></refsect2>
454
<refsect1 id="gp11-gp11-module.property-details" role="property_details">
455
<title role="property_details.title">Property Details</title>
456
<refsect2 id="GP11Module--auto-authenticate" role="property"><title>The <literal>"auto-authenticate"</literal> property</title>
457
<indexterm zone="GP11Module--auto-authenticate"><primary sortas="GP11Module:auto-authenticate">GP11Module:auto-authenticate</primary></indexterm><programlisting> "auto-authenticate" <link linkend="gint">gint</link> : Read / Write</programlisting>
459
Whether or not to automatically authenticate token objects that need
460
a C_Login call before they can be used.
463
The <link linkend="GP11Module-authenticate-object"><type>"authenticate-object"</type></link> signal will be fired when an
464
object needs to be authenticated.</para>
466
</para><para>Allowed values: >= 0</para>
467
<para>Default value: 0</para>
469
<refsect2 id="GP11Module--functions" role="property"><title>The <literal>"functions"</literal> property</title>
470
<indexterm zone="GP11Module--functions"><primary sortas="GP11Module:functions">GP11Module:functions</primary></indexterm><programlisting> "functions" <link linkend="gpointer">gpointer</link> : Read / Write / Construct Only</programlisting>
472
The raw PKCS#11 function list for the module.
475
This points to a CK_FUNCTION_LIST structure.</para>
478
<refsect2 id="GP11Module--path" role="property"><title>The <literal>"path"</literal> property</title>
479
<indexterm zone="GP11Module--path"><primary sortas="GP11Module:path">GP11Module:path</primary></indexterm><programlisting> "path" <link linkend="gchar">gchar</link>* : Read / Write / Construct Only</programlisting>
481
The PKCS#11 module file path.
484
This may be set to NULL if this object was created from an already
485
initialized module via the <link linkend="gp11-module-new"><function>gp11_module_new()</function></link> function.</para>
487
</para><para>Default value: NULL</para>
489
<refsect2 id="GP11Module--pool-sessions" role="property"><title>The <literal>"pool-sessions"</literal> property</title>
490
<indexterm zone="GP11Module--pool-sessions"><primary sortas="GP11Module:pool-sessions">GP11Module:pool-sessions</primary></indexterm><programlisting> "pool-sessions" <link linkend="gboolean">gboolean</link> : Read / Write</programlisting>
492
Whether or not to pool PKCS#11 sessions. When this is set, sessions
493
will be pooled and reused if their flags match when <link linkend="gp11-slot-open-session"><function>gp11_slot_open_session()</function></link>
496
</para><para>Default value: FALSE</para>
501
<refsect1 id="gp11-gp11-module.signal-details" role="signals">
502
<title role="signals.title">Signal Details</title>
503
<refsect2 id="GP11Module-authenticate-object" role="signal"><title>The <literal>"authenticate-object"</literal> signal</title>
504
<indexterm zone="GP11Module-authenticate-object"><primary sortas="GP11Module::authenticate-object">GP11Module::authenticate-object</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> user_function (<link linkend="GP11Module">GP11Module</link> *module,
505
<link linkend="GP11Object">GP11Object</link> *object,
506
<link linkend="gchar">gchar</link> *label,
507
<link linkend="gpointer">gpointer</link> password,
508
<link linkend="gpointer">gpointer</link> user_data) : Run Last</programlisting>
510
This signal is emitted when a password is needed to authenticate a PKCS#11
511
object like a key. If the module prompts for passwords itself, then this signal will
512
not be emitted.</para>
514
</para><variablelist role="params">
515
<varlistentry><term><parameter>module</parameter> :</term>
516
<listitem><simpara> The module.
517
</simpara></listitem></varlistentry>
518
<varlistentry><term><parameter>object</parameter> :</term>
519
<listitem><simpara> The object to be authenticated.
520
</simpara></listitem></varlistentry>
521
<varlistentry><term><parameter>label</parameter> :</term>
522
<listitem><simpara> A displayable label which describes the object.
523
</simpara></listitem></varlistentry>
524
<varlistentry><term><parameter>password</parameter> :</term>
525
<listitem><simpara> A gchar** where a password should be returned.
526
</simpara></listitem></varlistentry>
527
<varlistentry><term><parameter>user_data</parameter> :</term>
528
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
529
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> FALSE if the user cancelled, TRUE if we should proceed.
530
</simpara></listitem></varlistentry>
531
</variablelist></refsect2><refsect2 id="GP11Module-authenticate-slot" role="signal"><title>The <literal>"authenticate-slot"</literal> signal</title>
532
<indexterm zone="GP11Module-authenticate-slot"><primary sortas="GP11Module::authenticate-slot">GP11Module::authenticate-slot</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> user_function (<link linkend="GP11Module">GP11Module</link> *module,
533
<link linkend="GP11Slot">GP11Slot</link> *slot,
534
<link linkend="gchar">gchar</link> *string,
535
<link linkend="gpointer">gpointer</link> password,
536
<link linkend="gpointer">gpointer</link> user_data) : Run Last</programlisting>
538
This signal is emitted when a password is needed to authenticate a PKCS#11
539
slot. If the module prompts for passwords itself, then this signal will
540
not be emitted.</para>
542
</para><variablelist role="params">
543
<varlistentry><term><parameter>module</parameter> :</term>
544
<listitem><simpara> The module
545
</simpara></listitem></varlistentry>
546
<varlistentry><term><parameter>slot</parameter> :</term>
547
<listitem><simpara> The slot to be authenticated.
548
</simpara></listitem></varlistentry>
549
<varlistentry><term><parameter>string</parameter> :</term>
550
<listitem><simpara> A displayable label which describes the object.
551
</simpara></listitem></varlistentry>
552
<varlistentry><term><parameter>password</parameter> :</term>
553
<listitem><simpara> A gchar** where a password should be returned.
554
</simpara></listitem></varlistentry>
555
<varlistentry><term><parameter>user_data</parameter> :</term>
556
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
557
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> FALSE if the user cancelled, TRUE if we should proceed.
558
</simpara></listitem></varlistentry>
559
</variablelist></refsect2>