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>GSignondExtension</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="ch05.html" title="GSignond API for writing platform adaptation extensions">
9 <link rel="prev" href="ch05.html" title="GSignond API for writing platform adaptation extensions">
10 <link rel="next" href="GSignondAccessControlManager.html" title="GSignondAccessControlManager">
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="#GSignondExtension.description" class="shortcut">Description</a>
21 <a href="#GSignondExtension.object-hierarchy" class="shortcut">Object Hierarchy</a>
23 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
24 <td><a accesskey="u" href="ch05.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
25 <td><a accesskey="p" href="ch05.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
26 <td><a accesskey="n" href="GSignondAccessControlManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
28 <div class="refentry">
29 <a name="GSignondExtension"></a><div class="titlepage"></div>
30 <div class="refnamediv"><table width="100%"><tr>
32 <h2><span class="refentrytitle"><a name="GSignondExtension.top_of_page"></a>GSignondExtension</span></h2>
33 <p>GSignondExtension — provides platform adaptation functionality</p>
35 <td valign="top" align="right"></td>
37 <div class="refsynopsisdiv">
38 <a name="GSignondExtension.synopsis"></a><h2>Synopsis</h2>
39 <pre class="synopsis">
40 #include <gsignond/gsignond-plugin-interface.h>
42 struct <a class="link" href="GSignondExtension.html#GSignondExtension-struct" title="struct GSignondExtension">GSignondExtension</a>;
43 struct <a class="link" href="GSignondExtension.html#GSignondExtensionClass" title="struct GSignondExtensionClass">GSignondExtensionClass</a>;
44 <a class="link" href="GSignondAccessControlManager.html" title="GSignondAccessControlManager"><span class="returnvalue">GSignondAccessControlManager</span></a> * <a class="link" href="GSignondExtension.html#gsignond-extension-get-access-control-manager" title="gsignond_extension_get_access_control_manager ()">gsignond_extension_get_access_control_manager</a>
45 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
46 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);
47 const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="GSignondExtension.html#gsignond-extension-get-name" title="gsignond_extension_get_name ()">gsignond_extension_get_name</a> (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>);
48 <a class="link" href="GSignondSecretStorage.html" title="GSignondSecretStorage"><span class="returnvalue">GSignondSecretStorage</span></a> * <a class="link" href="GSignondExtension.html#gsignond-extension-get-secret-storage" title="gsignond_extension_get_secret_storage ()">gsignond_extension_get_secret_storage</a>
49 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
50 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);
51 <a class="link" href="GSignondStorageManager.html" title="GSignondStorageManager"><span class="returnvalue">GSignondStorageManager</span></a> * <a class="link" href="GSignondExtension.html#gsignond-extension-get-storage-manager" title="gsignond_extension_get_storage_manager ()">gsignond_extension_get_storage_manager</a>
52 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
53 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);
54 <span class="returnvalue">guint32</span> <a class="link" href="GSignondExtension.html#gsignond-extension-get-version" title="gsignond_extension_get_version ()">gsignond_extension_get_version</a> (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>);
57 <div class="refsect1">
58 <a name="GSignondExtension.object-hierarchy"></a><h2>Object Hierarchy</h2>
59 <pre class="synopsis">
60 <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
61 +----GSignondExtension
64 <div class="refsect1">
65 <a name="GSignondExtension.description"></a><h2>Description</h2>
67 <a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> provides access to platform adaptation functionality. It
68 contains getter methods for default implementations of <a class="link" href="GSignondAccessControlManager.html" title="GSignondAccessControlManager"><span class="type">GSignondAccessControlManager</span></a>,
69 <a class="link" href="GSignondSecretStorage.html" title="GSignondSecretStorage"><span class="type">GSignondSecretStorage</span></a> and <a class="link" href="GSignondStorageManager.html" title="GSignondStorageManager"><span class="type">GSignondStorageManager</span></a>.
72 gSSO can be adapted to a specific platform environment by implementing a
73 custom extension module. The following steps need to be taken:
76 a) subclass and re-implement some (or all) of the functionality of the above
80 b) subclass <a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> and provide implementations of its getter methods for those
81 of the adaptation classes that have been changed.
84 d) provide a function <code class="function">GSignondExtension * extensionname_extension_init(void)</code>
85 that returns an instance of the <a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> subclass.
88 c) build and install these implementations as a gSSO extension module and
89 configure gSSO to use it.
92 Examples of custom extensions can be seen here:
93 <a class="ulink" href="https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fextensions" target="_top">
94 https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fextensions</a>
95 and gSSO configuration is described in <a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a>.
98 <div class="refsect1">
99 <a name="GSignondExtension.details"></a><h2>Details</h2>
100 <div class="refsect2">
101 <a name="GSignondExtension-struct"></a><h3>struct GSignondExtension</h3>
102 <pre class="programlisting">struct GSignondExtension;</pre>
104 Opaque <a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> data structure.
108 <div class="refsect2">
109 <a name="GSignondExtensionClass"></a><h3>struct GSignondExtensionClass</h3>
110 <pre class="programlisting">struct GSignondExtensionClass {
111 GObjectClass parent_class;
113 const gchar * (*get_extension_name) (GSignondExtension *self);
115 guint32 (*get_extension_version) (GSignondExtension *self);
117 GSignondStorageManager * (*get_storage_manager) (GSignondExtension *self,
118 GSignondConfig *config);
120 GSignondSecretStorage * (*get_secret_storage) (GSignondExtension *self,
121 GSignondConfig *config);
123 GSignondAccessControlManager * (*get_access_control_manager) (
124 GSignondExtension *self,
125 GSignondConfig *config);
129 <a class="link" href="GSignondExtension.html#GSignondExtensionClass" title="struct GSignondExtensionClass"><span class="type">GSignondExtensionClass</span></a> class containing pointers to class methods.
131 <div class="variablelist"><table border="0">
132 <col align="left" valign="top">
135 <td><p><span class="term"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObjectClass"><span class="type">GObjectClass</span></a> <em class="structfield"><code><a name="GSignondExtensionClass.parent-class"></a>parent_class</code></em>;</span></p></td>
136 <td>the parent class</td>
139 <td><p><span class="term"><em class="structfield"><code><a name="GSignondExtensionClass.get-extension-name"></a>get_extension_name</code></em> ()</span></p></td>
140 <td>implementation of <a class="link" href="GSignondExtension.html#gsignond-extension-get-name" title="gsignond_extension_get_name ()"><code class="function">gsignond_extension_get_name()</code></a>
144 <td><p><span class="term"><em class="structfield"><code><a name="GSignondExtensionClass.get-extension-version"></a>get_extension_version</code></em> ()</span></p></td>
145 <td>implementation of <a class="link" href="GSignondExtension.html#gsignond-extension-get-version" title="gsignond_extension_get_version ()"><code class="function">gsignond_extension_get_version()</code></a>
149 <td><p><span class="term"><em class="structfield"><code><a name="GSignondExtensionClass.get-storage-manager"></a>get_storage_manager</code></em> ()</span></p></td>
150 <td>implementation of <a class="link" href="GSignondExtension.html#gsignond-extension-get-storage-manager" title="gsignond_extension_get_storage_manager ()"><code class="function">gsignond_extension_get_storage_manager()</code></a>
154 <td><p><span class="term"><em class="structfield"><code><a name="GSignondExtensionClass.get-secret-storage"></a>get_secret_storage</code></em> ()</span></p></td>
155 <td>implementation of <a class="link" href="GSignondExtension.html#gsignond-extension-get-secret-storage" title="gsignond_extension_get_secret_storage ()"><code class="function">gsignond_extension_get_secret_storage()</code></a>
159 <td><p><span class="term"><em class="structfield"><code><a name="GSignondExtensionClass.get-access-control-manager"></a>get_access_control_manager</code></em> ()</span></p></td>
160 <td>implementation of <a class="link" href="GSignondExtension.html#gsignond-extension-get-access-control-manager" title="gsignond_extension_get_access_control_manager ()"><code class="function">gsignond_extension_get_access_control_manager()</code></a>
167 <div class="refsect2">
168 <a name="gsignond-extension-get-access-control-manager"></a><h3>gsignond_extension_get_access_control_manager ()</h3>
169 <pre class="programlisting"><a class="link" href="GSignondAccessControlManager.html" title="GSignondAccessControlManager"><span class="returnvalue">GSignondAccessControlManager</span></a> * gsignond_extension_get_access_control_manager
170 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
171 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);</pre>
173 Factory method to get a singleton access control manager object. See
174 <a class="link" href="GSignondAccessControlManager.html" title="GSignondAccessControlManager"><span class="type">GSignondAccessControlManager</span></a> for the description of the default implementation.
176 <div class="variablelist"><table border="0">
177 <col align="left" valign="top">
180 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
181 <td>object instance.</td>
184 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
185 <td>configuration object instance.</td>
188 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
189 <td>access control manager object instance. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
196 <div class="refsect2">
197 <a name="gsignond-extension-get-name"></a><h3>gsignond_extension_get_name ()</h3>
198 <pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * gsignond_extension_get_name (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>);</pre>
200 Get a human readable name of the extension. Default implementation
203 <div class="variablelist"><table border="0">
204 <col align="left" valign="top">
207 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
208 <td>object instance.</td>
211 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
212 <td>name of the extension. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
219 <div class="refsect2">
220 <a name="gsignond-extension-get-secret-storage"></a><h3>gsignond_extension_get_secret_storage ()</h3>
221 <pre class="programlisting"><a class="link" href="GSignondSecretStorage.html" title="GSignondSecretStorage"><span class="returnvalue">GSignondSecretStorage</span></a> * gsignond_extension_get_secret_storage
222 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
223 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);</pre>
225 Factory method to get a singleton secret storage object. See
226 <a class="link" href="GSignondSecretStorage.html" title="GSignondSecretStorage"><span class="type">GSignondSecretStorage</span></a> for the description of the default implementation.
228 <div class="variablelist"><table border="0">
229 <col align="left" valign="top">
232 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
233 <td>object instance.</td>
236 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
237 <td>configuration object instance.</td>
240 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
241 <td>secret storage object instance. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
248 <div class="refsect2">
249 <a name="gsignond-extension-get-storage-manager"></a><h3>gsignond_extension_get_storage_manager ()</h3>
250 <pre class="programlisting"><a class="link" href="GSignondStorageManager.html" title="GSignondStorageManager"><span class="returnvalue">GSignondStorageManager</span></a> * gsignond_extension_get_storage_manager
251 (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>,
252 <em class="parameter"><code><a class="link" href="GSignondConfig.html" title="GSignondConfig"><span class="type">GSignondConfig</span></a> *config</code></em>);</pre>
254 Factory method to get a singleton storage manager object. See
255 <a class="link" href="GSignondStorageManager.html" title="GSignondStorageManager"><span class="type">GSignondStorageManager</span></a> for the description of the default implementation.
257 <div class="variablelist"><table border="0">
258 <col align="left" valign="top">
261 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
262 <td>object instance.</td>
265 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
266 <td>configuration object instance.</td>
269 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
270 <td>storage manager object instance. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
277 <div class="refsect2">
278 <a name="gsignond-extension-get-version"></a><h3>gsignond_extension_get_version ()</h3>
279 <pre class="programlisting"><span class="returnvalue">guint32</span> gsignond_extension_get_version (<em class="parameter"><code><a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> *self</code></em>);</pre>
281 Get version of the extension, split into four bytes in order from MSB to LSB;
282 major, minor, patchlevel, build. Default implementation returns 0.
284 <div class="variablelist"><table border="0">
285 <col align="left" valign="top">
287 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
288 <td>object instance.</td>
296 Generated by GTK-Doc V1.19.1</div>