summaryrefslogtreecommitdiff
path: root/docs/html/gsignond-GSignondPlugin.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html/gsignond-GSignondPlugin.html')
-rw-r--r--docs/html/gsignond-GSignondPlugin.html694
1 files changed, 694 insertions, 0 deletions
diff --git a/docs/html/gsignond-GSignondPlugin.html b/docs/html/gsignond-GSignondPlugin.html
new file mode 100644
index 0000000..d77d3f1
--- /dev/null
+++ b/docs/html/gsignond-GSignondPlugin.html
@@ -0,0 +1,694 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GSignondPlugin</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="gsignond API Reference Manual">
+<link rel="up" href="ch03.html" title="GSignond API for writing authentication plugins">
+<link rel="prev" href="ch03.html" title="GSignond API for writing authentication plugins">
+<link rel="next" href="gsignond-GSignondDictionary.html" title="GSignondDictionary">
+<meta name="generator" content="GTK-Doc V1.19.1 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
+<td width="100%" align="left">
+<a href="#" class="shortcut">Top</a>
+  | 
+ <a href="#gsignond-GSignondPlugin.description" class="shortcut">Description</a>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="ch03.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gsignond-GSignondDictionary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gsignond-GSignondPlugin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gsignond-GSignondPlugin.top_of_page"></a>GSignondPlugin</span></h2>
+<p>GSignondPlugin — an interface for implementing authentication plugins</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<a name="gsignond-GSignondPlugin.synopsis"></a><h2>Synopsis</h2>
+<pre class="synopsis">
+#include &lt;gsignond/gsignond-plugin-interface.h&gt;
+
+struct <a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface">GSignondPluginInterface</a>;
+enum <a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState">GSignondPluginState</a>;
+<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>);
+<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>,
+ <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>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>,
+ <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>,
+ <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>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);
+<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>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
+ <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>);
+<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>,
+ <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>);
+<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>
+ (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSignonuiData.html#GSignondSignonuiData" title="GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);
+<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>
+ (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+</div>
+<div class="refsect1">
+<a name="gsignond-GSignondPlugin.description"></a><h2>Description</h2>
+<p>
+<span class="type">GSignondPlugin</span> is an interface for implementing authentication plugins.
+</p>
+<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>
+<p>
+a) declare the type as follows:
+</p>
+<p>
+</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1
+2
+3
+4</pre></td>
+ <td class="listing_code"><pre class="programlisting">G_DEFINE_TYPE_WITH_CODE (GSignondPasswordPlugin, gsignond_password_plugin,
+ G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GSIGNOND_TYPE_PLUGIN,
+ gsignond_plugin_interface_init));</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<p>
+</p>
+<p>
+b) implement <code class="function">gsignond_plugin_interface_init</code> as follows:
+</p>
+<p>
+</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7
+8
+9</pre></td>
+ <td class="listing_code"><pre class="programlisting"><span class="type">static</span> <span class="type">void</span>
+gsignond_plugin_interface_init (GSignondPluginInterface *iface)
+{
+ iface-&gt;cancel = gsignond_password_plugin_cancel;
+ iface-&gt;request_initial = gsignond_password_plugin_request_initial;
+ iface-&gt;request = gsignond_password_plugin_request;
+ iface-&gt;user_action_finished = gsignond_password_plugin_user_action_finished;
+ iface-&gt;refresh = gsignond_password_plugin_refresh;
+}</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<p>
+</p>
+<p>
+where the <code class="function">gsignond_password_plugin_cancel</code> etc. are specific implementations of
+plugin interface methods that every plugin must provide (see below for when
+and how they're used by the daemon).
+</p>
+<p>
+c) override <span class="type">"type"</span> and <span class="type">"mechanisms"</span> property
+implementations in the plugin class constructor like this:
+</p>
+<p>
+</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12</pre></td>
+ <td class="listing_code"><pre class="programlisting"><span class="type">static</span> <span class="type">void</span>
+gsignond_password_plugin_class_init (GSignondPasswordPluginClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class-&gt;set_property = gsignond_password_plugin_set_property;
+ gobject_class-&gt;get_property = gsignond_password_plugin_get_property;
+
+ g_object_class_override_property (gobject_class, PROP_TYPE, <span class="number">&quot;type&quot;</span>);
+ g_object_class_override_property (gobject_class, PROP_MECHANISMS,
+ <span class="number">&quot;mechanisms&quot;</span>);
+}</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<p>
+(naturally, plugin's property setter should ignore attempts to set these properties,
+and plugin's property getter should provide their values when asked)
+</p>
+<p>
+</p>
+<div class="refsect1">
+<a name="idp7924464"></a><h2>The plugin API</h2>
+</div>
+<p>
+</p>
+<p>
+Plugins implement authentication sessions which are controlled through the
+plugin API. Authentication sessions follow one another so there is only one active
+session at a time.
+</p>
+<p>
+The plugin API is a set of methods and signals that should be used in a specific
+sequence:
+</p>
+<p>
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<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
+with the plugin issuing a <span class="type">"response-final"</span> signal</p></li>
+<li class="listitem"><p>at any point the application can cancel an active session with
+<a class="link" href="gsignond-GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></li>
+<li class="listitem"><p>at any point the plugin can cancel an active session by issuing <span class="type">"error"</span>
+signal, which also provides some details about the cancellation reason.</p></li>
+<li class="listitem"><p>if a session is active, and the plugin has an intermediate response or needs
+additional information, it issues <span class="type">"response"</span> signal, which the
+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
+happen more than once.</p></li>
+<li class="listitem"><p>if the plugin needs to launch UI interaction with the user, it's issuing
+<span class="type">"user-action-required"</span> signal, which the application should
+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
+more than once as well.</p></li>
+<li class="listitem"><p>if, during an active UI session, the application needs a UI refresh
+(for example, to fetch a new captcha image), it's
+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
+by the plugin's response via <span class="type">"refreshed"</span> signal. This can happen
+more than once.</p></li>
+<li class="listitem"><p>changes in plugin state are reported through <span class="type">"status-changed"</span> signal.</p></li>
+<li class="listitem"><p>if the plugin needs to store information in persistent storage, it issues
+<span class="type">"store"</span> signal. Later, that same information is provided as a
+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>
+</ul></div>
+<p>
+</p>
+<p>
+</p>
+<div class="refsect1">
+<a name="idp12313904"></a><h2>Example plugins</h2>
+</div>
+<p>
+</p>
+<p>
+See example plugin implementation here:
+<a class="ulink" href="https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins" target="_top">
+https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins</a>.
+</p>
+<p>
+For examples of out of tree plugins, you can have a look at SASL or OAuth plugin
+implementations:
+<a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl" target="_top">
+http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl</a>.
+</p>
+<p>
+<a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa" target="_top">
+http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa</a>.
+</p>
+</div>
+<div class="refsect1">
+<a name="gsignond-GSignondPlugin.details"></a><h2>Details</h2>
+<div class="refsect2">
+<a name="GSignondPluginInterface"></a><h3>struct GSignondPluginInterface</h3>
+<pre class="programlisting">struct GSignondPluginInterface {
+ GTypeInterface parent;
+
+ void (*cancel) (GSignondPlugin *self);
+ void (*request_initial) (GSignondPlugin *self,
+ GSignondSessionData *session_data,
+ GSignondDictionary *identity_method_cache,
+ const gchar *mechanism);
+ void (*request) (GSignondPlugin *self,
+ GSignondSessionData *session_data);
+ void (*user_action_finished) (GSignondPlugin *self,
+ GSignondSignonuiData *session_data);
+ void (*refresh) (GSignondPlugin *self,
+ GSignondSignonuiData *session_data);
+};
+</pre>
+<p>
+<a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface"><span class="type">GSignondPluginInterface</span></a> interface containing pointers to methods that all
+plugin implementations should provide.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<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>
+<td>parent interface type.</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.cancel"></a>cancel</code></em> ()</span></p></td>
+<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>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.request-initial"></a>request_initial</code></em> ()</span></p></td>
+<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>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.request"></a>request</code></em> ()</span></p></td>
+<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>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.user-action-finished"></a>user_action_finished</code></em> ()</span></p></td>
+<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>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="structfield"><code><a name="GSignondPluginInterface.refresh"></a>refresh</code></em> ()</span></p></td>
+<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>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GSignondPluginState"></a><h3>enum GSignondPluginState</h3>
+<pre class="programlisting">typedef enum {
+ GSIGNOND_PLUGIN_STATE_NONE = 0,
+ GSIGNOND_PLUGIN_STATE_RESOLVING,
+ GSIGNOND_PLUGIN_STATE_CONNECTING,
+ GSIGNOND_PLUGIN_STATE_SENDING_DATA,
+ GSIGNOND_PLUGIN_STATE_WAITING,
+ GSIGNOND_PLUGIN_STATE_USER_PENDING,
+ GSIGNOND_PLUGIN_STATE_REFRESHING,
+ GSIGNOND_PLUGIN_STATE_PROCESS_PENDING,
+ GSIGNOND_PLUGIN_STATE_STARTED,
+ GSIGNOND_PLUGIN_STATE_CANCELING,
+ GSIGNOND_PLUGIN_STATE_DONE,
+ GSIGNOND_PLUGIN_STATE_HOLDING,
+} GSignondPluginState;
+</pre>
+<p>
+The plugin provides state updates by emitting <span class="type">"status-changed"</span>
+signal with this enum and a string describing what happened.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-NONE:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_NONE</code></span></p></td>
+<td>State unknown
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-RESOLVING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_RESOLVING</code></span></p></td>
+<td>Resolving remote server host name
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-CONNECTING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_CONNECTING</code></span></p></td>
+<td>Connecting to remote server
+</td>
+</tr>
+<tr>
+<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>
+<td>Sending data to remote server
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-WAITING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_WAITING</code></span></p></td>
+<td>Waiting for reply from remote server
+</td>
+</tr>
+<tr>
+<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>
+<td>Waiting for response from user
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-REFRESHING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_REFRESHING</code></span></p></td>
+<td>Refreshing ui request
+</td>
+</tr>
+<tr>
+<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>
+<td>Request has been queued
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-STARTED:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_STARTED</code></span></p></td>
+<td>Request has been dequeued
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-CANCELING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_CANCELING</code></span></p></td>
+<td>Canceling current process
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-DONE:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_DONE</code></span></p></td>
+<td>Process is finished
+</td>
+</tr>
+<tr>
+<td><p><a name="GSIGNOND-PLUGIN-STATE-HOLDING:CAPS"></a><span class="term"><code class="literal">GSIGNOND_PLUGIN_STATE_HOLDING</code></span></p></td>
+<td>Holding long non-expired token
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-cancel"></a><h3>gsignond_plugin_cancel ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_cancel (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>);</pre>
+<p>
+This method cancels an ongoing authentication session. The plugin implementations
+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>
+error, and prepare for a new authentication session.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-error"></a><h3>gsignond_plugin_error ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_error (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"error"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td>
+<td>the error</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-refresh"></a><h3>gsignond_plugin_refresh ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_refresh (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+This method asks the plugin to refresh the UI. The plugin responds with
+<span class="type">"refreshed"</span> signal.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
+<td>UI refresh parameters</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-refreshed"></a><h3>gsignond_plugin_refreshed ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_refreshed (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"refreshed"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
+<td>UI data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-request"></a><h3>gsignond_plugin_request ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_request (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+This method provides the plugin with additional parameters for the session
+after the plugin has asked for it via <span class="type">"response"</span> signal.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
+<td>additional parameters for the session</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-request-initial"></a><h3>gsignond_plugin_request_initial ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_request_initial (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondSessionData.html#GSignondSessionData" title="GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>,
+ <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>,
+ <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>
+<p>
+This method starts a new authentication session.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
+<td>parameters for the session</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>identity_method_cache</code></em> :</span></p></td>
+<td>data from persistent storage, saved previously via
+<span class="type">"store"</span> signal</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>mechanism</code></em> :</span></p></td>
+<td>mechanism to use for the authentication</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-response"></a><h3>gsignond_plugin_response ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_response (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"response"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
+<td>session data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-response-final"></a><h3>gsignond_plugin_response_final ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_response_final (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"response-final"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>session_data</code></em> :</span></p></td>
+<td>session data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-status-changed"></a><h3>gsignond_plugin_status_changed ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_status_changed (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <em class="parameter"><code><a class="link" href="gsignond-GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"status-changed"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td>
+<td>the new state</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>message</code></em> :</span></p></td>
+<td>the message</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-store"></a><h3>gsignond_plugin_store ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_store (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"store"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>identity_method_cache</code></em> :</span></p></td>
+<td>data to store</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-user-action-finished"></a><h3>gsignond_plugin_user_action_finished ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_user_action_finished
+ (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+This method provides the plugin with the results of UI interaction
+after the plugin has asked for it via <span class="type">"user-action-required"</span> signal.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
+<td>results of UI interaction</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gsignond-plugin-user-action-required"></a><h3>gsignond_plugin_user_action_required ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span> gsignond_plugin_user_action_required
+ (<em class="parameter"><code><span class="type">GSignondPlugin</span> *self</code></em>,
+ <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>
+<p>
+Plugin implementations should use this to issue <span class="type">"user-action-required"</span>
+signal. This method should not be used otherwise.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
+<td>plugin instance</td>
+</tr>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>ui_data</code></em> :</span></p></td>
+<td>UI data</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>
+ Generated by GTK-Doc V1.19.1</div>
+</body>
+</html> \ No newline at end of file