55b6e8a33a11383ca1f25e91cbddeda3c4e694c5
[profile/ivi/gsignond.git] / docs / html / GSignondExtension.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>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">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
16 <td width="100%" align="left">
17 <a href="#" class="shortcut">Top</a>
18                    | 
19                   <a href="#GSignondExtension.description" class="shortcut">Description</a>
20                    | 
21                   <a href="#GSignondExtension.object-hierarchy" class="shortcut">Object Hierarchy</a>
22 </td>
23 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
24 <td><a accesskey="u" href="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>
27 </tr></table>
28 <div class="refentry">
29 <a name="GSignondExtension"></a><div class="titlepage"></div>
30 <div class="refnamediv"><table width="100%"><tr>
31 <td valign="top">
32 <h2><span class="refentrytitle"><a name="GSignondExtension.top_of_page"></a>GSignondExtension</span></h2>
33 <p>GSignondExtension — provides platform adaptation functionality</p>
34 </td>
35 <td valign="top" align="right"></td>
36 </tr></table></div>
37 <div class="refsynopsisdiv">
38 <a name="GSignondExtension.synopsis"></a><h2>Synopsis</h2>
39 <pre class="synopsis">
40 #include &lt;gsignond/gsignond-plugin-interface.h&gt;
41
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>);
55 </pre>
56 </div>
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
62 </pre>
63 </div>
64 <div class="refsect1">
65 <a name="GSignondExtension.description"></a><h2>Description</h2>
66 <p>
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>.
70 </p>
71 <p>
72 gSSO can be adapted to a specific platform environment by implementing a 
73 custom extension module. The following steps need to be taken:
74 </p>
75 <p>
76 a) subclass and re-implement some (or all) of the functionality of the above
77 three classes.
78 </p>
79 <p>
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.
82 </p>
83 <p>
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.
86 </p>
87 <p>
88 c) build and install these implementations as a gSSO extension module and
89 configure gSSO to use it.
90 </p>
91 <p>
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>.
96 </p>
97 </div>
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>
103 <p>
104 Opaque <a class="link" href="GSignondExtension.html" title="GSignondExtension"><span class="type">GSignondExtension</span></a> data structure.
105 </p>
106 </div>
107 <hr>
108 <div class="refsect2">
109 <a name="GSignondExtensionClass"></a><h3>struct GSignondExtensionClass</h3>
110 <pre class="programlisting">struct GSignondExtensionClass {
111     GObjectClass parent_class;
112
113     const gchar * (*get_extension_name) (GSignondExtension *self);
114
115     guint32 (*get_extension_version) (GSignondExtension *self);
116
117     GSignondStorageManager * (*get_storage_manager) (GSignondExtension *self,
118                                                      GSignondConfig *config);
119
120     GSignondSecretStorage * (*get_secret_storage) (GSignondExtension *self,
121                                                    GSignondConfig *config);
122
123     GSignondAccessControlManager * (*get_access_control_manager) (
124                                                     GSignondExtension *self,
125                                                     GSignondConfig *config);
126 };
127 </pre>
128 <p>
129 <a class="link" href="GSignondExtension.html#GSignondExtensionClass" title="struct GSignondExtensionClass"><span class="type">GSignondExtensionClass</span></a> class containing pointers to class methods.
130 </p>
131 <div class="variablelist"><table border="0">
132 <col align="left" valign="top">
133 <tbody>
134 <tr>
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>
137 </tr>
138 <tr>
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>
141 </td>
142 </tr>
143 <tr>
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>
146 </td>
147 </tr>
148 <tr>
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>
151 </td>
152 </tr>
153 <tr>
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>
156 </td>
157 </tr>
158 <tr>
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>
161 </td>
162 </tr>
163 </tbody>
164 </table></div>
165 </div>
166 <hr>
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>
172 <p>
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.
175 </p>
176 <div class="variablelist"><table border="0">
177 <col align="left" valign="top">
178 <tbody>
179 <tr>
180 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
181 <td>object instance.</td>
182 </tr>
183 <tr>
184 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
185 <td>configuration object instance.</td>
186 </tr>
187 <tr>
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>
190 </td>
191 </tr>
192 </tbody>
193 </table></div>
194 </div>
195 <hr>
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>
199 <p>
200 Get a human readable name of the extension. Default implementation
201 returns "default".
202 </p>
203 <div class="variablelist"><table border="0">
204 <col align="left" valign="top">
205 <tbody>
206 <tr>
207 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
208 <td>object instance.</td>
209 </tr>
210 <tr>
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>
213 </td>
214 </tr>
215 </tbody>
216 </table></div>
217 </div>
218 <hr>
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>
224 <p>
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.
227 </p>
228 <div class="variablelist"><table border="0">
229 <col align="left" valign="top">
230 <tbody>
231 <tr>
232 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
233 <td>object instance.</td>
234 </tr>
235 <tr>
236 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
237 <td>configuration object instance.</td>
238 </tr>
239 <tr>
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>
242 </td>
243 </tr>
244 </tbody>
245 </table></div>
246 </div>
247 <hr>
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>
253 <p>
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.
256 </p>
257 <div class="variablelist"><table border="0">
258 <col align="left" valign="top">
259 <tbody>
260 <tr>
261 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
262 <td>object instance.</td>
263 </tr>
264 <tr>
265 <td><p><span class="term"><em class="parameter"><code>config</code></em> :</span></p></td>
266 <td>configuration object instance.</td>
267 </tr>
268 <tr>
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>
271 </td>
272 </tr>
273 </tbody>
274 </table></div>
275 </div>
276 <hr>
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>
280 <p>
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.
283 </p>
284 <div class="variablelist"><table border="0">
285 <col align="left" valign="top">
286 <tbody><tr>
287 <td><p><span class="term"><em class="parameter"><code>self</code></em> :</span></p></td>
288 <td>object instance.</td>
289 </tr></tbody>
290 </table></div>
291 </div>
292 </div>
293 </div>
294 <div class="footer">
295 <hr>
296           Generated by GTK-Doc V1.19.1</div>
297 </body>
298 </html>