diff --git a/docs/reference/libsecret/Makefile.am b/docs/reference/libsecret/Makefile.am
index c2038dc..eb2b19e 100644
--- a/docs/reference/libsecret/Makefile.am
+++ b/docs/reference/libsecret/Makefile.am
@@ -69,12 +69,15 @@ HTML_IMAGES=
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files=libsecret-examples.sgml
+content_files = \
+ libsecret-examples.sgml \
+ migrating-libgnome-keyring.xml
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
# These files must be listed here *and* in content_files
# e.g. expand_content_files=running.sgml
-expand_content_files=
+expand_content_files = \
+ migrating-libgnome-keyring.xml
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
@@ -90,7 +93,9 @@ include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
-# EXTRA_DIST +=
+EXTRA_DIST += \
+ version.xml.in \
+ migrating-libgnome-keyring.xml
# Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
diff --git a/docs/reference/libsecret/libsecret-docs.sgml b/docs/reference/libsecret/libsecret-docs.sgml
index c7b168a..428725a 100644
--- a/docs/reference/libsecret/libsecret-docs.sgml
+++ b/docs/reference/libsecret/libsecret-docs.sgml
@@ -33,6 +33,8 @@
+
+
diff --git a/docs/reference/libsecret/libsecret-sections.txt b/docs/reference/libsecret/libsecret-sections.txt
index c134423..264a8b2 100644
--- a/docs/reference/libsecret/libsecret-sections.txt
+++ b/docs/reference/libsecret/libsecret-sections.txt
@@ -131,6 +131,7 @@ secret_password_free
secret-schemasecret/secret.h
SECRET_SCHEMA_NOTE
+SECRET_SCHEMA_COMPAT_NETWORK
SecretSchema
SecretSchemaFlags
SecretSchemaAttribute
@@ -146,7 +147,6 @@ secret_schema_attribute_type_get_type
secret_schema_flags_get_type
SECRET_TYPE_SCHEMA_FLAGS
SECRET_TYPE_SCHEMA_ATTRIBUTE_TYPE
-SECRET_SCHEMA_COMPAT_NETWORK
diff --git a/docs/reference/libsecret/migrating-libgnome-keyring.xml b/docs/reference/libsecret/migrating-libgnome-keyring.xml
new file mode 100644
index 0000000..a675526
--- /dev/null
+++ b/docs/reference/libsecret/migrating-libgnome-keyring.xml
@@ -0,0 +1,839 @@
+
+Migrating from libgnome-keyring
+
+
+ Introduction
+
+ Conceptually, libgnome-keyring and libsecret are fairly similar. Both
+ have keyrings, items, and ways to store and retrieve passwords. In both
+ cases items have attributes. The keys and values of attributes are used
+ to lookup a password that was stored.
+
+ There is a
+ simple password API for storing and retrieving passwords
+ which is the easiest and recommended way to store passwords. And then
+ there is a more complicated API which models all the various collections
+ and items, along with all the possible actions that can be performed on them.
+
+ libsecret uses the
+ Secret Service DBus API
+ to communicate with gnome-keyring-daemon, and as such exposes features
+ based on that DBus API.
+
+ libsecret has been designed to be threadsafe, and uses the 'GDBus'
+ code in gio to accomplish this.
+
+ Keyrings are called 'collections' in libsecret.
+
+ See the relevant section for specifics about how to port the
+ libgnome-keyring functions or symbols in your project.
+
+
+
+ API conversion
+ Here are some clues on how to migrate various libgnome-keyring
+ API functions and their logical equivalents in libsecret.
+
+
+ Item attributes
+
+ Remember that attributes are not, and never have been stored in
+ an encrypted fashion. They are not part of the 'secret', but instead
+ are a way to lookup a secret item.
+
+ All attributes in libsecret are stored as strings. Sets of attributes
+ are represented by #GHashTables and the keys and values of
+ these hash tables are strings.
+
+ libsecret is far more focused on schemas,
+ and encourages users to define a #SecretSchema for their password storage.
+ The schema defines which attributes are allowed an item. Each schema has
+ a name which is usually a dotted string (eg: org.gnome.MyProject.Password).
+ This schema name is stored internally in the item attributes.
+
+ Schemas define whether an attribute should look like an integer,
+ a boolean, or a free-form string. These types are used when validating
+ the attribute values, even though the attribute values are stored and
+ matched as strings. Since attribute values are used primarily
+ for lookup of items it's important that the string representations of
+ integers and booleans are always identical. Boolean values are stored
+ as the strings true and false.
+ Integer values are stored in decimal, with a preceeding negative sign
+ for negative integers. libsecret facilitates this using the
+ secret_attributes_build() and secret_attributes_buildv() functions.
+
+ Attributes are meant to be used for lookup of items; they're not
+ designed to be used as a generic key/value database. Although you can
+ force libsecret to do the latter, it's better to store your account
+ information elsewhere if possible, and use libsecret to store the password
+ or other secret.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ #GnomeKeyringAttributeList
+ a #GHashTable of string keys and values
+
+
+ #GnomeKeyringAttribute
+ a key/value pair in a #GHashTable of strings
+
+
+ #GnomeKeyringAttributeType
+ #SecretSchemaAttributeType
+
+
+ %GNOME_KEYRING_ATTRIBUTE_TYPE_STRING
+ %SECRET_SCHEMA_ATTRIBUTE_STRING
+
+
+ %GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
+ %SECRET_SCHEMA_ATTRIBUTE_INTEGER
+
+
+ gnome_keyring_attribute_list_index()
+ use g_hash_table_lookup() on the attributes hash table
+
+
+ gnome_keyring_attribute_get_string()
+ use g_hash_table_lookup() on the attributes hash table
+
+
+ gnome_keyring_attribute_get_uint32()
+ no equivalent, use g_hash_table_lookup()
+
+
+ gnome_keyring_attribute_list_append_string()
+ secret_attributes_build()
+
+
+ gnome_keyring_attribute_list_append_uint32()
+ secret_attributes_build()
+
+
+ gnome_keyring_attribute_list_copy()
+ g_hash_table_ref()
+
+
+ gnome_keyring_attribute_list_free()
+ g_hash_table_unref()
+
+
+ gnome_keyring_attribute_list_index()
+ no equivalent, use g_hash_table_lookup()
+
+
+ gnome_keyring_attribute_list_new()
+ secret_attributes_build()
+
+
+
+
+
+
+ Working with schemas
+
+ libsecret is far more focused on schemas, and encourages users to
+ define a #SecretSchema for their password storage. The schema defines
+ which attributes are allowed an item. Each schema has a name which
+ is usually a dotted string (eg: org.gnome.MyProject.Password).
+ This name is stored in the item attributes. The schema name is also
+ used when looking up an item, to make sure that the stored schema
+ matches that used during the lookup. If you wish to lookup items that
+ were stored by libgnome-keyring, you should specify the
+ %SECRET_SCHEMA_DONT_MATCH_NAME flag in the schema so that the schema
+ name is not matched, since it was not stored by libgnome-keyring.
+
+ Schemas define whether an attribute should look like an integer,
+ a boolean, or a free-form string. These types are used when validating
+ the attribute values stored, even though the attribute values are
+ stored and matched as strings.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ #GnomeKeyringPasswordSchema
+ #SecretSchema
+
+
+ #GnomeKeyringPasswordSchemaAttribute
+ #SecretSchemaAttribute
+
+
+ %GNOME_KEYRING_ITEM_APPLICATION_SECRET
+ no equivalent
+
+
+ %GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD
+ no equivalent
+
+
+ %GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD
+ no equivalent
+
+
+ %GNOME_KEYRING_ITEM_PK_STORAGE
+ no equivalent
+
+
+ %GNOME_KEYRING_ITEM_GENERIC_SECRET
+ no equivalent, define a specific schema with an appropriate dotted name
+
+
+ %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
+ the %SECRET_SCHEMA_COMPAT_NETWORK schema, although not recommended for new uses
+
+
+ %GNOME_KEYRING_ITEM_NOTE
+ the %SECRET_SCHEMA_NOTE schema
+
+
+ %GNOME_KEYRING_NETWORK_PASSWORD
+ the %SECRET_SCHEMA_COMPAT_NETWORK schema, although not recommended for new uses
+
+
+
+
+
+
+
+ Storing passwords and items
+
+ It's encouraged to use a #SecretSchema when storing items and
+ passwords.
+
+ By default most ways of storing an item will now overwrite
+ another item with the same attributes in the same keyring. To manually
+ control this behavior use the secret_item_create().
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ %GNOME_KEYRING_DEFAULT
+ %SECRET_COLLECTION_DEFAULT
+
+
+ %GNOME_KEYRING_SESSION
+ %SECRET_COLLECTION_SESSION
+
+
+ gnome_keyring_store_password()
+ secret_password_store()
+
+
+ gnome_keyring_store_password_sync()
+ secret_password_store_sync()
+
+
+ gnome_keyring_set_network_password()
+ secret_password_store() with %SECRET_SCHEMA_COMPAT_NETWORK
+ although this is not recommended for new uses.
+
+
+ gnome_keyring_set_network_password_sync()
+ secret_password_store_sync() with %SECRET_SCHEMA_COMPAT_NETWORK
+ although this is not recommended for new uses.
+
+
+ gnome_keyring_item_create()
+ secret_item_create(), although using secret_password_store()
+ is simpler.
+
+
+ gnome_keyring_item_create_sync()
+ secret_item_create(), although using secret_password_store_sync()
+ is simpler.
+
+
+
+
+
+
+ Searching for passwords and items
+
+ In general libsecret tries not to unlocking keyrings
+ where not necessary. Many search methods only return one item or
+ password that matches, preferring already unlocked items, and recently stored
+ items.
+
+ Attributes are meant to be used for lookup of items; they're not
+ designed to be used as a generic key/value database. Although you can
+ force libsecret to do the latter, it's better to store your account
+ information elsewhere if possible, and use libsecret to store the password
+ or other secret. Because of this many search methods return just the
+ password or secret.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_find_password()
+ secret_password_lookup()
+
+
+ gnome_keyring_find_password_sync()
+ secret_password_lookup_sync()
+
+
+ gnome_keyring_find_items()
+ secret_service_search(), with flags to fine tune behavior
+
+
+ gnome_keyring_find_itemsv()
+ secret_service_search(), with flags to fine tune behavior
+
+
+ gnome_keyring_find_items_sync()
+ secret_service_search_sync(), with flags to fine tune behavior
+
+
+ gnome_keyring_find_itemsv_sync()
+ secret_service_search(), with flags to fine tune behavior
+
+
+ GnomeKeyringFound
+ no equivalent, secret_service_search() returns a #GList of
+ #SecretItems, and other methods return passwords directly.
+
+
+ gnome_keyring_found_copy()
+ no equivalent
+
+
+ gnome_keyring_found_free()
+ g_object_unref() on the each of the items returned from
+ secret_service_search()
+
+
+ gnome_keyring_found_list_free()
+ g_list_free_full() used with g_object_unref() on the items returned from
+ secret_service_search()
+
+
+ gnome_keyring_find_network_password()
+ secret_password_lookup() with %SECRET_SCHEMA_COMPAT_NETWORK,
+ although this only returns one password and no attributes
+
+
+ gnome_keyring_find_network_password_sync()
+ secret_password_lookup_sync() with %SECRET_SCHEMA_COMPAT_NETWORK,
+ although this only returns one password and no attributes
+
+
+ #GnomeKeyringNetworkPasswordData
+ no equivalent, secret_password_lookup() gets the password directly
+ and no attributes
+
+
+ gnome_keyring_network_password_free()
+ no equivalent
+
+
+ gnome_keyring_network_password_list_free()
+ no equivalent
+
+
+
+
+
+
+ Removing passwords and icons
+
+ Neither libgnome-keyring or libsecret allow deletion of locked
+ items. libsecret tries to make it easier to delete all unlocked items
+ matching certain attributes.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_delete_password()
+ secret_password_remove(), although we now try to delete
+ all unlocked matching items
+
+
+ gnome_keyring_delete_password_sync()
+ secret_password_remove_sync(), although we now try to delete
+ all unlocked matching items
+
+
+ gnome_keyring_item_delete()
+ secret_item_delete()
+
+
+ gnome_keyring_item_delete_sync()
+ secret_item_delete_sync()
+
+
+
+
+
+
+ Item management
+
+ In libsecret items are no longer identified by an unsigned integer.
+ Applications should retrieve items based on their attributes. It is also
+ possible to identify an item by its DBus object path.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_item_create()
+ secret_item_create(), although secret_password_store() may be simpler
+
+
+ gnome_keyring_item_create_sync()
+ secret_item_create_sync(), although secret_password_store_sync() may be simpler
+
+
+ gnome_keyring_item_delete()
+ secret_item_delete(), although secret_password_remove() may be simpler
+
+
+ gnome_keyring_item_delete_sync()
+ secret_item_delete_sync(), although secret_password_remove_sync() may be simpler
+
+
+ gnome_keyring_item_get_info()
+ properties are loaded on a #SecretItem automatically, use
+ secret_item_load_secret() to load the secret
+
+
+ gnome_keyring_item_get_info_sync()
+ properties are loaded on a #SecretItem automatically, use
+ secret_item_load_secret_sync() to load the secret
+
+
+ gnome_keyring_item_get_info_full()
+ properties are loaded on a #SecretItem automatically, use
+ secret_item_load_secret() to load the secret
+
+
+ gnome_keyring_item_get_info_full_sync()
+ properties are loaded on a #SecretItem automatically, use
+ secret_item_load_secret_sync() to load the secret
+
+
+ gnome_keyring_item_set_info()
+ use the appropriate setter methods on #SecretItem
+
+
+ gnome_keyring_item_set_info_sync()
+ use the appropriate setter methods on #SecretItem
+
+
+ gnome_keyring_item_get_attributes()
+ secret_item_get_attributes()
+
+
+ gnome_keyring_item_get_attributes_sync()
+ secret_item_get_attributes()
+
+
+ gnome_keyring_item_set_attributes()
+ secret_item_set_attributes()
+
+
+ gnome_keyring_item_set_attributes_sync()
+ secret_item_set_attributes_sync()
+
+
+ #GnomeKeyringItemType
+ replaced by the name of a #SecretSchema
+
+
+ #GnomeKeyringItemInfo
+ #SecretItem
+
+
+ gnome_keyring_item_info_new()
+ no equivalent
+
+
+ gnome_keyring_item_info_copy()
+ no equivalent
+
+
+ gnome_keyring_item_info_free()
+ g_object_unref() on the #SecretItem
+
+
+ gnome_keyring_item_info_get_display_name()
+ secret_item_get_label()
+
+
+ gnome_keyring_item_info_set_display_name()
+ secret_item_set_label()
+
+
+ gnome_keyring_item_info_get_ctime()
+ secret_item_get_created()
+
+
+ gnome_keyring_item_info_get_mtime()
+ secret_item_get_modified()
+
+
+ gnome_keyring_item_info_get_type()
+ secret_item_get_schema_name()
+
+
+ gnome_keyring_item_info_set_type()
+ secret_item_set_attributes() with appropriate schema
+
+
+ gnome_keyring_item_info_get_secret()
+ secret_item_get_secret()
+
+
+ gnome_keyring_item_info_set_secret()
+ secret_item_set_secret() and secret_item_set_secret_sync()
+
+
+ %GNOME_KEYRING_ITEM_INFO_BASICS
+ no equivalent, all basic item properties are loaded on #SecretItem
+ automatically
+
+
+ %GNOME_KEYRING_ITEM_INFO_SECRET
+ use secret_item_load_secret() and secret_item_load_secret_sync() to load
+ the secret for an item.
+
+
+ gnome_keyring_item_info_set_display_name()
+
+
+
+
+
+
+
+ Keyring management
+
+ In libsecret keyrings are called 'collections'. This is the same
+ lingo as the underlying Secret Service DBus API. Keyrings are no longer
+ identified by simple keyring names. Normally applications just use the
+ default keyrings and these are identified by the aliases
+ %SECRET_COLLECTION_DEFAULT and %SECRET_COLLECTION_SESSION. It is also
+ possible to identify collections by their DBus object paths.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_create()
+ secret_collection_create()
+
+
+ gnome_keyring_create_sync()
+ secret_collection_create_sync()
+
+
+ gnome_keyring_delete()
+ secret_collection_delete()
+
+
+ gnome_keyring_delete_sync()
+ secret_collection_delete_sync()
+
+
+ gnome_keyring_change_password()
+ no equivalent, use platform specific DBus APIs
+
+
+ gnome_keyring_change_password_sync()
+ no equivalent, use platform specific DBus APIs
+
+
+ gnome_keyring_list_keyring_names()
+ secret_service_load_collections() and secret_service_get_collections()
+
+
+ gnome_keyring_list_keyring_names_sync()
+ secret_service_load_collections_sync() and secret_service_get_collections()
+
+
+ gnome_keyring_set_default_keyring()
+ secret_service_set_alias()
+
+
+ gnome_keyring_set_default_keyring_sync()
+ secret_service_set_alias_sync()
+
+
+ gnome_keyring_get_default_keyring()
+ secret_collection_for_alias() with %SECRET_COLLECTION_DEFAULT
+
+
+ gnome_keyring_get_default_keyring_sync()
+ secret_collection_for_alias_sync() with %SECRET_COLLECTION_DEFAULT
+
+
+ gnome_keyring_list_item_ids()
+ secret_collection_load_items() and secret_collection_get_items()
+
+
+ gnome_keyring_list_item_ids_sync()
+ secret_collection_load_items_sync() and secret_collection_get_items()
+
+
+ #GnomeKeyringInfo
+ #SecretCollection and properties
+
+
+ gnome_keyring_get_info()
+ no equivalent
+
+
+ gnome_keyring_get_info_sync()
+ no equivalent()
+
+
+ gnome_keyring_set_info()
+ no equivalent, use property setters on #SecretCollection
+
+
+ gnome_keyring_set_info_sync()
+ no equivalent, use property setters on #SecretCollection
+
+
+ gnome_keyring_info_free()
+ no equivalent
+
+
+ gnome_keyring_info_copy()
+ no equivalent
+
+
+ gnome_keyring_info_set_lock_on_idle()
+ no equivalent
+
+
+ gnome_keyring_info_get_lock_on_idle()
+ no equivalent
+
+
+ gnome_keyring_info_set_lock_timeout()
+ no equivalent
+
+
+ gnome_keyring_info_get_lock_timeout()
+ no equivalent
+
+
+ gnome_keyring_info_get_mtime()
+ secret_collection_get_modified()
+
+
+ gnome_keyring_info_get_ctime()
+ secret_collection_get_created()
+
+
+ gnome_keyring_info_get_is_locked()
+ secret_collection_get_locked()
+
+
+
+
+
+
+ Locking and unlocking
+
+ In libsecret you can unlock items directly, and the result is
+ (with gnome-keyring daemon) that the enclosing collection will be unlocked.
+
+ It is no longer possible to pass a password to unlock keyrings.
+ These are automatically prompted for.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_unlock()
+ secret_service_unlock()
+
+
+ gnome_keyring_unlock_sync()
+ secret_service_unlock_sync()
+
+
+ gnome_keyring_lock()
+ secret_service_lock()
+
+
+ gnome_keyring_lock_sync()
+ secret_service_lock_sync()
+
+
+ gnome_keyring_lock_all()
+ no equivalent, use platform specific DBus APIs
+
+
+ gnome_keyring_lock_all_sync()
+ no equivalent, use platform specific DBus APIs
+
+
+
+
+
+
+ Non-pageable memory
+
+ libsecret no longer provides a full API for using non-pageable
+ memory. Use the equivalent API in the Gcr library.
+
+ You can request that passwords are returned in non-pageable
+ memory by using the secret_password_lookup_nonpageable_sync() and
+ secret_password_lookup_nonpageable_finish() functions.
+ In addition the contents of #SecretValue items is stored in
+ non-pageable memory, unless the system doesn't support this.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_memory_alloc()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_memory_free()
+ secret_password_free(), although this only works on strings
+
+
+ gnome_keyring_memory_is_secure()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_memory_new()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_memory_realloc()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_memory_strdup()
+ no equivalent, use #SecretValue which is ref-counted, or use Gcr
+
+
+ gnome_keyring_memory_try_alloc()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_memory_try_realloc()
+ no equivalent, use Gcr
+
+
+ gnome_keyring_free_password()
+ secret_password_free()
+
+
+
+
+
+
+ Errors and cancellation
+
+ libsecret uses standard the standard #GCancellable idiom
+ to cancel operations.
+
+ It is not necessary to check whether the keyring daemon is
+ available before using it. It is started automatically.
+
+ Errors are returned as standard #GError in the usual way.
+ There are fewer errors that are worth handling in an intelligent way,
+ exceptions are in the #SecretError enumeration. It is not recommended
+ to display any #GError message returned by libsecret to the user. Most
+ of the possible errors are DBus communication problems or similar.
+
+ Replacements for related libgnome-keyring functions and types
+ are described below:
+
+ libgnome-keyringlibsecret
+
+
+ gnome_keyring_cancel_request()
+ g_cancellable_cancel() on a #GCancellable passed to the relevant operation
+
+
+ gnome_keyring_is_available()
+ no equivalent, the secret service is autostarted as necessary
+
+
+ gnome_keyring_result_to_message()
+ use the message in the #GError, although most failures are not appropriate for display to the user
+
+
+ %GNOME_KEYRING_RESULT_OK
+ no #GError returned
+
+
+ %GNOME_KEYRING_RESULT_DENIED
+ no longer used, item or collection is simply not unlocked
+
+
+ %GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON
+ %G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND
+
+
+ %GNOME_KEYRING_RESULT_ALREADY_UNLOCKED
+ no error, success returned
+
+
+ %GNOME_KEYRING_RESULT_NO_SUCH_KEYRING
+ keyrings no longer have names, accessing an missing DBus object has usual failure
+
+
+ %GNOME_KEYRING_RESULT_BAD_ARGUMENTS
+ %G_DBUS_ERROR_INVALID_ARGS or precondition failure in libsecret, this is always
+ a programmer error
+
+
+ %GNOME_KEYRING_RESULT_IO_ERROR
+ relevant DBus errors, or %SECRET_ERROR_PROTOCOL
+
+
+ %GNOME_KEYRING_RESULT_CANCELLED
+ %G_IO_ERROR_CANCELLED
+
+
+ %GNOME_KEYRING_RESULT_KEYRING_ALREADY_EXISTS
+ no error, simply returns already existing keyring
+
+
+ %GNOME_KEYRING_RESULT_NO_MATCH
+ on error, an empty list is returned
+
+
+ gnome_keyring_string_list_free()
+ no equivalent
+
+
+
+
+
+
+
+
diff --git a/library/secret-schema.c b/library/secret-schema.c
index f625b99..a35eea8 100644
--- a/library/secret-schema.c
+++ b/library/secret-schema.c
@@ -78,6 +78,11 @@
*
* Attributes are stored as strings in the Secret Service, and the attribute
* types simply define standard ways to store integer and boolean values as strings.
+ * Attributes are represented in libsecret via a #GHashTable with string keys and
+ * values. Even for values that defined as an integer or boolean in the schema,
+ * the attribute values in the #GHashTable are strings. Boolean values are stored
+ * as the strings 'true' and 'false'. Integer values are stored in decimal, with
+ * a preceeding negative sign for negative integers.
*
* Schemas are handled entirely on the client side by this library. The name of the
* schema is automatically stored as an attribute on the item.
diff --git a/library/secret-schemas.c b/library/secret-schemas.c
index 5f10a1a..34798d0 100644
--- a/library/secret-schemas.c
+++ b/library/secret-schemas.c
@@ -16,6 +16,14 @@
#include "secret-schema.h"
+/**
+ * SECRET_SCHEMA_NOTE:
+ *
+ * A predefined schema for personal passwords stored by the user in the
+ * password manager. This schema has no attributes, and the items are not
+ * meant to be used automatically by applications.
+ */
+
static const SecretSchema note_schema = {
"org.gnome.keyring.Note",
SECRET_SCHEMA_DONT_MATCH_NAME,
@@ -26,6 +34,32 @@ static const SecretSchema note_schema = {
const SecretSchema * SECRET_SCHEMA_NOTE = ¬e_schema;
+/**
+ * SECRET_SCHEMA_COMPAT_NETWORK:
+ *
+ * A predefined schema that is compatible with items stored via the
+ * libgnome-keyring 'network password' functions. This is meant to be used by
+ * applications migrating from libgnome-keyring which stored their secrets as
+ * 'network passwords'. It is not recommended that new code use this schema.
+ *
+ * The following attributes exist in the schema:
+ * Attributes:
+ * user:
+ * The user name (string).
+ * domain:
+ * The login domain or realm (string).
+ * object:
+ * The object or path (string).
+ * protocol:
+ * The protocol (a string like 'http').
+ * port:
+ * The network port (integer).
+ * server:
+ * The hostname or server (string).
+ * authtype:
+ * The authentication type (string).
+ *
+ */
static const SecretSchema network_schema = {
"org.gnome.keyring.NetworkPassword",