diff options
Diffstat (limited to 'docs/html/gsignond-GSignondPlugin.html')
-rw-r--r-- | docs/html/gsignond-GSignondPlugin.html | 694 |
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 <gsignond/gsignond-plugin-interface.h> + +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->cancel = gsignond_password_plugin_cancel; + iface->request_initial = gsignond_password_plugin_request_initial; + iface->request = gsignond_password_plugin_request; + iface->user_action_finished = gsignond_password_plugin_user_action_finished; + iface->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->set_property = gsignond_password_plugin_set_property; + gobject_class->get_property = gsignond_password_plugin_get_property; + + g_object_class_override_property (gobject_class, PROP_TYPE, <span class="number">"type"</span>); + g_object_class_override_property (gobject_class, PROP_MECHANISMS, + <span class="number">"mechanisms"</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 |