1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>GSignondPlugin</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="gsignond API Reference Manual">
8 <link rel="up" href="ch03.html" title="GSignond API for writing authentication plugins">
9 <link rel="prev" href="ch03.html" title="GSignond API for writing authentication plugins">
10 <link rel="next" href="gsignond-GSignondDictionary.html" title="GSignondDictionary">
11 <meta name="generator" content="GTK-Doc V1.19.1 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
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">
17 <a href="#" class="shortcut">Top</a>
19 <a href="#gsignond-GSignondPlugin.description" class="shortcut">Description</a>
21 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
22 <td><a accesskey="u" href="ch03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
23 <td><a accesskey="p" href="ch03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
24 <td><a accesskey="n" href="gsignond-GSignondDictionary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
26 <div class="refentry">
27 <a name="gsignond-GSignondPlugin"></a><div class="titlepage"></div>
28 <div class="refnamediv"><table width="100%"><tr>
30 <h2><span class="refentrytitle"><a name="gsignond-GSignondPlugin.top_of_page"></a>GSignondPlugin</span></h2>
31 <p>GSignondPlugin — an interface for implementing authentication plugins</p>
33 <td valign="top" align="right"></td>
35 <div class="refsynopsisdiv">
36 <a name="gsignond-GSignondPlugin.synopsis"></a><h2>Synopsis</h2>
37 <pre class="synopsis">
38 #include <gsignond/gsignond-plugin-interface.h>
40 struct <a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface">GSignondPluginInterface</a>;
41 enum <a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState">GSignondPluginState</a>;
42 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()">gsignond_plugin_cancel</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>);
43 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-error" title="gsignond_plugin_error ()">gsignond_plugin_error</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
44 <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>);
45 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()">gsignond_plugin_refresh</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
46 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
47 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-refreshed" title="gsignond_plugin_refreshed ()">gsignond_plugin_refreshed</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
48 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
49 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()">gsignond_plugin_request</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
50 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
51 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()">gsignond_plugin_request_initial</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
52 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>,
53 <em class="parameter"><code><a class="link" href="gsignond-GSignondDictionary.html#GSignondDictionary" title="GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>,
54 <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>);
55 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-response" title="gsignond_plugin_response ()">gsignond_plugin_response</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
56 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
57 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-response-final" title="gsignond_plugin_response_final ()">gsignond_plugin_response_final</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
58 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
59 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-status-changed" title="gsignond_plugin_status_changed ()">gsignond_plugin_status_changed</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
60 <em class="parameter"><code><a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
61 <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>);
62 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-store" title="gsignond_plugin_store ()">gsignond_plugin_store</a> (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
63 <em class="parameter"><code><a class="link" href="gsignond-GSignondDictionary.html#GSignondDictionary" title="GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>);
64 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()">gsignond_plugin_user_action_finished</a>
65 (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
66 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
67 <span class="returnvalue">void</span> <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-user-action-required" title="gsignond_plugin_user_action_required ()">gsignond_plugin_user_action_required</a>
68 (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
69 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
72 <div class="refsect1">
73 <a name="gsignond-GSignondPlugin.description"></a><h2>Description</h2>
75 <span class="type">GSignondPlugin</span> is an interface for implementing authentication plugins.
78 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
81 a) declare the type as follows:
85 <div class="informalexample">
86 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
89 <td class="listing_lines" align="right"><pre>1
93 <td class="listing_code"><pre class="programlisting">G_DEFINE_TYPE_WITH_CODE (GSignondPasswordPlugin, gsignond_password_plugin,
95 G_IMPLEMENT_INTERFACE (GSIGNOND_TYPE_PLUGIN,
96 gsignond_plugin_interface_init));</pre></td>
105 b) implement <code class="function">gsignond_plugin_interface_init</code> as follows:
109 <div class="informalexample">
110 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
113 <td class="listing_lines" align="right"><pre>1
122 <td class="listing_code"><pre class="programlisting"><span class="type">static</span> <span class="type">void</span>
123 gsignond_plugin_interface_init (GSignondPluginInterface *iface)
125 iface->cancel = gsignond_password_plugin_cancel;
126 iface->request_initial = gsignond_password_plugin_request_initial;
127 iface->request = gsignond_password_plugin_request;
128 iface->user_action_finished = gsignond_password_plugin_user_action_finished;
129 iface->refresh = gsignond_password_plugin_refresh;
139 where the <code class="function">gsignond_password_plugin_cancel</code> etc. are specific implementations of
140 plugin interface methods that every plugin must provide (see below for when
141 and how they're used by the daemon).
144 c) override <span class="type">"type"</span> and <span class="type">"mechanisms"</span> property
145 implementations in the plugin class constructor like this:
149 <div class="informalexample">
150 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
153 <td class="listing_lines" align="right"><pre>1
165 <td class="listing_code"><pre class="programlisting"><span class="type">static</span> <span class="type">void</span>
166 gsignond_password_plugin_class_init (GSignondPasswordPluginClass *klass)
168 GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
170 gobject_class->set_property = gsignond_password_plugin_set_property;
171 gobject_class->get_property = gsignond_password_plugin_get_property;
173 g_object_class_override_property (gobject_class, PROP_TYPE, <span class="number">"type"</span>);
174 g_object_class_override_property (gobject_class, PROP_MECHANISMS,
175 <span class="number">"mechanisms"</span>);
183 (naturally, plugin's property setter should ignore attempts to set these properties,
184 and plugin's property getter should provide their values when asked)
188 <div class="refsect1">
189 <a name="idp7924464"></a><h2>The plugin API</h2>
194 Plugins implement authentication sessions which are controlled through the
195 plugin API. Authentication sessions follow one another so there is only one active
199 The plugin API is a set of methods and signals that should be used in a specific
204 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
205 <li class="listitem"><p>successful authentication session begins with <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a> and ends
206 with the plugin issuing a <span class="type">"response-final"</span> signal</p></li>
207 <li class="listitem"><p>at any point the application can cancel an active session with
208 <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></li>
209 <li class="listitem"><p>at any point the plugin can cancel an active session by issuing <span class="type">"error"</span>
210 signal, which also provides some details about the cancellation reason.</p></li>
211 <li class="listitem"><p>if a session is active, and the plugin has an intermediate response or needs
212 additional information, it issues <span class="type">"response"</span> signal, which the
213 application should respond to with <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a> method. This can
214 happen more than once.</p></li>
215 <li class="listitem"><p>if the plugin needs to launch UI interaction with the user, it's issuing
216 <span class="type">"user-action-required"</span> signal, which the application should
217 follow up with <a class="link" href="gsignond-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
218 more than once as well.</p></li>
219 <li class="listitem"><p>if, during an active UI session, the application needs a UI refresh
220 (for example, to fetch a new captcha image), it's
221 requested from the plugin with <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a> method, followed
222 by the plugin's response via <span class="type">"refreshed"</span> signal. This can happen
223 more than once.</p></li>
224 <li class="listitem"><p>changes in plugin state are reported through <span class="type">"status-changed"</span> signal.</p></li>
225 <li class="listitem"><p>if the plugin needs to store information in persistent storage, it issues
226 <span class="type">"store"</span> signal. Later, that same information is provided as a
227 parameter to <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a>.</p></li>
233 <div class="refsect1">
234 <a name="idp12313904"></a><h2>Example plugins</h2>
239 See example plugin implementation here:
240 <a class="ulink" href="https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins" target="_top">
241 https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins</a>.
244 For examples of out of tree plugins, you can have a look at SASL or OAuth plugin
246 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl" target="_top">
247 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl</a>.
250 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa" target="_top">
251 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa</a>.
254 <div class="refsect1">
255 <a name="gsignond-GSignondPlugin.details"></a><h2>Details</h2>
256 <div class="refsect2">
257 <a name="GSignondPluginInterface"></a><h3>struct GSignondPluginInterface</h3>
258 <pre class="programlisting">struct GSignondPluginInterface {
259 GTypeInterface parent;
261 void (*cancel) (GSignondPlugin *self);
262 void (*request_initial) (GSignondPlugin *self,
263 GSignondSessionData *session_data,
264 GSignondDictionary *identity_method_cache,
265 const gchar *mechanism);
266 void (*request) (GSignondPlugin *self,
267 GSignondSessionData *session_data);
268 void (*user_action_finished) (GSignondPlugin *self,
269 GSignondSignonuiData *session_data);
270 void (*refresh) (GSignondPlugin *self,
271 GSignondSignonuiData *session_data);
275 <a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface"><span class="type">GSignondPluginInterface</span></a> interface containing pointers to methods that all
276 plugin implementations should provide.
278 <div class="variablelist"><table border="0">
279 <col align="left" valign="top">
282 <td><p><span class="term"><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>;</span></p></td>
283 <td>parent interface type.</td>
286 <td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.cancel"></a>cancel</code></em> ()</span></p></td>
287 <td>implementation of <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a>
291 <td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.request-initial"></a>request_initial</code></em> ()</span></p></td>
292 <td>implementation of <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a>
296 <td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.request"></a>request</code></em> ()</span></p></td>
297 <td>implementation of <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a>
301 <td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.user-action-finished"></a>user_action_finished</code></em> ()</span></p></td>
302 <td>implementation of <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a>
306 <td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.refresh"></a>refresh</code></em> ()</span></p></td>
307 <td>implementation of <a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a>
314 <div class="refsect2">
315 <a name="GSignondPluginState"></a><h3>enum GSignondPluginState</h3>
316 <pre class="programlisting">typedef enum {
317 GSIGNOND_PLUGIN_STATE_NONE = 0,
318 GSIGNOND_PLUGIN_STATE_RESOLVING,
319 GSIGNOND_PLUGIN_STATE_CONNECTING,
320 GSIGNOND_PLUGIN_STATE_SENDING_DATA,
321 GSIGNOND_PLUGIN_STATE_WAITING,
322 GSIGNOND_PLUGIN_STATE_USER_PENDING,
323 GSIGNOND_PLUGIN_STATE_REFRESHING,
324 GSIGNOND_PLUGIN_STATE_PROCESS_PENDING,
325 GSIGNOND_PLUGIN_STATE_STARTED,
326 GSIGNOND_PLUGIN_STATE_CANCELING,
327 GSIGNOND_PLUGIN_STATE_DONE,
328 GSIGNOND_PLUGIN_STATE_HOLDING,
329 } GSignondPluginState;
332 The plugin provides state updates by emitting <span class="type">"status-changed"</span>
333 signal with this enum and a string describing what happened.
335 <div class="variablelist"><table border="0">
336 <col align="left" valign="top">
339 <td><p><a name="GSIGNOND-PLUGIN-STATE-NONE:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_NONE</code></span></p></td>
344 <td><p><a name="GSIGNOND-PLUGIN-STATE-RESOLVING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_RESOLVING</code></span></p></td>
345 <td>Resolving remote server host name
349 <td><p><a name="GSIGNOND-PLUGIN-STATE-CONNECTING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_CONNECTING</code></span></p></td>
350 <td>Connecting to remote server
354 <td><p><a name="GSIGNOND-PLUGIN-STATE-SENDING-DATA:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_SENDING_DATA</code></span></p></td>
355 <td>Sending data to remote server
359 <td><p><a name="GSIGNOND-PLUGIN-STATE-WAITING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_WAITING</code></span></p></td>
360 <td>Waiting for reply from remote server
364 <td><p><a name="GSIGNOND-PLUGIN-STATE-USER-PENDING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_USER_PENDING</code></span></p></td>
365 <td>Waiting for response from user
369 <td><p><a name="GSIGNOND-PLUGIN-STATE-REFRESHING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_REFRESHING</code></span></p></td>
370 <td>Refreshing ui request
374 <td><p><a name="GSIGNOND-PLUGIN-STATE-PROCESS-PENDING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_PROCESS_PENDING</code></span></p></td>
375 <td>Request has been queued
379 <td><p><a name="GSIGNOND-PLUGIN-STATE-STARTED:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_STARTED</code></span></p></td>
380 <td>Request has been dequeued
384 <td><p><a name="GSIGNOND-PLUGIN-STATE-CANCELING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_CANCELING</code></span></p></td>
385 <td>Canceling current process
389 <td><p><a name="GSIGNOND-PLUGIN-STATE-DONE:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_DONE</code></span></p></td>
390 <td>Process is finished
394 <td><p><a name="GSIGNOND-PLUGIN-STATE-HOLDING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_HOLDING</code></span></p></td>
395 <td>Holding long non-expired token
402 <div class="refsect2">
403 <a name="gsignond-plugin-cancel"></a><h3>gsignond_plugin_cancel ()</h3>
404 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_cancel (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>);</pre>
406 This method cancels an ongoing authentication session. The plugin implementations
407 should issue a <span class="type">"error"</span> signal with <a class="link" href="gsignond-Errors.html#GSIGNOND-ERROR-SESSION-CANCELED:CAPS"><span class="type">GSIGNOND_ERROR_SESSION_CANCELED</span></a>
408 error, and prepare for a new authentication session.
410 <div class="variablelist"><table border="0">
411 <col align="left" valign="top">
413 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
414 <td>plugin instance</td>
419 <div class="refsect2">
420 <a name="gsignond-plugin-error"></a><h3>gsignond_plugin_error ()</h3>
421 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_error (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
422 <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>
424 Plugin implementations should use this to issue <span class="type">"error"</span>
425 signal. This method should not be used otherwise.
427 <div class="variablelist"><table border="0">
428 <col align="left" valign="top">
431 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
432 <td>plugin instance</td>
435 <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
442 <div class="refsect2">
443 <a name="gsignond-plugin-refresh"></a><h3>gsignond_plugin_refresh ()</h3>
444 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_refresh (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
445 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
447 This method asks the plugin to refresh the UI. The plugin responds with
448 <span class="type">"refreshed"</span> signal.
450 <div class="variablelist"><table border="0">
451 <col align="left" valign="top">
454 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
455 <td>plugin instance</td>
458 <td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
459 <td>UI refresh parameters</td>
465 <div class="refsect2">
466 <a name="gsignond-plugin-refreshed"></a><h3>gsignond_plugin_refreshed ()</h3>
467 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_refreshed (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
468 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
470 Plugin implementations should use this to issue <span class="type">"refreshed"</span>
471 signal. This method should not be used otherwise.
473 <div class="variablelist"><table border="0">
474 <col align="left" valign="top">
477 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
478 <td>plugin instance</td>
481 <td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
488 <div class="refsect2">
489 <a name="gsignond-plugin-request"></a><h3>gsignond_plugin_request ()</h3>
490 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_request (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
491 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
493 This method provides the plugin with additional parameters for the session
494 after the plugin has asked for it via <span class="type">"response"</span> signal.
496 <div class="variablelist"><table border="0">
497 <col align="left" valign="top">
500 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
501 <td>plugin instance</td>
504 <td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
505 <td>additional parameters for the session</td>
511 <div class="refsect2">
512 <a name="gsignond-plugin-request-initial"></a><h3>gsignond_plugin_request_initial ()</h3>
513 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_request_initial (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
514 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>,
515 <em class="parameter"><code><a class="link" href="gsignond-GSignondDictionary.html#GSignondDictionary" title="GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>,
516 <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>
518 This method starts a new authentication session.
520 <div class="variablelist"><table border="0">
521 <col align="left" valign="top">
524 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
525 <td>plugin instance</td>
528 <td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
529 <td>parameters for the session</td>
532 <td><p><span class="term"><em class="parameter"><code>identity_method_cache</code></em> :</span></p></td>
533 <td>data from persistent storage, saved previously via
534 <span class="type">"store"</span> signal</td>
537 <td><p><span class="term"><em class="parameter"><code>mechanism</code></em> :</span></p></td>
538 <td>mechanism to use for the authentication</td>
544 <div class="refsect2">
545 <a name="gsignond-plugin-response"></a><h3>gsignond_plugin_response ()</h3>
546 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_response (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
547 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
549 Plugin implementations should use this to issue <span class="type">"response"</span>
550 signal. This method should not be used otherwise.
552 <div class="variablelist"><table border="0">
553 <col align="left" valign="top">
556 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
557 <td>plugin instance</td>
560 <td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
561 <td>session data</td>
567 <div class="refsect2">
568 <a name="gsignond-plugin-response-final"></a><h3>gsignond_plugin_response_final ()</h3>
569 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_response_final (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
570 <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
572 Plugin implementations should use this to issue <span class="type">"response-final"</span>
573 signal. This method should not be used otherwise.
575 <div class="variablelist"><table border="0">
576 <col align="left" valign="top">
579 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
580 <td>plugin instance</td>
583 <td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
584 <td>session data</td>
590 <div class="refsect2">
591 <a name="gsignond-plugin-status-changed"></a><h3>gsignond_plugin_status_changed ()</h3>
592 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_status_changed (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
593 <em class="parameter"><code><a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
594 <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>
596 Plugin implementations should use this to issue <span class="type">"status-changed"</span>
597 signal. This method should not be used otherwise.
599 <div class="variablelist"><table border="0">
600 <col align="left" valign="top">
603 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
604 <td>plugin instance</td>
607 <td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
608 <td>the new state</td>
611 <td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
618 <div class="refsect2">
619 <a name="gsignond-plugin-store"></a><h3>gsignond_plugin_store ()</h3>
620 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_store (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
621 <em class="parameter"><code><a class="link" href="gsignond-GSignondDictionary.html#GSignondDictionary" title="GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>);</pre>
623 Plugin implementations should use this to issue <span class="type">"store"</span>
624 signal. This method should not be used otherwise.
626 <div class="variablelist"><table border="0">
627 <col align="left" valign="top">
630 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
631 <td>plugin instance</td>
634 <td><p><span class="term"><em class="parameter"><code>identity_method_cache</code></em> :</span></p></td>
635 <td>data to store</td>
641 <div class="refsect2">
642 <a name="gsignond-plugin-user-action-finished"></a><h3>gsignond_plugin_user_action_finished ()</h3>
643 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_user_action_finished
644 (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
645 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
647 This method provides the plugin with the results of UI interaction
648 after the plugin has asked for it via <span class="type">"user-action-required"</span> signal.
650 <div class="variablelist"><table border="0">
651 <col align="left" valign="top">
654 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
655 <td>plugin instance</td>
658 <td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
659 <td>results of UI interaction</td>
665 <div class="refsect2">
666 <a name="gsignond-plugin-user-action-required"></a><h3>gsignond_plugin_user_action_required ()</h3>
667 <pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_user_action_required
668 (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
669 <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
671 Plugin implementations should use this to issue <span class="type">"user-action-required"</span>
672 signal. This method should not be used otherwise.
674 <div class="variablelist"><table border="0">
675 <col align="left" valign="top">
678 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
679 <td>plugin instance</td>
682 <td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
692 Generated by GTK-Doc V1.19.1</div>