Release 1.0.3
[platform/upstream/gsignond.git] / docs / html / GSignondPlugin.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>gsignond API Reference Manual: GSignondPlugin</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="index.html" title="gsignond API Reference Manual">
8 <link rel="up" href="ch04.html" title="GSignond API for writing GLib-based authentication plugins">
9 <link rel="prev" href="ch04.html" title="GSignond API for writing GLib-based authentication plugins">
10 <link rel="next" href="gsignond-GSignondDictionary.html" title="GSignondDictionary">
11 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
18                   <a href="#GSignondPlugin.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
19                   <a href="#GSignondPlugin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
20                   <a href="#GSignondPlugin.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span> 
21                   <a href="#GSignondPlugin.signals" class="shortcut">Signals</a></span>
22 </td>
23 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
24 <td><a accesskey="u" href="ch04.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
25 <td><a accesskey="p" href="ch04.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
26 <td><a accesskey="n" href="gsignond-GSignondDictionary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
27 </tr></table>
28 <div class="refentry">
29 <a name="GSignondPlugin"></a><div class="titlepage"></div>
30 <div class="refnamediv"><table width="100%"><tr>
31 <td valign="top">
32 <h2><span class="refentrytitle"><a name="GSignondPlugin.top_of_page"></a>GSignondPlugin</span></h2>
33 <p>GSignondPlugin — an interface for implementing GLib-based authentication plugins</p>
34 </td>
35 <td class="gallery_image" valign="top" align="right"></td>
36 </tr></table></div>
37 <div class="refsect1">
38 <a name="GSignondPlugin.functions"></a><h2>Functions</h2>
39 <div class="informaltable"><table width="100%" border="0">
40 <colgroup>
41 <col width="150px" class="functions_return">
42 <col class="functions_name">
43 </colgroup>
44 <tbody>
45 <tr>
46 <td class="function_type">
47 <span class="returnvalue">void</span>
48 </td>
49 <td class="function_name">
50 <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()">gsignond_plugin_cancel</a> <span class="c_punctuation">()</span>
51 </td>
52 </tr>
53 <tr>
54 <td class="function_type">
55 <span class="returnvalue">void</span>
56 </td>
57 <td class="function_name">
58 <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()">gsignond_plugin_request_initial</a> <span class="c_punctuation">()</span>
59 </td>
60 </tr>
61 <tr>
62 <td class="function_type">
63 <span class="returnvalue">void</span>
64 </td>
65 <td class="function_name">
66 <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()">gsignond_plugin_request</a> <span class="c_punctuation">()</span>
67 </td>
68 </tr>
69 <tr>
70 <td class="function_type">
71 <span class="returnvalue">void</span>
72 </td>
73 <td class="function_name">
74 <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()">gsignond_plugin_user_action_finished</a> <span class="c_punctuation">()</span>
75 </td>
76 </tr>
77 <tr>
78 <td class="function_type">
79 <span class="returnvalue">void</span>
80 </td>
81 <td class="function_name">
82 <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()">gsignond_plugin_refresh</a> <span class="c_punctuation">()</span>
83 </td>
84 </tr>
85 <tr>
86 <td class="function_type">
87 <span class="returnvalue">void</span>
88 </td>
89 <td class="function_name">
90 <a class="link" href="GSignondPlugin.html#gsignond-plugin-response" title="gsignond_plugin_response ()">gsignond_plugin_response</a> <span class="c_punctuation">()</span>
91 </td>
92 </tr>
93 <tr>
94 <td class="function_type">
95 <span class="returnvalue">void</span>
96 </td>
97 <td class="function_name">
98 <a class="link" href="GSignondPlugin.html#gsignond-plugin-response-final" title="gsignond_plugin_response_final ()">gsignond_plugin_response_final</a> <span class="c_punctuation">()</span>
99 </td>
100 </tr>
101 <tr>
102 <td class="function_type">
103 <span class="returnvalue">void</span>
104 </td>
105 <td class="function_name">
106 <a class="link" href="GSignondPlugin.html#gsignond-plugin-store" title="gsignond_plugin_store ()">gsignond_plugin_store</a> <span class="c_punctuation">()</span>
107 </td>
108 </tr>
109 <tr>
110 <td class="function_type">
111 <span class="returnvalue">void</span>
112 </td>
113 <td class="function_name">
114 <a class="link" href="GSignondPlugin.html#gsignond-plugin-error" title="gsignond_plugin_error ()">gsignond_plugin_error</a> <span class="c_punctuation">()</span>
115 </td>
116 </tr>
117 <tr>
118 <td class="function_type">
119 <span class="returnvalue">void</span>
120 </td>
121 <td class="function_name">
122 <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-required" title="gsignond_plugin_user_action_required ()">gsignond_plugin_user_action_required</a> <span class="c_punctuation">()</span>
123 </td>
124 </tr>
125 <tr>
126 <td class="function_type">
127 <span class="returnvalue">void</span>
128 </td>
129 <td class="function_name">
130 <a class="link" href="GSignondPlugin.html#gsignond-plugin-refreshed" title="gsignond_plugin_refreshed ()">gsignond_plugin_refreshed</a> <span class="c_punctuation">()</span>
131 </td>
132 </tr>
133 <tr>
134 <td class="function_type">
135 <span class="returnvalue">void</span>
136 </td>
137 <td class="function_name">
138 <a class="link" href="GSignondPlugin.html#gsignond-plugin-status-changed" title="gsignond_plugin_status_changed ()">gsignond_plugin_status_changed</a> <span class="c_punctuation">()</span>
139 </td>
140 </tr>
141 </tbody>
142 </table></div>
143 </div>
144 <div class="refsect1">
145 <a name="GSignondPlugin.properties"></a><h2>Properties</h2>
146 <div class="informaltable"><table border="0">
147 <colgroup>
148 <col width="150px" class="properties_type">
149 <col width="300px" class="properties_name">
150 <col width="200px" class="properties_flags">
151 </colgroup>
152 <tbody>
153 <tr>
154 <td class="property_type"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#GStrv"><span class="type">GStrv</span></a></td>
155 <td class="property_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin--mechanisms" title="The “mechanisms” property">mechanisms</a></td>
156 <td class="property_flags">Read</td>
157 </tr>
158 <tr>
159 <td class="property_type">
160 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
161 <td class="property_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin--type" title="The “type” property">type</a></td>
162 <td class="property_flags">Read</td>
163 </tr>
164 </tbody>
165 </table></div>
166 </div>
167 <div class="refsect1">
168 <a name="GSignondPlugin.signals"></a><h2>Signals</h2>
169 <div class="informaltable"><table border="0">
170 <colgroup>
171 <col width="150px" class="signals_return">
172 <col width="300px" class="signals_name">
173 <col width="200px" class="signals_flags">
174 </colgroup>
175 <tbody>
176 <tr>
177 <td class="signal_type"><span class="returnvalue">void</span></td>
178 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal">error</a></td>
179 <td class="signal_flags">Run First</td>
180 </tr>
181 <tr>
182 <td class="signal_type"><span class="returnvalue">void</span></td>
183 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal">refreshed</a></td>
184 <td class="signal_flags">Run First</td>
185 </tr>
186 <tr>
187 <td class="signal_type"><span class="returnvalue">void</span></td>
188 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal">response</a></td>
189 <td class="signal_flags">Run First</td>
190 </tr>
191 <tr>
192 <td class="signal_type"><span class="returnvalue">void</span></td>
193 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal">response-final</a></td>
194 <td class="signal_flags">Run First</td>
195 </tr>
196 <tr>
197 <td class="signal_type"><span class="returnvalue">void</span></td>
198 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal">status-changed</a></td>
199 <td class="signal_flags">Run First</td>
200 </tr>
201 <tr>
202 <td class="signal_type"><span class="returnvalue">void</span></td>
203 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal">store</a></td>
204 <td class="signal_flags">Run First</td>
205 </tr>
206 <tr>
207 <td class="signal_type"><span class="returnvalue">void</span></td>
208 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal">user-action-required</a></td>
209 <td class="signal_flags">Run First</td>
210 </tr>
211 </tbody>
212 </table></div>
213 </div>
214 <div class="refsect1">
215 <a name="GSignondPlugin.other"></a><h2>Types and Values</h2>
216 <div class="informaltable"><table width="100%" border="0">
217 <colgroup>
218 <col width="150px" class="name">
219 <col class="description">
220 </colgroup>
221 <tbody>
222 <tr>
223 <td class="datatype_keyword">enum</td>
224 <td class="function_name"><a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState">GSignondPluginState</a></td>
225 </tr>
226 <tr>
227 <td class="datatype_keyword">struct</td>
228 <td class="function_name"><a class="link" href="GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface">GSignondPluginInterface</a></td>
229 </tr>
230 </tbody>
231 </table></div>
232 </div>
233 <div class="refsect1">
234 <a name="GSignondPlugin.object-hierarchy"></a><h2>Object Hierarchy</h2>
235 <pre class="screen">    GInterface
236     <span class="lineart">╰──</span> GSignondPlugin
237 </pre>
238 </div>
239 <div class="refsect1">
240 <a name="GSignondPlugin.includes"></a><h2>Includes</h2>
241 <pre class="synopsis">#include &lt;gsignond/gsignond-plugin-interface.h&gt;
242 </pre>
243 </div>
244 <div class="refsect1">
245 <a name="GSignondPlugin.description"></a><h2>Description</h2>
246 <p><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> is an interface for implementing GLib-based authentication plugins.</p>
247 <p>When creating a plugin, write the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> boilerplate code as usual, but</p>
248 <p>a) declare the type as follows:</p>
249 <div class="informalexample"><pre class="programlisting">
250                         G_TYPE_OBJECT,
251                         G_IMPLEMENT_INTERFACE (GSIGNOND_TYPE_PLUGIN,
252                                                gsignond_plugin_interface_init));
253 </pre></div>
254 <p></p>
255 <p>b) implement <code class="function">gsignond_plugin_interface_init</code> as follows:</p>
256 <div class="informalexample"><pre class="programlisting">
257 gsignond_plugin_interface_init (GSignondPluginInterface *iface)
258 {
259     iface-&gt;cancel = gsignond_password_plugin_cancel;
260     iface-&gt;request_initial = gsignond_password_plugin_request_initial;
261     iface-&gt;request = gsignond_password_plugin_request;
262     iface-&gt;user_action_finished = gsignond_password_plugin_user_action_finished;
263     iface-&gt;refresh = gsignond_password_plugin_refresh;
264 }
265 </pre></div>
266 <p></p>
267 <p>where the <code class="function">gsignond_password_plugin_cancel</code> etc. are specific implementations of
268 plugin interface methods that every plugin must provide (see below for when
269 and how they're used by the daemon).</p>
270 <p>c) override <a class="link" href="GSignondPlugin.html#GSignondPlugin--type" title="The “type” property"><span class="type">“type”</span></a> and <a class="link" href="GSignondPlugin.html#GSignondPlugin--mechanisms" title="The “mechanisms” property"><span class="type">“mechanisms”</span></a> property 
271 implementations in the plugin class constructor like this:</p>
272 <div class="informalexample"><pre class="programlisting">
273 gsignond_password_plugin_class_init (GSignondPasswordPluginClass *klass)
274 {
275     GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
276     
277     gobject_class-&gt;set_property = gsignond_password_plugin_set_property;
278     gobject_class-&gt;get_property = gsignond_password_plugin_get_property;
279     
280     g_object_class_override_property (gobject_class, PROP_TYPE, "type");
281     g_object_class_override_property (gobject_class, PROP_MECHANISMS, 
282                                       "mechanisms");
283 }
284 </pre></div>
285 <p>
286 (naturally, plugin's property setter should ignore attempts to set these properties,
287 and plugin's property getter should provide their values when asked)</p>
288 <div class="refsect1">
289 <a name="id-1.5.2.9.14"></a><h2>The plugin API</h2>
290 </div>
291 <p>Plugins implement authentication sessions which are controlled through the
292 plugin API. Authentication sessions follow one another so there is only one active
293 session at a time.</p>
294 <p>The plugin API is a set of methods and signals that should be used in a specific
295 sequence:</p>
296 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
297 <li class="listitem"><p>successful authentication session begins with <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a> and ends
298 with the plugin issuing a <a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal"><span class="type">“response-final”</span></a> signal</p></li>
299 <li class="listitem"><p>at any point the application can cancel an active session with 
300 <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></li>
301 <li class="listitem"><p>at any point the plugin can cancel an active session by issuing <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a>
302 signal, which also provides some details about the cancellation reason.</p></li>
303 <li class="listitem"><p>if a session is active, and the plugin has an intermediate response or needs
304 additional information, it issues <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a> signal, which the 
305 application should respond to with <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a> method. This can
306 happen more than once.</p></li>
307 <li class="listitem"><p>if the plugin needs to launch UI interaction with the user, it's issuing
308 <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a> signal, which the application should
309 follow up with <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a> method. This can happen
310 more than once as well.</p></li>
311 <li class="listitem"><p>if, during an active UI session, the application needs a UI refresh 
312 (for example, to fetch a new captcha image), it's
313 requested from the plugin with <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a> method, followed
314 by the plugin's response via <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a> signal. This can happen
315 more than once.</p></li>
316 <li class="listitem"><p>changes in plugin state are reported through <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a> signal.</p></li>
317 <li class="listitem"><p>if the plugin needs to store information in persistent storage, it issues
318 <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a> signal. Later, that same information is provided as a
319 parameter to <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a>.</p></li>
320 </ul></div>
321 <div class="refsect1">
322 <a name="id-1.5.2.9.18"></a><h2>Example plugins</h2>
323 </div>
324 <p>See example plugin implementation here:</p>
325 <a class="ulink" href="https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins" target="_top">
326 https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins</a>.
327 <p>For examples of out of tree plugins, you can have a look at SASL or OAuth plugin
328 implementations:</p>
329 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl" target="_top">
330 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl</a>.
331 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa" target="_top">
332 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa</a>.
333
334 </div>
335 <div class="refsect1">
336 <a name="GSignondPlugin.functions_details"></a><h2>Functions</h2>
337 <div class="refsect2">
338 <a name="gsignond-plugin-cancel"></a><h3>gsignond_plugin_cancel ()</h3>
339 <pre class="programlisting"><span class="returnvalue">void</span>
340 gsignond_plugin_cancel (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>);</pre>
341 <p>This method cancels an ongoing authentication session. The plugin implementations
342 should issue a <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a> signal with <a class="link" href="gsignond-Errors.html#GSIGNOND-ERROR-SESSION-CANCELED:CAPS"><span class="type">GSIGNOND_ERROR_SESSION_CANCELED</span></a>
343 error, and prepare for a new authentication session.</p>
344 <div class="refsect3">
345 <a name="id-1.5.2.10.2.5"></a><h4>Parameters</h4>
346 <div class="informaltable"><table width="100%" border="0">
347 <colgroup>
348 <col width="150px" class="parameters_name">
349 <col class="parameters_description">
350 <col width="200px" class="parameters_annotations">
351 </colgroup>
352 <tbody><tr>
353 <td class="parameter_name"><p>self</p></td>
354 <td class="parameter_description"><p>plugin instance</p></td>
355 <td class="parameter_annotations"> </td>
356 </tr></tbody>
357 </table></div>
358 </div>
359 </div>
360 <hr>
361 <div class="refsect2">
362 <a name="gsignond-plugin-request-initial"></a><h3>gsignond_plugin_request_initial ()</h3>
363 <pre class="programlisting"><span class="returnvalue">void</span>
364 gsignond_plugin_request_initial (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
365                                  <em class="parameter"><code><span class="type">GSignondSessionData</span> *session_data</code></em>,
366                                  <em class="parameter"><code><span class="type">GSignondDictionary</span> *identity_method_cache</code></em>,
367                                  <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *mechanism</code></em>);</pre>
368 <p>This method starts a new authentication session.</p>
369 <div class="refsect3">
370 <a name="id-1.5.2.10.3.5"></a><h4>Parameters</h4>
371 <div class="informaltable"><table width="100%" border="0">
372 <colgroup>
373 <col width="150px" class="parameters_name">
374 <col class="parameters_description">
375 <col width="200px" class="parameters_annotations">
376 </colgroup>
377 <tbody>
378 <tr>
379 <td class="parameter_name"><p>self</p></td>
380 <td class="parameter_description"><p>plugin instance </p></td>
381 <td class="parameter_annotations"> </td>
382 </tr>
383 <tr>
384 <td class="parameter_name"><p>session_data</p></td>
385 <td class="parameter_description"><p>parameters for the session</p></td>
386 <td class="parameter_annotations"> </td>
387 </tr>
388 <tr>
389 <td class="parameter_name"><p>identity_method_cache</p></td>
390 <td class="parameter_description"><p>data from persistent storage, saved previously via
391 <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a> signal</p></td>
392 <td class="parameter_annotations"> </td>
393 </tr>
394 <tr>
395 <td class="parameter_name"><p>mechanism</p></td>
396 <td class="parameter_description"><p>mechanism to use for the authentication</p></td>
397 <td class="parameter_annotations"> </td>
398 </tr>
399 </tbody>
400 </table></div>
401 </div>
402 </div>
403 <hr>
404 <div class="refsect2">
405 <a name="gsignond-plugin-request"></a><h3>gsignond_plugin_request ()</h3>
406 <pre class="programlisting"><span class="returnvalue">void</span>
407 gsignond_plugin_request (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
408                          <em class="parameter"><code><span class="type">GSignondSessionData</span> *session_data</code></em>);</pre>
409 <p>This method provides the plugin with additional parameters for the session
410 after the plugin has asked for it via <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a> signal.</p>
411 <div class="refsect3">
412 <a name="id-1.5.2.10.4.5"></a><h4>Parameters</h4>
413 <div class="informaltable"><table width="100%" border="0">
414 <colgroup>
415 <col width="150px" class="parameters_name">
416 <col class="parameters_description">
417 <col width="200px" class="parameters_annotations">
418 </colgroup>
419 <tbody>
420 <tr>
421 <td class="parameter_name"><p>self</p></td>
422 <td class="parameter_description"><p>plugin instance </p></td>
423 <td class="parameter_annotations"> </td>
424 </tr>
425 <tr>
426 <td class="parameter_name"><p>session_data</p></td>
427 <td class="parameter_description"><p>additional parameters for the session</p></td>
428 <td class="parameter_annotations"> </td>
429 </tr>
430 </tbody>
431 </table></div>
432 </div>
433 </div>
434 <hr>
435 <div class="refsect2">
436 <a name="gsignond-plugin-user-action-finished"></a><h3>gsignond_plugin_user_action_finished ()</h3>
437 <pre class="programlisting"><span class="returnvalue">void</span>
438 gsignond_plugin_user_action_finished (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
439                                       <em class="parameter"><code><span class="type">GSignondSignonuiData</span> *ui_data</code></em>);</pre>
440 <p>This method provides the plugin with the results of UI interaction
441 after the plugin has asked for it via <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a> signal.</p>
442 <div class="refsect3">
443 <a name="id-1.5.2.10.5.5"></a><h4>Parameters</h4>
444 <div class="informaltable"><table width="100%" border="0">
445 <colgroup>
446 <col width="150px" class="parameters_name">
447 <col class="parameters_description">
448 <col width="200px" class="parameters_annotations">
449 </colgroup>
450 <tbody>
451 <tr>
452 <td class="parameter_name"><p>self</p></td>
453 <td class="parameter_description"><p>plugin instance </p></td>
454 <td class="parameter_annotations"> </td>
455 </tr>
456 <tr>
457 <td class="parameter_name"><p>ui_data</p></td>
458 <td class="parameter_description"><p>results of UI interaction</p></td>
459 <td class="parameter_annotations"> </td>
460 </tr>
461 </tbody>
462 </table></div>
463 </div>
464 </div>
465 <hr>
466 <div class="refsect2">
467 <a name="gsignond-plugin-refresh"></a><h3>gsignond_plugin_refresh ()</h3>
468 <pre class="programlisting"><span class="returnvalue">void</span>
469 gsignond_plugin_refresh (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
470                          <em class="parameter"><code><span class="type">GSignondSignonuiData</span> *ui_data</code></em>);</pre>
471 <p>This method asks the plugin to refresh the UI. The plugin responds with
472 <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a> signal.</p>
473 <div class="refsect3">
474 <a name="id-1.5.2.10.6.5"></a><h4>Parameters</h4>
475 <div class="informaltable"><table width="100%" border="0">
476 <colgroup>
477 <col width="150px" class="parameters_name">
478 <col class="parameters_description">
479 <col width="200px" class="parameters_annotations">
480 </colgroup>
481 <tbody>
482 <tr>
483 <td class="parameter_name"><p>self</p></td>
484 <td class="parameter_description"><p>plugin instance </p></td>
485 <td class="parameter_annotations"> </td>
486 </tr>
487 <tr>
488 <td class="parameter_name"><p>ui_data</p></td>
489 <td class="parameter_description"><p>UI refresh parameters</p></td>
490 <td class="parameter_annotations"> </td>
491 </tr>
492 </tbody>
493 </table></div>
494 </div>
495 </div>
496 <hr>
497 <div class="refsect2">
498 <a name="gsignond-plugin-response"></a><h3>gsignond_plugin_response ()</h3>
499 <pre class="programlisting"><span class="returnvalue">void</span>
500 gsignond_plugin_response (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
501                           <em class="parameter"><code><span class="type">GSignondSessionData</span> *session_data</code></em>);</pre>
502 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a>
503 signal. This method should not be used otherwise.</p>
504 <div class="refsect3">
505 <a name="id-1.5.2.10.7.5"></a><h4>Parameters</h4>
506 <div class="informaltable"><table width="100%" border="0">
507 <colgroup>
508 <col width="150px" class="parameters_name">
509 <col class="parameters_description">
510 <col width="200px" class="parameters_annotations">
511 </colgroup>
512 <tbody>
513 <tr>
514 <td class="parameter_name"><p>self</p></td>
515 <td class="parameter_description"><p>plugin instance</p></td>
516 <td class="parameter_annotations"> </td>
517 </tr>
518 <tr>
519 <td class="parameter_name"><p>session_data</p></td>
520 <td class="parameter_description"><p>session data</p></td>
521 <td class="parameter_annotations"> </td>
522 </tr>
523 </tbody>
524 </table></div>
525 </div>
526 </div>
527 <hr>
528 <div class="refsect2">
529 <a name="gsignond-plugin-response-final"></a><h3>gsignond_plugin_response_final ()</h3>
530 <pre class="programlisting"><span class="returnvalue">void</span>
531 gsignond_plugin_response_final (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
532                                 <em class="parameter"><code><span class="type">GSignondSessionData</span> *session_data</code></em>);</pre>
533 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal"><span class="type">“response-final”</span></a>
534 signal. This method should not be used otherwise.</p>
535 <div class="refsect3">
536 <a name="id-1.5.2.10.8.5"></a><h4>Parameters</h4>
537 <div class="informaltable"><table width="100%" border="0">
538 <colgroup>
539 <col width="150px" class="parameters_name">
540 <col class="parameters_description">
541 <col width="200px" class="parameters_annotations">
542 </colgroup>
543 <tbody>
544 <tr>
545 <td class="parameter_name"><p>self</p></td>
546 <td class="parameter_description"><p>plugin instance</p></td>
547 <td class="parameter_annotations"> </td>
548 </tr>
549 <tr>
550 <td class="parameter_name"><p>session_data</p></td>
551 <td class="parameter_description"><p>session data</p></td>
552 <td class="parameter_annotations"> </td>
553 </tr>
554 </tbody>
555 </table></div>
556 </div>
557 </div>
558 <hr>
559 <div class="refsect2">
560 <a name="gsignond-plugin-store"></a><h3>gsignond_plugin_store ()</h3>
561 <pre class="programlisting"><span class="returnvalue">void</span>
562 gsignond_plugin_store (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
563                        <em class="parameter"><code><span class="type">GSignondDictionary</span> *identity_method_cache</code></em>);</pre>
564 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a>
565 signal. This method should not be used otherwise.</p>
566 <div class="refsect3">
567 <a name="id-1.5.2.10.9.5"></a><h4>Parameters</h4>
568 <div class="informaltable"><table width="100%" border="0">
569 <colgroup>
570 <col width="150px" class="parameters_name">
571 <col class="parameters_description">
572 <col width="200px" class="parameters_annotations">
573 </colgroup>
574 <tbody>
575 <tr>
576 <td class="parameter_name"><p>self</p></td>
577 <td class="parameter_description"><p>plugin instance</p></td>
578 <td class="parameter_annotations"> </td>
579 </tr>
580 <tr>
581 <td class="parameter_name"><p>identity_method_cache</p></td>
582 <td class="parameter_description"><p>data to store</p></td>
583 <td class="parameter_annotations"> </td>
584 </tr>
585 </tbody>
586 </table></div>
587 </div>
588 </div>
589 <hr>
590 <div class="refsect2">
591 <a name="gsignond-plugin-error"></a><h3>gsignond_plugin_error ()</h3>
592 <pre class="programlisting"><span class="returnvalue">void</span>
593 gsignond_plugin_error (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
594                        <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>);</pre>
595 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a>
596 signal. This method should not be used otherwise.</p>
597 <div class="refsect3">
598 <a name="id-1.5.2.10.10.5"></a><h4>Parameters</h4>
599 <div class="informaltable"><table width="100%" border="0">
600 <colgroup>
601 <col width="150px" class="parameters_name">
602 <col class="parameters_description">
603 <col width="200px" class="parameters_annotations">
604 </colgroup>
605 <tbody>
606 <tr>
607 <td class="parameter_name"><p>self</p></td>
608 <td class="parameter_description"><p>plugin instance</p></td>
609 <td class="parameter_annotations"> </td>
610 </tr>
611 <tr>
612 <td class="parameter_name"><p>error</p></td>
613 <td class="parameter_description"><p>the error</p></td>
614 <td class="parameter_annotations"> </td>
615 </tr>
616 </tbody>
617 </table></div>
618 </div>
619 </div>
620 <hr>
621 <div class="refsect2">
622 <a name="gsignond-plugin-user-action-required"></a><h3>gsignond_plugin_user_action_required ()</h3>
623 <pre class="programlisting"><span class="returnvalue">void</span>
624 gsignond_plugin_user_action_required (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
625                                       <em class="parameter"><code><span class="type">GSignondSignonuiData</span> *ui_data</code></em>);</pre>
626 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a>
627 signal. This method should not be used otherwise.</p>
628 <div class="refsect3">
629 <a name="id-1.5.2.10.11.5"></a><h4>Parameters</h4>
630 <div class="informaltable"><table width="100%" border="0">
631 <colgroup>
632 <col width="150px" class="parameters_name">
633 <col class="parameters_description">
634 <col width="200px" class="parameters_annotations">
635 </colgroup>
636 <tbody>
637 <tr>
638 <td class="parameter_name"><p>self</p></td>
639 <td class="parameter_description"><p>plugin instance</p></td>
640 <td class="parameter_annotations"> </td>
641 </tr>
642 <tr>
643 <td class="parameter_name"><p>ui_data</p></td>
644 <td class="parameter_description"><p>UI data</p></td>
645 <td class="parameter_annotations"> </td>
646 </tr>
647 </tbody>
648 </table></div>
649 </div>
650 </div>
651 <hr>
652 <div class="refsect2">
653 <a name="gsignond-plugin-refreshed"></a><h3>gsignond_plugin_refreshed ()</h3>
654 <pre class="programlisting"><span class="returnvalue">void</span>
655 gsignond_plugin_refreshed (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
656                            <em class="parameter"><code><span class="type">GSignondSignonuiData</span> *ui_data</code></em>);</pre>
657 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a>
658 signal. This method should not be used otherwise.</p>
659 <div class="refsect3">
660 <a name="id-1.5.2.10.12.5"></a><h4>Parameters</h4>
661 <div class="informaltable"><table width="100%" border="0">
662 <colgroup>
663 <col width="150px" class="parameters_name">
664 <col class="parameters_description">
665 <col width="200px" class="parameters_annotations">
666 </colgroup>
667 <tbody>
668 <tr>
669 <td class="parameter_name"><p>self</p></td>
670 <td class="parameter_description"><p>plugin instance</p></td>
671 <td class="parameter_annotations"> </td>
672 </tr>
673 <tr>
674 <td class="parameter_name"><p>ui_data</p></td>
675 <td class="parameter_description"><p>UI data</p></td>
676 <td class="parameter_annotations"> </td>
677 </tr>
678 </tbody>
679 </table></div>
680 </div>
681 </div>
682 <hr>
683 <div class="refsect2">
684 <a name="gsignond-plugin-status-changed"></a><h3>gsignond_plugin_status_changed ()</h3>
685 <pre class="programlisting"><span class="returnvalue">void</span>
686 gsignond_plugin_status_changed (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
687                                 <em class="parameter"><code><a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
688                                 <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *message</code></em>);</pre>
689 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a>
690 signal. This method should not be used otherwise.</p>
691 <div class="refsect3">
692 <a name="id-1.5.2.10.13.5"></a><h4>Parameters</h4>
693 <div class="informaltable"><table width="100%" border="0">
694 <colgroup>
695 <col width="150px" class="parameters_name">
696 <col class="parameters_description">
697 <col width="200px" class="parameters_annotations">
698 </colgroup>
699 <tbody>
700 <tr>
701 <td class="parameter_name"><p>self</p></td>
702 <td class="parameter_description"><p>plugin instance</p></td>
703 <td class="parameter_annotations"> </td>
704 </tr>
705 <tr>
706 <td class="parameter_name"><p>state</p></td>
707 <td class="parameter_description"><p>the new state</p></td>
708 <td class="parameter_annotations"> </td>
709 </tr>
710 <tr>
711 <td class="parameter_name"><p>message</p></td>
712 <td class="parameter_description"><p>the message</p></td>
713 <td class="parameter_annotations"> </td>
714 </tr>
715 </tbody>
716 </table></div>
717 </div>
718 </div>
719 </div>
720 <div class="refsect1">
721 <a name="GSignondPlugin.other_details"></a><h2>Types and Values</h2>
722 <div class="refsect2">
723 <a name="GSignondPluginState"></a><h3>enum GSignondPluginState</h3>
724 <p>The plugin provides state updates by emitting <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a>
725 signal with this enum and a string describing what happened.</p>
726 <div class="refsect3">
727 <a name="id-1.5.2.11.2.4"></a><h4>Members</h4>
728 <div class="informaltable"><table width="100%" border="0">
729 <colgroup>
730 <col width="300px" class="enum_members_name">
731 <col class="enum_members_description">
732 <col width="200px" class="enum_members_annotations">
733 </colgroup>
734 <tbody>
735 <tr>
736 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-NONE:CAPS"></a>GSIGNOND_PLUGIN_STATE_NONE</p></td>
737 <td class="enum_member_description">
738 <p>State unknown</p>
739 </td>
740 <td class="enum_member_annotations"> </td>
741 </tr>
742 <tr>
743 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-RESOLVING:CAPS"></a>GSIGNOND_PLUGIN_STATE_RESOLVING</p></td>
744 <td class="enum_member_description">
745 <p>Resolving remote server host name</p>
746 </td>
747 <td class="enum_member_annotations"> </td>
748 </tr>
749 <tr>
750 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-CONNECTING:CAPS"></a>GSIGNOND_PLUGIN_STATE_CONNECTING</p></td>
751 <td class="enum_member_description">
752 <p>Connecting to remote server</p>
753 </td>
754 <td class="enum_member_annotations"> </td>
755 </tr>
756 <tr>
757 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-SENDING-DATA:CAPS"></a>GSIGNOND_PLUGIN_STATE_SENDING_DATA</p></td>
758 <td class="enum_member_description">
759 <p>Sending data to remote server</p>
760 </td>
761 <td class="enum_member_annotations"> </td>
762 </tr>
763 <tr>
764 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-WAITING:CAPS"></a>GSIGNOND_PLUGIN_STATE_WAITING</p></td>
765 <td class="enum_member_description">
766 <p>Waiting for reply from remote server</p>
767 </td>
768 <td class="enum_member_annotations"> </td>
769 </tr>
770 <tr>
771 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-USER-PENDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_USER_PENDING</p></td>
772 <td class="enum_member_description">
773 <p>Waiting for response from user</p>
774 </td>
775 <td class="enum_member_annotations"> </td>
776 </tr>
777 <tr>
778 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-REFRESHING:CAPS"></a>GSIGNOND_PLUGIN_STATE_REFRESHING</p></td>
779 <td class="enum_member_description">
780 <p>Refreshing ui request</p>
781 </td>
782 <td class="enum_member_annotations"> </td>
783 </tr>
784 <tr>
785 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-PROCESS-PENDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_PROCESS_PENDING</p></td>
786 <td class="enum_member_description">
787 <p>Request has been queued</p>
788 </td>
789 <td class="enum_member_annotations"> </td>
790 </tr>
791 <tr>
792 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-STARTED:CAPS"></a>GSIGNOND_PLUGIN_STATE_STARTED</p></td>
793 <td class="enum_member_description">
794 <p>Request has been dequeued</p>
795 </td>
796 <td class="enum_member_annotations"> </td>
797 </tr>
798 <tr>
799 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-CANCELING:CAPS"></a>GSIGNOND_PLUGIN_STATE_CANCELING</p></td>
800 <td class="enum_member_description">
801 <p>Canceling current process</p>
802 </td>
803 <td class="enum_member_annotations"> </td>
804 </tr>
805 <tr>
806 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-DONE:CAPS"></a>GSIGNOND_PLUGIN_STATE_DONE</p></td>
807 <td class="enum_member_description">
808 <p>Process is finished</p>
809 </td>
810 <td class="enum_member_annotations"> </td>
811 </tr>
812 <tr>
813 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-HOLDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_HOLDING</p></td>
814 <td class="enum_member_description">
815 <p>Holding long non-expired token</p>
816 </td>
817 <td class="enum_member_annotations"> </td>
818 </tr>
819 </tbody>
820 </table></div>
821 </div>
822 </div>
823 <hr>
824 <div class="refsect2">
825 <a name="GSignondPluginInterface"></a><h3>struct GSignondPluginInterface</h3>
826 <pre class="programlisting">struct GSignondPluginInterface {
827     GTypeInterface parent;
828
829     void (*cancel) (GSignondPlugin *self);
830     void (*request_initial) (GSignondPlugin *self, 
831                      GSignondSessionData *session_data,
832                      GSignondDictionary *identity_method_cache, 
833                      const gchar *mechanism);
834     void (*request) (GSignondPlugin *self, 
835                      GSignondSessionData *session_data);
836     void (*user_action_finished) (GSignondPlugin *self, 
837                                   GSignondSignonuiData *session_data);
838     void (*refresh) (GSignondPlugin *self, 
839                      GSignondSignonuiData *session_data);
840 };
841 </pre>
842 <p><a class="link" href="GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface"><span class="type">GSignondPluginInterface</span></a> interface containing pointers to methods that all
843 plugin implementations should provide.</p>
844 <div class="refsect3">
845 <a name="id-1.5.2.11.3.5"></a><h4>Members</h4>
846 <div class="informaltable"><table width="100%" border="0">
847 <colgroup>
848 <col width="300px" class="struct_members_name">
849 <col class="struct_members_description">
850 <col width="200px" class="struct_members_annotations">
851 </colgroup>
852 <tbody>
853 <tr>
854 <td class="struct_member_name"><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GTypeInterface"><span class="type">GTypeInterface</span></a> <em class="structfield"><code><a name="GSignondPluginInterface.parent"></a>parent</code></em>;</p></td>
855 <td class="struct_member_description"><p>parent interface type.</p></td>
856 <td class="struct_member_annotations"> </td>
857 </tr>
858 <tr>
859 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.cancel"></a>cancel</code></em> ()</p></td>
860 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></td>
861 <td class="struct_member_annotations"> </td>
862 </tr>
863 <tr>
864 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.request-initial"></a>request_initial</code></em> ()</p></td>
865 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a></p></td>
866 <td class="struct_member_annotations"> </td>
867 </tr>
868 <tr>
869 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.request"></a>request</code></em> ()</p></td>
870 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a></p></td>
871 <td class="struct_member_annotations"> </td>
872 </tr>
873 <tr>
874 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.user-action-finished"></a>user_action_finished</code></em> ()</p></td>
875 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a></p></td>
876 <td class="struct_member_annotations"> </td>
877 </tr>
878 <tr>
879 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.refresh"></a>refresh</code></em> ()</p></td>
880 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a></p></td>
881 <td class="struct_member_annotations"> </td>
882 </tr>
883 </tbody>
884 </table></div>
885 </div>
886 </div>
887 </div>
888 <div class="refsect1">
889 <a name="GSignondPlugin.property-details"></a><h2>Property Details</h2>
890 <div class="refsect2">
891 <a name="GSignondPlugin--mechanisms"></a><h3>The <code class="literal">“mechanisms”</code> property</h3>
892 <pre class="programlisting">  “mechanisms”               <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#GStrv"><span class="type">GStrv</span></a></pre>
893 <p>This property holds a list of authentication mechanisms that the plugin
894 implements, all specified within the authentication method. For example,
895 OAuth plugin could implement "oauth1" and "oauth2" mechanisms.</p>
896 <p>Flags: Read</p>
897 </div>
898 <hr>
899 <div class="refsect2">
900 <a name="GSignondPlugin--type"></a><h3>The <code class="literal">“type”</code> property</h3>
901 <pre class="programlisting">  “type”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
902 <p>This property holds a plugin type, or authentication method it implements
903 (for example "oauth" or "sasl").</p>
904 <p>Flags: Read</p>
905 <p>Default value: "none"</p>
906 </div>
907 </div>
908 <div class="refsect1">
909 <a name="GSignondPlugin.signal-details"></a><h2>Signal Details</h2>
910 <div class="refsect2">
911 <a name="GSignondPlugin-error"></a><h3>The <code class="literal">“error”</code> signal</h3>
912 <pre class="programlisting"><span class="returnvalue">void</span>
913 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
914                <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>         *error,
915                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
916 <p>This signal is issued by the plugin when an error has occured, or the
917 plugin otherwise has a reason to cancel the authentication session. The
918 <em class="parameter"><code>error</code></em>
919  should be specified according to </p>
920 <a class="link" href="gsignond-Errors.html" title="Errors">GSignond errors.</a><div class="refsect3">
921 <a name="id-1.5.2.13.2.6"></a><h4>Parameters</h4>
922 <div class="informaltable"><table width="100%" border="0">
923 <colgroup>
924 <col width="150px" class="parameters_name">
925 <col class="parameters_description">
926 <col width="200px" class="parameters_annotations">
927 </colgroup>
928 <tbody>
929 <tr>
930 <td class="parameter_name"><p>plugin</p></td>
931 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
932 <td class="parameter_annotations"> </td>
933 </tr>
934 <tr>
935 <td class="parameter_name"><p>error</p></td>
936 <td class="parameter_description"><p>the details of the error</p></td>
937 <td class="parameter_annotations"> </td>
938 </tr>
939 <tr>
940 <td class="parameter_name"><p>user_data</p></td>
941 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
942 <td class="parameter_annotations"> </td>
943 </tr>
944 </tbody>
945 </table></div>
946 </div>
947 <p>Flags: Run First</p>
948 </div>
949 <hr>
950 <div class="refsect2">
951 <a name="GSignondPlugin-refreshed"></a><h3>The <code class="literal">“refreshed”</code> signal</h3>
952 <pre class="programlisting"><span class="returnvalue">void</span>
953 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
954                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *ui_data,
955                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
956 <p>This signal is issued by the plugin when the UI interaction is ongoing
957 and the UI needs to be refreshed. This can be used for example to update
958 captcha image in the UI.</p>
959 <div class="refsect3">
960 <a name="id-1.5.2.13.3.5"></a><h4>Parameters</h4>
961 <div class="informaltable"><table width="100%" border="0">
962 <colgroup>
963 <col width="150px" class="parameters_name">
964 <col class="parameters_description">
965 <col width="200px" class="parameters_annotations">
966 </colgroup>
967 <tbody>
968 <tr>
969 <td class="parameter_name"><p>plugin</p></td>
970 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
971 <td class="parameter_annotations"> </td>
972 </tr>
973 <tr>
974 <td class="parameter_name"><p>ui_data</p></td>
975 <td class="parameter_description"><p>parameters for UI refresh</p></td>
976 <td class="parameter_annotations"> </td>
977 </tr>
978 <tr>
979 <td class="parameter_name"><p>user_data</p></td>
980 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
981 <td class="parameter_annotations"> </td>
982 </tr>
983 </tbody>
984 </table></div>
985 </div>
986 <p>Flags: Run First</p>
987 </div>
988 <hr>
989 <div class="refsect2">
990 <a name="GSignondPlugin-response"></a><h3>The <code class="literal">“response”</code> signal</h3>
991 <pre class="programlisting"><span class="returnvalue">void</span>
992 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
993                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *session_data,
994                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
995 <p>This signal is issued by the plugin when it wants to provide an intermediate
996 response to the application or needs additional information from the application.</p>
997 <p>After issuing this signal the plugin expects a <a class="link" href="GSignondPlugin.html#gsignond-plugin-response" title="gsignond_plugin_response ()"><code class="function">gsignond_plugin_response()</code></a> call.</p>
998 <div class="refsect3">
999 <a name="id-1.5.2.13.4.6"></a><h4>Parameters</h4>
1000 <div class="informaltable"><table width="100%" border="0">
1001 <colgroup>
1002 <col width="150px" class="parameters_name">
1003 <col class="parameters_description">
1004 <col width="200px" class="parameters_annotations">
1005 </colgroup>
1006 <tbody>
1007 <tr>
1008 <td class="parameter_name"><p>plugin</p></td>
1009 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1010 <td class="parameter_annotations"> </td>
1011 </tr>
1012 <tr>
1013 <td class="parameter_name"><p>session_data</p></td>
1014 <td class="parameter_description"><p>a <span class="type">GSignondSessionData</span> containing signal parameters</p></td>
1015 <td class="parameter_annotations"> </td>
1016 </tr>
1017 <tr>
1018 <td class="parameter_name"><p>user_data</p></td>
1019 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1020 <td class="parameter_annotations"> </td>
1021 </tr>
1022 </tbody>
1023 </table></div>
1024 </div>
1025 <p>Flags: Run First</p>
1026 </div>
1027 <hr>
1028 <div class="refsect2">
1029 <a name="GSignondPlugin-response-final"></a><h3>The <code class="literal">“response-final”</code> signal</h3>
1030 <pre class="programlisting"><span class="returnvalue">void</span>
1031 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1032                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *session_data,
1033                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1034 <p>This signal is issued by the plugin when it has completed the authentication
1035 sequence and is used to provide the final response to the application.</p>
1036 <p>After issuing this signal the plugin is idle and is ready for a new
1037 authentication session.</p>
1038 <div class="refsect3">
1039 <a name="id-1.5.2.13.5.6"></a><h4>Parameters</h4>
1040 <div class="informaltable"><table width="100%" border="0">
1041 <colgroup>
1042 <col width="150px" class="parameters_name">
1043 <col class="parameters_description">
1044 <col width="200px" class="parameters_annotations">
1045 </colgroup>
1046 <tbody>
1047 <tr>
1048 <td class="parameter_name"><p>plugin</p></td>
1049 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1050 <td class="parameter_annotations"> </td>
1051 </tr>
1052 <tr>
1053 <td class="parameter_name"><p>session_data</p></td>
1054 <td class="parameter_description"><p>a <span class="type">GSignondSessionData</span> containing signal parameters</p></td>
1055 <td class="parameter_annotations"> </td>
1056 </tr>
1057 <tr>
1058 <td class="parameter_name"><p>user_data</p></td>
1059 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1060 <td class="parameter_annotations"> </td>
1061 </tr>
1062 </tbody>
1063 </table></div>
1064 </div>
1065 <p>Flags: Run First</p>
1066 </div>
1067 <hr>
1068 <div class="refsect2">
1069 <a name="GSignondPlugin-status-changed"></a><h3>The <code class="literal">“status-changed”</code> signal</h3>
1070 <pre class="programlisting"><span class="returnvalue">void</span>
1071 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a>     *plugin,
1072                <a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state,
1073                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>              *message,
1074                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
1075 <p>This signal is issued by the plugin when plugin state has changed. This
1076 can be used by applications to report authentication progress.</p>
1077 <div class="refsect3">
1078 <a name="id-1.5.2.13.6.5"></a><h4>Parameters</h4>
1079 <div class="informaltable"><table width="100%" border="0">
1080 <colgroup>
1081 <col width="150px" class="parameters_name">
1082 <col class="parameters_description">
1083 <col width="200px" class="parameters_annotations">
1084 </colgroup>
1085 <tbody>
1086 <tr>
1087 <td class="parameter_name"><p>plugin</p></td>
1088 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1089 <td class="parameter_annotations"> </td>
1090 </tr>
1091 <tr>
1092 <td class="parameter_name"><p>state</p></td>
1093 <td class="parameter_description"><p>the plugin state</p></td>
1094 <td class="parameter_annotations"> </td>
1095 </tr>
1096 <tr>
1097 <td class="parameter_name"><p>message</p></td>
1098 <td class="parameter_description"><p>the message that accompanies the state change</p></td>
1099 <td class="parameter_annotations"> </td>
1100 </tr>
1101 <tr>
1102 <td class="parameter_name"><p>user_data</p></td>
1103 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1104 <td class="parameter_annotations"> </td>
1105 </tr>
1106 </tbody>
1107 </table></div>
1108 </div>
1109 <p>Flags: Run First</p>
1110 </div>
1111 <hr>
1112 <div class="refsect2">
1113 <a name="GSignondPlugin-store"></a><h3>The <code class="literal">“store”</code> signal</h3>
1114 <pre class="programlisting"><span class="returnvalue">void</span>
1115 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1116                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *data,
1117                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1118 <p>This signal is issued by the plugin when it has data to store in persistant
1119 storage. The same data would later be provided to plugin via
1120
1121 gsignond_plugin_request_initial <em class="parameter"><code>identity_method_cache</code></em>
1122  parameter.</p>
1123 <div class="refsect3">
1124 <a name="id-1.5.2.13.7.5"></a><h4>Parameters</h4>
1125 <div class="informaltable"><table width="100%" border="0">
1126 <colgroup>
1127 <col width="150px" class="parameters_name">
1128 <col class="parameters_description">
1129 <col width="200px" class="parameters_annotations">
1130 </colgroup>
1131 <tbody>
1132 <tr>
1133 <td class="parameter_name"><p>plugin</p></td>
1134 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1135 <td class="parameter_annotations"> </td>
1136 </tr>
1137 <tr>
1138 <td class="parameter_name"><p>data</p></td>
1139 <td class="parameter_description"><p>a <span class="type">GSignondDictionary</span> containing data to place in persistent storage</p></td>
1140 <td class="parameter_annotations"> </td>
1141 </tr>
1142 <tr>
1143 <td class="parameter_name"><p>user_data</p></td>
1144 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1145 <td class="parameter_annotations"> </td>
1146 </tr>
1147 </tbody>
1148 </table></div>
1149 </div>
1150 <p>Flags: Run First</p>
1151 </div>
1152 <hr>
1153 <div class="refsect2">
1154 <a name="GSignondPlugin-user-action-required"></a><h3>The <code class="literal">“user-action-required”</code> signal</h3>
1155 <pre class="programlisting"><span class="returnvalue">void</span>
1156 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1157                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *ui_data,
1158                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1159 <p>This signal is issued by the plugin when it needs a UI interaction with
1160 the user to happen. When the interaction is complete, <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a>
1161 should be issued.</p>
1162 <div class="refsect3">
1163 <a name="id-1.5.2.13.8.5"></a><h4>Parameters</h4>
1164 <div class="informaltable"><table width="100%" border="0">
1165 <colgroup>
1166 <col width="150px" class="parameters_name">
1167 <col class="parameters_description">
1168 <col width="200px" class="parameters_annotations">
1169 </colgroup>
1170 <tbody>
1171 <tr>
1172 <td class="parameter_name"><p>plugin</p></td>
1173 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1174 <td class="parameter_annotations"> </td>
1175 </tr>
1176 <tr>
1177 <td class="parameter_name"><p>ui_data</p></td>
1178 <td class="parameter_description"><p>parameters for UI interaction</p></td>
1179 <td class="parameter_annotations"> </td>
1180 </tr>
1181 <tr>
1182 <td class="parameter_name"><p>user_data</p></td>
1183 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1184 <td class="parameter_annotations"> </td>
1185 </tr>
1186 </tbody>
1187 </table></div>
1188 </div>
1189 <p>Flags: Run First</p>
1190 </div>
1191 </div>
1192 </div>
1193 <div class="footer">
1194 <hr>
1195           Generated by GTK-Doc V1.20</div>
1196 </body>
1197 </html>