1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
2 /* gnome-keyring.h - library for talking to the keyring daemon.
3 
4    Copyright (C) 2003 Red Hat, Inc
5 
6    The Gnome Keyring Library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Library General Public License as
8    published by the Free Software Foundation; either version 2 of the
9    License, or (at your option) any later version.
10 
11    The Gnome Keyring Library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Library General Public License for more details.
15 
16    You should have received a copy of the GNU Library General Public
17    License along with the Gnome Library; see the file COPYING.LIB.  If not,
18    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA.
20 
21    Author: Alexander Larsson <alexl@redhat.com>
22 */
23 
24 #ifndef GNOME_KEYRING_H
25 #define GNOME_KEYRING_H
26 
27 #include <glib.h>
28 #include <glib-object.h>
29 #include <time.h>
30 
31 #if !defined(GNOME_KEYRING_DEPRECATED)
32 #if !defined(GNOME_KEYRING_COMPILATION) && defined(G_DEPRECATED)
33 #define GNOME_KEYRING_DEPRECATED G_DEPRECATED
34 #define GNOME_KEYRING_DEPRECATED_FOR(x) G_DEPRECATED_FOR(x)
35 #else
36 #define GNOME_KEYRING_DEPRECATED
37 #define GNOME_KEYRING_DEPRECATED_FOR(x)
38 #endif
39 #endif
40 
41 #include "gnome-keyring-result.h"
42 
43 G_BEGIN_DECLS
44 
45 #ifndef GNOME_KEYRING_DISABLE_DEPRECATED
46 
47 #define GNOME_KEYRING_SESSION   "session"
48 #define GNOME_KEYRING_DEFAULT   NULL
49 
50 typedef enum {
51 
52 	/* The item types */
53 	GNOME_KEYRING_ITEM_GENERIC_SECRET = 0,
54 	GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
55 	GNOME_KEYRING_ITEM_NOTE,
56 	GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD,
57 	GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD,
58 
59 	GNOME_KEYRING_ITEM_PK_STORAGE = 0x100,
60 
61 	/* Not used, remains here only for compatibility */
62 	GNOME_KEYRING_ITEM_LAST_TYPE,
63 
64 } GnomeKeyringItemType;
65 
66 #define	GNOME_KEYRING_ITEM_TYPE_MASK 0x0000ffff
67 #define GNOME_KEYRING_ITEM_NO_TYPE GNOME_KEYRING_ITEM_TYPE_MASK
68 #define	GNOME_KEYRING_ITEM_APPLICATION_SECRET 0x01000000
69 
70 typedef enum {
71 	GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
72 	GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
73 } GnomeKeyringAttributeType;
74 
75 typedef GArray GnomeKeyringAttributeList;
76 
77 typedef enum {
78 	GNOME_KEYRING_ITEM_INFO_BASICS = 0,
79 	GNOME_KEYRING_ITEM_INFO_SECRET = 1<<0
80 } GnomeKeyringItemInfoFlags;
81 
82 /* Add flags here as they are added above */
83 #define GNOME_KEYRING_ITEM_INFO_ALL (GNOME_KEYRING_ITEM_INFO_BASICS | GNOME_KEYRING_ITEM_INFO_SECRET)
84 
85 typedef struct GnomeKeyringInfo GnomeKeyringInfo;
86 typedef struct GnomeKeyringItemInfo GnomeKeyringItemInfo;
87 
88 typedef struct {
89 	char *name;
90 	GnomeKeyringAttributeType type;
91 	union {
92 		char *string;
93 		guint32 integer;
94 	} value;
95 } GnomeKeyringAttribute;
96 
97 typedef struct {
98 	char *keyring;
99 	guint item_id;
100 	GnomeKeyringAttributeList *attributes;
101 	char *secret;
102 } GnomeKeyringFound;
103 
104 GNOME_KEYRING_DEPRECATED
105 void gnome_keyring_string_list_free (GList *strings);
106 
107 typedef void (*GnomeKeyringOperationDoneCallback)           (GnomeKeyringResult result,
108                                                              gpointer           user_data);
109 /**
110  * GnomeKeyringOperationGetStringCallback:
111  * @result: result of the operation
112  * @string: (allow-none): the string, or %NULL
113  * @user_data: user data
114  */
115 typedef void (*GnomeKeyringOperationGetStringCallback)      (GnomeKeyringResult result,
116                                                              const char        *string,
117                                                              gpointer           user_data);
118 typedef void (*GnomeKeyringOperationGetIntCallback)         (GnomeKeyringResult result,
119                                                              guint32            val,
120                                                              gpointer           user_data);
121 typedef void (*GnomeKeyringOperationGetListCallback)        (GnomeKeyringResult result,
122                                                              GList             *list,
123                                                              gpointer           user_data);
124 typedef void (*GnomeKeyringOperationGetKeyringInfoCallback) (GnomeKeyringResult result,
125                                                              GnomeKeyringInfo  *info,
126                                                              gpointer           user_data);
127 typedef void (*GnomeKeyringOperationGetItemInfoCallback)    (GnomeKeyringResult   result,
128                                                              GnomeKeyringItemInfo*info,
129                                                              gpointer             user_data);
130 typedef void (*GnomeKeyringOperationGetAttributesCallback)  (GnomeKeyringResult   result,
131                                                              GnomeKeyringAttributeList *attributes,
132                                                              gpointer             user_data);
133 
134 GNOME_KEYRING_DEPRECATED
135 GType                      gnome_keyring_attribute_get_type           (void) G_GNUC_CONST;
136 GNOME_KEYRING_DEPRECATED
137 const gchar*               gnome_keyring_attribute_get_string         (GnomeKeyringAttribute *attribute);
138 GNOME_KEYRING_DEPRECATED
139 guint32                    gnome_keyring_attribute_get_uint32         (GnomeKeyringAttribute *attribute);
140 
141 #define GNOME_KEYRING_TYPE_ATTRIBUTE (gnome_keyring_attribute_get_type ())
142 
143 #define gnome_keyring_attribute_list_index(a, i) g_array_index ((a), GnomeKeyringAttribute, (i))
144 GNOME_KEYRING_DEPRECATED_FOR(g_hash_table_replace)
145 void                       gnome_keyring_attribute_list_append_string (GnomeKeyringAttributeList *attributes,
146                                                                        const char                *name,
147                                                                        const char                *value);
148 GNOME_KEYRING_DEPRECATED
149 void                       gnome_keyring_attribute_list_append_uint32 (GnomeKeyringAttributeList *attributes,
150                                                                        const char                *name,
151                                                                        guint32                    value);
152 GNOME_KEYRING_DEPRECATED_FOR(g_hash_table_new)
153 GnomeKeyringAttributeList *gnome_keyring_attribute_list_new           (void);
154 GNOME_KEYRING_DEPRECATED_FOR(g_hash_table_unref)
155 void                       gnome_keyring_attribute_list_free          (GnomeKeyringAttributeList *attributes);
156 GNOME_KEYRING_DEPRECATED
157 GnomeKeyringAttributeList *gnome_keyring_attribute_list_copy          (GnomeKeyringAttributeList *attributes);
158 GNOME_KEYRING_DEPRECATED
159 GType                      gnome_keyring_attribute_list_get_type      (void) G_GNUC_CONST;
160 GNOME_KEYRING_DEPRECATED
161 GList                     *gnome_keyring_attribute_list_to_glist      (GnomeKeyringAttributeList *attributes);
162 
163 #define GNOME_KEYRING_TYPE_ATTRIBUTE_LIST (gnome_keyring_attribute_list_get_type ())
164 
165 GNOME_KEYRING_DEPRECATED
166 const gchar*               gnome_keyring_result_to_message            (GnomeKeyringResult res);
167 
168 GNOME_KEYRING_DEPRECATED
169 gboolean gnome_keyring_is_available (void);
170 
171 GNOME_KEYRING_DEPRECATED
172 void gnome_keyring_found_free               (GnomeKeyringFound *found);
173 GNOME_KEYRING_DEPRECATED
174 void gnome_keyring_found_list_free          (GList *found_list);
175 GNOME_KEYRING_DEPRECATED
176 GnomeKeyringFound* gnome_keyring_found_copy (GnomeKeyringFound *found);
177 GNOME_KEYRING_DEPRECATED
178 GType gnome_keyring_found_get_type          (void) G_GNUC_CONST;
179 
180 #define GNOME_KEYRING_TYPE_FOUND (gnome_keyring_found_get_type ())
181 
182 GNOME_KEYRING_DEPRECATED
183 void gnome_keyring_cancel_request (gpointer request);
184 
185 GNOME_KEYRING_DEPRECATED_FOR(secret_service_set_alias)
186 gpointer           gnome_keyring_set_default_keyring      (const char                              *keyring,
187                                                            GnomeKeyringOperationDoneCallback        callback,
188                                                            gpointer                                 data,
189                                                            GDestroyNotify                           destroy_data);
190 GNOME_KEYRING_DEPRECATED_FOR(secret_service_set_alias_sync)
191 GnomeKeyringResult gnome_keyring_set_default_keyring_sync (const char                              *keyring);
192 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_for_alias)
193 gpointer           gnome_keyring_get_default_keyring      (GnomeKeyringOperationGetStringCallback   callback,
194                                                            gpointer                                 data,
195                                                            GDestroyNotify                           destroy_data);
196 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_for_alias_sync)
197 GnomeKeyringResult gnome_keyring_get_default_keyring_sync (char                                   **keyring);
198 GNOME_KEYRING_DEPRECATED_FOR(secret_service_get_collections)
199 gpointer           gnome_keyring_list_keyring_names       (GnomeKeyringOperationGetListCallback     callback,
200                                                            gpointer                                 data,
201                                                            GDestroyNotify                           destroy_data);
202 GNOME_KEYRING_DEPRECATED_FOR(secret_service_get_collections)
203 GnomeKeyringResult gnome_keyring_list_keyring_names_sync  (GList                                  **keyrings);
204 GNOME_KEYRING_DEPRECATED
205 gpointer           gnome_keyring_lock_all                 (GnomeKeyringOperationDoneCallback        callback,
206                                                            gpointer                                 data,
207                                                            GDestroyNotify                           destroy_data);
208 GNOME_KEYRING_DEPRECATED
209 GnomeKeyringResult gnome_keyring_lock_all_sync            (void);
210 
211 
212 /* NULL password means ask user */
213 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_create)
214 gpointer           gnome_keyring_create             (const char                                   *keyring_name,
215                                                      const char                                   *password,
216                                                      GnomeKeyringOperationDoneCallback             callback,
217                                                      gpointer                                      data,
218                                                      GDestroyNotify                                destroy_data);
219 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_create_sync)
220 GnomeKeyringResult gnome_keyring_create_sync        (const char                                   *keyring_name,
221                                                      const char                                   *password);
222 GNOME_KEYRING_DEPRECATED_FOR(secret_service_unlock)
223 gpointer           gnome_keyring_unlock             (const char                                   *keyring,
224                                                      const char                                   *password,
225                                                      GnomeKeyringOperationDoneCallback             callback,
226                                                      gpointer                                      data,
227                                                      GDestroyNotify                                destroy_data);
228 GNOME_KEYRING_DEPRECATED_FOR(secret_service_unlock_sync)
229 GnomeKeyringResult gnome_keyring_unlock_sync        (const char                                   *keyring,
230                                                      const char                                   *password);
231 GNOME_KEYRING_DEPRECATED_FOR(secret_service_lock)
232 gpointer           gnome_keyring_lock               (const char                                   *keyring,
233                                                      GnomeKeyringOperationDoneCallback             callback,
234                                                      gpointer                                      data,
235                                                      GDestroyNotify                                destroy_data);
236 GNOME_KEYRING_DEPRECATED_FOR(secret_service_lock_sync)
237 GnomeKeyringResult gnome_keyring_lock_sync          (const char                                   *keyring);
238 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_delete)
239 gpointer           gnome_keyring_delete             (const char                                   *keyring,
240                                                      GnomeKeyringOperationDoneCallback             callback,
241                                                      gpointer                                      data,
242                                                      GDestroyNotify                                destroy_data);
243 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_delete_sync)
244 GnomeKeyringResult gnome_keyring_delete_sync        (const char                                   *keyring);
245 GNOME_KEYRING_DEPRECATED
246 gpointer           gnome_keyring_change_password             (const char                                   *keyring,
247                                                      const char                                   *original,
248                                                      const char                                   *password,
249                                                      GnomeKeyringOperationDoneCallback             callback,
250                                                      gpointer                                      data,
251                                                      GDestroyNotify                                destroy_data);
252 GNOME_KEYRING_DEPRECATED
253 GnomeKeyringResult gnome_keyring_change_password_sync        (const char                                   *keyring,
254                                                          const char                                                        	   *original,
255                                                      const char                                   *password);
256 GNOME_KEYRING_DEPRECATED
257 gpointer           gnome_keyring_get_info           (const char                                   *keyring,
258                                                      GnomeKeyringOperationGetKeyringInfoCallback   callback,
259                                                      gpointer                                      data,
260                                                      GDestroyNotify                                destroy_data);
261 GNOME_KEYRING_DEPRECATED
262 GnomeKeyringResult gnome_keyring_get_info_sync      (const char                                   *keyring,
263                                                      GnomeKeyringInfo                            **info);
264 GNOME_KEYRING_DEPRECATED
265 gpointer           gnome_keyring_set_info           (const char                                   *keyring,
266                                                      GnomeKeyringInfo                             *info,
267                                                      GnomeKeyringOperationDoneCallback             callback,
268                                                      gpointer                                      data,
269                                                      GDestroyNotify                                destroy_data);
270 GNOME_KEYRING_DEPRECATED
271 GnomeKeyringResult gnome_keyring_set_info_sync      (const char                                   *keyring,
272                                                      GnomeKeyringInfo                             *info);
273 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_get_items)
274 gpointer           gnome_keyring_list_item_ids      (const char                                   *keyring,
275                                                      GnomeKeyringOperationGetListCallback          callback,
276                                                      gpointer                                      data,
277                                                      GDestroyNotify                                destroy_data);
278 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_get_items)
279 GnomeKeyringResult gnome_keyring_list_item_ids_sync (const char                                   *keyring,
280                                                      GList                                       **ids);
281 
282 GNOME_KEYRING_DEPRECATED
283 void              gnome_keyring_info_free             (GnomeKeyringInfo *keyring_info);
284 GNOME_KEYRING_DEPRECATED
285 GnomeKeyringInfo *gnome_keyring_info_copy             (GnomeKeyringInfo *keyring_info);
286 GNOME_KEYRING_DEPRECATED
287 GType             gnome_keyring_info_get_type         (void) G_GNUC_CONST;
288 GNOME_KEYRING_DEPRECATED
289 void              gnome_keyring_info_set_lock_on_idle (GnomeKeyringInfo *keyring_info,
290                                                        gboolean          value);
291 GNOME_KEYRING_DEPRECATED
292 gboolean          gnome_keyring_info_get_lock_on_idle (GnomeKeyringInfo *keyring_info);
293 GNOME_KEYRING_DEPRECATED
294 void              gnome_keyring_info_set_lock_timeout (GnomeKeyringInfo *keyring_info,
295                                                        guint32           value);
296 GNOME_KEYRING_DEPRECATED
297 guint32           gnome_keyring_info_get_lock_timeout (GnomeKeyringInfo *keyring_info);
298 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_get_modified)
299 time_t            gnome_keyring_info_get_mtime        (GnomeKeyringInfo *keyring_info);
300 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_get_created)
301 time_t            gnome_keyring_info_get_ctime        (GnomeKeyringInfo *keyring_info);
302 GNOME_KEYRING_DEPRECATED_FOR(secret_collection_get_locked)
303 gboolean          gnome_keyring_info_get_is_locked    (GnomeKeyringInfo *keyring_info);
304 
305 #define GNOME_KEYRING_TYPE_INFO (gnome_keyring_info_get_type ())
306 
307 GNOME_KEYRING_DEPRECATED_FOR(secret_service_search)
308 gpointer gnome_keyring_find_items  (GnomeKeyringItemType                  type,
309                                     GnomeKeyringAttributeList            *attributes,
310                                     GnomeKeyringOperationGetListCallback  callback,
311                                     gpointer                              data,
312                                     GDestroyNotify                        destroy_data);
313 GNOME_KEYRING_DEPRECATED_FOR(secret_service_search)
314 gpointer gnome_keyring_find_itemsv (GnomeKeyringItemType                  type,
315                                     GnomeKeyringOperationGetListCallback  callback,
316                                     gpointer                              data,
317                                     GDestroyNotify                        destroy_data,
318                                     ...);
319 
320 GNOME_KEYRING_DEPRECATED_FOR(secret_service_search_sync)
321 GnomeKeyringResult gnome_keyring_find_items_sync  (GnomeKeyringItemType        type,
322                                                    GnomeKeyringAttributeList  *attributes,
323                                                    GList                     **found);
324 GNOME_KEYRING_DEPRECATED_FOR(secret_service_search_sync)
325 GnomeKeyringResult gnome_keyring_find_itemsv_sync (GnomeKeyringItemType        type,
326                                                    GList                     **found,
327                                                    ...);
328 
329 GNOME_KEYRING_DEPRECATED_FOR(secret_item_create)
330 gpointer           gnome_keyring_item_create              (const char                                 *keyring,
331                                                            GnomeKeyringItemType                        type,
332                                                            const char                                 *display_name,
333                                                            GnomeKeyringAttributeList                  *attributes,
334                                                            const char                                 *secret,
335                                                            gboolean                                    update_if_exists,
336                                                            GnomeKeyringOperationGetIntCallback         callback,
337                                                            gpointer                                    data,
338                                                            GDestroyNotify                              destroy_data);
339 GNOME_KEYRING_DEPRECATED_FOR(secret_item_create_sync)
340 GnomeKeyringResult gnome_keyring_item_create_sync         (const char                                 *keyring,
341                                                            GnomeKeyringItemType                        type,
342                                                            const char                                 *display_name,
343                                                            GnomeKeyringAttributeList                  *attributes,
344                                                            const char                                 *secret,
345                                                            gboolean                                    update_if_exists,
346                                                            guint32                                    *item_id);
347 GNOME_KEYRING_DEPRECATED_FOR(secret_item_delete)
348 gpointer           gnome_keyring_item_delete              (const char                                 *keyring,
349                                                            guint32                                     id,
350                                                            GnomeKeyringOperationDoneCallback           callback,
351                                                            gpointer                                    data,
352                                                            GDestroyNotify                              destroy_data);
353 GNOME_KEYRING_DEPRECATED_FOR(secret_item_delete_sync)
354 GnomeKeyringResult gnome_keyring_item_delete_sync         (const char                                 *keyring,
355                                                            guint32                                     id);
356 GNOME_KEYRING_DEPRECATED
357 gpointer           gnome_keyring_item_get_info            (const char                                 *keyring,
358                                                            guint32                                     id,
359                                                            GnomeKeyringOperationGetItemInfoCallback    callback,
360                                                            gpointer                                    data,
361                                                            GDestroyNotify                              destroy_data);
362 GNOME_KEYRING_DEPRECATED
363 GnomeKeyringResult gnome_keyring_item_get_info_sync       (const char                                 *keyring,
364                                                            guint32                                     id,
365                                                            GnomeKeyringItemInfo                      **info);
366 GNOME_KEYRING_DEPRECATED
367 gpointer           gnome_keyring_item_get_info_full       (const char                                 *keyring,
368                                                            guint32                                     id,
369                                                            guint32                                     flags,
370                                                            GnomeKeyringOperationGetItemInfoCallback    callback,
371                                                            gpointer                                    data,
372                                                            GDestroyNotify                              destroy_data);
373 GNOME_KEYRING_DEPRECATED
374 GnomeKeyringResult gnome_keyring_item_get_info_full_sync  (const char                                 *keyring,
375                                                            guint32                                     id,
376                                                            guint32                                     flags,
377                                                             GnomeKeyringItemInfo                      **info);
378 GNOME_KEYRING_DEPRECATED
379 gpointer           gnome_keyring_item_set_info            (const char                                 *keyring,
380                                                            guint32                                     id,
381                                                            GnomeKeyringItemInfo                       *info,
382                                                            GnomeKeyringOperationDoneCallback           callback,
383                                                            gpointer                                    data,
384                                                            GDestroyNotify                              destroy_data);
385 GNOME_KEYRING_DEPRECATED
386 GnomeKeyringResult gnome_keyring_item_set_info_sync       (const char                                 *keyring,
387                                                            guint32                                     id,
388                                                            GnomeKeyringItemInfo                       *info);
389 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_attributes)
390 gpointer           gnome_keyring_item_get_attributes      (const char                                 *keyring,
391                                                            guint32                                     id,
392                                                            GnomeKeyringOperationGetAttributesCallback  callback,
393                                                            gpointer                                    data,
394                                                            GDestroyNotify                              destroy_data);
395 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_attributes)
396 GnomeKeyringResult gnome_keyring_item_get_attributes_sync (const char                                 *keyring,
397                                                            guint32                                     id,
398                                                            GnomeKeyringAttributeList                 **attributes);
399 GNOME_KEYRING_DEPRECATED_FOR(secret_item_set_attributes)
400 gpointer           gnome_keyring_item_set_attributes      (const char                                 *keyring,
401                                                            guint32                                     id,
402                                                            GnomeKeyringAttributeList                  *attributes,
403                                                            GnomeKeyringOperationDoneCallback           callback,
404                                                            gpointer                                    data,
405                                                            GDestroyNotify                              destroy_data);
406 GNOME_KEYRING_DEPRECATED_FOR(secret_item_set_attributes_sync)
407 GnomeKeyringResult gnome_keyring_item_set_attributes_sync (const char                                 *keyring,
408                                                            guint32                                     id,
409                                                            GnomeKeyringAttributeList                  *attributes);
410 
411 GNOME_KEYRING_DEPRECATED
412 void                  gnome_keyring_item_info_free             (GnomeKeyringItemInfo *item_info);
413 GNOME_KEYRING_DEPRECATED
414 GnomeKeyringItemInfo *gnome_keyring_item_info_new              (void);
415 GNOME_KEYRING_DEPRECATED
416 GnomeKeyringItemInfo *gnome_keyring_item_info_copy             (GnomeKeyringItemInfo *item_info);
417 GNOME_KEYRING_DEPRECATED
418 GType                 gnome_keyring_item_info_get_gtype        (void) G_GNUC_CONST;
419 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_schema_name)
420 GnomeKeyringItemType  gnome_keyring_item_info_get_type         (GnomeKeyringItemInfo *item_info);
421 GNOME_KEYRING_DEPRECATED
422 void                  gnome_keyring_item_info_set_type         (GnomeKeyringItemInfo *item_info,
423                                                                 GnomeKeyringItemType  type);
424 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_secret)
425 char *                gnome_keyring_item_info_get_secret       (GnomeKeyringItemInfo *item_info);
426 GNOME_KEYRING_DEPRECATED_FOR(secret_item_set_secret)
427 void                  gnome_keyring_item_info_set_secret       (GnomeKeyringItemInfo *item_info,
428                                                                 const char           *value);
429 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_label)
430 char *                gnome_keyring_item_info_get_display_name (GnomeKeyringItemInfo *item_info);
431 GNOME_KEYRING_DEPRECATED_FOR(secret_item_set_label)
432 void                  gnome_keyring_item_info_set_display_name (GnomeKeyringItemInfo *item_info,
433                                                                 const char           *value);
434 GNOME_KEYRING_DEPRECATED_FOR(secret_item_get_modified)
435 time_t                gnome_keyring_item_info_get_mtime        (GnomeKeyringItemInfo *item_info);
436 GNOME_KEYRING_DEPRECATED_FOR(secret_item_set_modified)
437 time_t                gnome_keyring_item_info_get_ctime        (GnomeKeyringItemInfo *item_info);
438 
439 #define GNOME_KEYRING_TYPE_ITEM_INFO (gnome_keyring_item_info_get_gtype ())
440 
441 /* ------------------------------------------------------------------------------
442  * A Simpler API
443  */
444 
445 /*
446  * This structure exists to help languages which have difficulty with
447  * anonymous structures and is the same as the anonymous struct which
448  * is defined in GnomeKeyringPasswordSchema, but it cannot be used
449  * directly in GnomeKeyringPasswordSchema for API compatibility
450  * reasons.
451  */
452 typedef struct {
453 	const gchar* name;
454 	GnomeKeyringAttributeType type;
455 } GnomeKeyringPasswordSchemaAttribute;
456 
457 typedef struct {
458 	GnomeKeyringItemType item_type;
459 	struct {
460 		const gchar* name;
461 		GnomeKeyringAttributeType type;
462 	} attributes[32];
463 
464 	/* <private> */
465 	gpointer reserved1;
466 	gpointer reserved2;
467 	gpointer reserved3;
468 } GnomeKeyringPasswordSchema;
469 
470 extern const GnomeKeyringPasswordSchema* GNOME_KEYRING_NETWORK_PASSWORD;
471 
472 GNOME_KEYRING_DEPRECATED_FOR(secret_password_store)
473 gpointer                 gnome_keyring_store_password         (const GnomeKeyringPasswordSchema* schema,
474                                                                const gchar *keyring,
475                                                                const gchar *display_name,
476                                                                const gchar *password,
477                                                                GnomeKeyringOperationDoneCallback callback,
478                                                                gpointer data,
479                                                                GDestroyNotify destroy_data,
480                                                                ...) G_GNUC_NULL_TERMINATED;
481 
482 GNOME_KEYRING_DEPRECATED_FOR(secret_password_store_sync)
483 GnomeKeyringResult       gnome_keyring_store_password_sync    (const GnomeKeyringPasswordSchema* schema,
484                                                                const gchar *keyring,
485                                                                const gchar *display_name,
486                                                                const gchar *password,
487                                                                ...) G_GNUC_NULL_TERMINATED;
488 
489 GNOME_KEYRING_DEPRECATED_FOR(secret_password_lookup)
490 gpointer                 gnome_keyring_find_password          (const GnomeKeyringPasswordSchema* schema,
491                                                                GnomeKeyringOperationGetStringCallback callback,
492                                                                gpointer data,
493                                                                GDestroyNotify destroy_data,
494                                                                ...) G_GNUC_NULL_TERMINATED;
495 
496 GNOME_KEYRING_DEPRECATED_FOR(secret_password_lookup_sync)
497 GnomeKeyringResult       gnome_keyring_find_password_sync     (const GnomeKeyringPasswordSchema* schema,
498                                                                gchar **password,
499                                                                ...) G_GNUC_NULL_TERMINATED;
500 
501 GNOME_KEYRING_DEPRECATED_FOR(secret_password_clear)
502 gpointer                 gnome_keyring_delete_password        (const GnomeKeyringPasswordSchema* schema,
503                                                                GnomeKeyringOperationDoneCallback callback,
504                                                                gpointer data,
505                                                                GDestroyNotify destroy_data,
506                                                                ...) G_GNUC_NULL_TERMINATED;
507 
508 GNOME_KEYRING_DEPRECATED_FOR(secret_password_clear_sync)
509 GnomeKeyringResult       gnome_keyring_delete_password_sync   (const GnomeKeyringPasswordSchema* schema,
510                                                                ...) G_GNUC_NULL_TERMINATED;
511 
512 GNOME_KEYRING_DEPRECATED_FOR(secret_password_free)
513 void                     gnome_keyring_free_password          (gchar *password);
514 
515 /* ------------------------------------------------------------------------------
516  * Special Helpers for network password items
517  */
518 
519 typedef struct {
520 	char *keyring;
521 	guint32 item_id;
522 
523 	char *protocol;
524 	char *server;
525 	char *object;
526 	char *authtype;
527 	guint32 port;
528 
529 	char *user;
530 	char *domain;
531 	char *password;
532 } GnomeKeyringNetworkPasswordData;
533 
534 GNOME_KEYRING_DEPRECATED
535 void gnome_keyring_network_password_free (GnomeKeyringNetworkPasswordData *data);
536 GNOME_KEYRING_DEPRECATED
537 void gnome_keyring_network_password_list_free (GList *list);
538 
539 GNOME_KEYRING_DEPRECATED_FOR(SECRET_SCHEMA_COMPAT_NETWORK)
540 gpointer           gnome_keyring_find_network_password      (const char                            *user,
541                                                              const char                            *domain,
542                                                              const char                            *server,
543                                                              const char                            *object,
544                                                              const char                            *protocol,
545                                                              const char                            *authtype,
546                                                              guint32                                port,
547                                                              GnomeKeyringOperationGetListCallback   callback,
548                                                              gpointer                               data,
549                                                              GDestroyNotify                         destroy_data);
550 GNOME_KEYRING_DEPRECATED_FOR(SECRET_SCHEMA_COMPAT_NETWORK)
551 GnomeKeyringResult gnome_keyring_find_network_password_sync (const char                            *user,
552                                                              const char                            *domain,
553                                                              const char                            *server,
554                                                              const char                            *object,
555                                                              const char                            *protocol,
556                                                              const char                            *authtype,
557                                                              guint32                                port,
558                                                              GList                                **results);
559 GNOME_KEYRING_DEPRECATED_FOR(SECRET_SCHEMA_COMPAT_NETWORK)
560 gpointer           gnome_keyring_set_network_password       (const char                            *keyring,
561                                                              const char                            *user,
562                                                              const char                            *domain,
563                                                              const char                            *server,
564                                                              const char                            *object,
565                                                              const char                            *protocol,
566                                                              const char                            *authtype,
567                                                              guint32                                port,
568                                                              const char                            *password,
569                                                              GnomeKeyringOperationGetIntCallback    callback,
570                                                              gpointer                               data,
571                                                              GDestroyNotify                         destroy_data);
572 GNOME_KEYRING_DEPRECATED_FOR(SECRET_SCHEMA_COMPAT_NETWORK)
573 GnomeKeyringResult gnome_keyring_set_network_password_sync  (const char                            *keyring,
574                                                              const char                            *user,
575                                                              const char                            *domain,
576                                                              const char                            *server,
577                                                              const char                            *object,
578                                                              const char                            *protocol,
579                                                              const char                            *authtype,
580                                                              guint32                                port,
581                                                              const char                            *password,
582                                                              guint32                               *item_id);
583 
584 typedef enum {
585 	GNOME_KEYRING_ACCESS_ASK,
586 	GNOME_KEYRING_ACCESS_DENY,
587 	GNOME_KEYRING_ACCESS_ALLOW
588 } GnomeKeyringAccessRestriction;
589 
590 typedef struct GnomeKeyringAccessControl GnomeKeyringAccessControl;
591 typedef struct GnomeKeyringApplicationRef GnomeKeyringApplicationRef;
592 
593 typedef enum {
594 	GNOME_KEYRING_ACCESS_READ = 1<<0,
595 	GNOME_KEYRING_ACCESS_WRITE = 1<<1,
596 	GNOME_KEYRING_ACCESS_REMOVE = 1<<2
597 } GnomeKeyringAccessType;
598 
599 GNOME_KEYRING_DEPRECATED
600 GnomeKeyringResult gnome_keyring_daemon_set_display_sync       (const char *display);
601 
602 GNOME_KEYRING_DEPRECATED
603 GnomeKeyringResult gnome_keyring_daemon_prepare_environment_sync (void);
604 
605 GNOME_KEYRING_DEPRECATED
606 gpointer           gnome_keyring_item_grant_access_rights      (const gchar                       *keyring,
607                                                                 const gchar                       *display_name,
608                                                                 const gchar                       *full_path,
609                                                                 const guint32                      id,
610                                                                 const GnomeKeyringAccessType       rights,
611                                                                 GnomeKeyringOperationDoneCallback  callback,
612                                                                 gpointer                           data,
613                                                                 GDestroyNotify                     destroy_data);
614 
615 GNOME_KEYRING_DEPRECATED
616 GnomeKeyringResult gnome_keyring_item_grant_access_rights_sync (const char                   *keyring,
617                                                                 const char                   *display_name,
618                                                                 const char                   *full_path,
619                                                                 const guint32                id,
620                                                                 const GnomeKeyringAccessType rights);
621 
622 
623 GNOME_KEYRING_DEPRECATED
624 GnomeKeyringApplicationRef * gnome_keyring_application_ref_new          (void);
625 GNOME_KEYRING_DEPRECATED
626 GnomeKeyringApplicationRef * gnome_keyring_application_ref_copy         (const GnomeKeyringApplicationRef *app);
627 GNOME_KEYRING_DEPRECATED
628 void                         gnome_keyring_application_ref_free         (GnomeKeyringApplicationRef       *app);
629 GNOME_KEYRING_DEPRECATED
630 GType                        gnome_keyring_application_ref_get_type     (void) G_GNUC_CONST;
631 
632 #define GNOME_KEYRING_TYPE_APPLICATION_REF (gnome_keyring_application_ref_get_type ())
633 
634 GNOME_KEYRING_DEPRECATED
635 GnomeKeyringAccessControl *  gnome_keyring_access_control_new  (const GnomeKeyringApplicationRef *application,
636                                                                 GnomeKeyringAccessType            types_allowed);
637 GNOME_KEYRING_DEPRECATED
638 GnomeKeyringAccessControl *  gnome_keyring_access_control_copy (GnomeKeyringAccessControl        *ac);
639 GNOME_KEYRING_DEPRECATED
640 GType                        gnome_keyring_access_control_get_type (void) G_GNUC_CONST;
641 GNOME_KEYRING_DEPRECATED
642 void                         gnome_keyring_access_control_free (GnomeKeyringAccessControl *ac);
643 
644 #define GNOME_KEYRING_TYPE_ACCESS_CONTROL (gnome_keyring_access_control_get_type ())
645 
646 GNOME_KEYRING_DEPRECATED
647 GList * gnome_keyring_acl_copy            (GList                     *list);
648 GNOME_KEYRING_DEPRECATED
649 void    gnome_keyring_acl_free            (GList                     *acl);
650 
651 GNOME_KEYRING_DEPRECATED
652 char *                gnome_keyring_item_ac_get_display_name   (GnomeKeyringAccessControl *ac);
653 GNOME_KEYRING_DEPRECATED
654 void                  gnome_keyring_item_ac_set_display_name   (GnomeKeyringAccessControl *ac,
655                                                                 const char           *value);
656 
657 GNOME_KEYRING_DEPRECATED
658 char *                gnome_keyring_item_ac_get_path_name      (GnomeKeyringAccessControl *ac);
659 GNOME_KEYRING_DEPRECATED
660 void                  gnome_keyring_item_ac_set_path_name      (GnomeKeyringAccessControl *ac,
661                                                                 const char           *value);
662 
663 GNOME_KEYRING_DEPRECATED
664 GnomeKeyringAccessType gnome_keyring_item_ac_get_access_type   (GnomeKeyringAccessControl *ac);
665 GNOME_KEYRING_DEPRECATED
666 void                   gnome_keyring_item_ac_set_access_type   (GnomeKeyringAccessControl *ac,
667                                                                 const GnomeKeyringAccessType value);
668 
669 GNOME_KEYRING_DEPRECATED
670 gpointer           gnome_keyring_item_get_acl             (const char                                 *keyring,
671                                                            guint32                                     id,
672                                                            GnomeKeyringOperationGetListCallback        callback,
673                                                            gpointer                                    data,
674                                                            GDestroyNotify                              destroy_data);
675 GNOME_KEYRING_DEPRECATED
676 GnomeKeyringResult gnome_keyring_item_get_acl_sync        (const char                                 *keyring,
677                                                            guint32                                     id,
678                                                            GList                                     **acl);
679 GNOME_KEYRING_DEPRECATED
680 gpointer           gnome_keyring_item_set_acl             (const char                                 *keyring,
681                                                            guint32                                     id,
682                                                            GList                                      *acl,
683                                                            GnomeKeyringOperationDoneCallback           callback,
684                                                            gpointer                                    data,
685                                                            GDestroyNotify                              destroy_data);
686 GNOME_KEYRING_DEPRECATED
687 GnomeKeyringResult gnome_keyring_item_set_acl_sync        (const char                                 *keyring,
688                                                            guint32                                     id,
689                                                            GList                                      *acl);
690 
691 #endif /* GNOME_KEYRING_DISABLE_DEPRECATED */
692 
693 G_END_DECLS
694 
695 #endif /* GNOME_KEYRING_H */
696