[Authentication] Move GetSecrets, SetSecrets and related

Michael Albinus michael.albinus at gmx.de
Tue Dec 8 08:27:34 PST 2009



Stef Walter <stef-list-Kw7WoRPxbEs9XoPSrs7Ehg at public.gmane.org> writes:

> Some changes, patch included.
>
>  * I've implemented GetSecret, SetSecret on the item interface.
>  * The Secret struct has an object path to the session used
>    to encode it instead of a the algorithm (which was rather
>    useless as Michael pointed out).
>  * Added secret parameter to CreateItem so it's not a two
>    step process.
>  * Move GetSecrets to Service interface.
>  * Updated documentation.
>
> Unless there are objections, I'll be committing this change. Thanks for
> looking it over.

I'm using git commit f3e360f119c6361940d2e4aecbd93395973688c1 (Wed Nov
25 01:48:08 2009 +0000). "GetSecret" is still on "org.freedesktop.Secrets.Service".

I get the following error on "GetSecret": 

process 10395: arguments to dbus_message_iter_open_container() were incorrect, assertion "(type == DBUS_TYPE_STRUCT && contained_signature == NULL) || (type == DBUS_TYPE_DICT_ENTRY && contained_signature == NULL) || (type == DBUS_TYPE_VARIANT && contained_signature != NULL) || (type == DBUS_TYPE_ARRAY && contained_signature != NULL)" failed in file dbus-message.c line 2393.
This is normally a bug in some application using the D-Bus library.

I could debug it down to

---
#0  gkd_secret_secret_append (secret=0x8141500, iter=0xbffff398)
    at gkd-secret-secret.c:90
#1  0x08065d4d in item_method_get_secret (self=0x8111c90, message=0x8128a18)
    at gkd-secret-objects.c:317
#2  item_message_handler (self=0x8111c90, message=0x8128a18)
    at gkd-secret-objects.c:371
#3  gkd_secret_objects_dispatch (self=0x8111c90, message=0x8128a18)
    at gkd-secret-objects.c:847
#4  0x0805e307 in service_dispatch_message (self=0x811f0c0, message=0x8128a18)
    at gkd-secret-service.c:570
#5  0x0805f1d3 in gkd_secret_service_filter_handler (conn=0x8127188, 
    message=0x8128a18, user_data=0x811f0c0) at gkd-secret-service.c:648
#6  0x00ebec8d in dbus_connection_dispatch () from /lib/libdbus-1.so.3
#7  0x080ea02d in message_queue_dispatch (source=0x8128b40, callback=0, 
    user_data=0x0) at egg-dbus.c:75
#8  0x00216e78 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#9  0x0021a720 in ?? () from /lib/libglib-2.0.so.0
#10 0x0021ab8f in g_main_loop_run () from /lib/libglib-2.0.so.0
#11 0x08054342 in main (argc=1, argv=0xbffff8c4) at gkr-daemon.c:869
---

dbus-monitor output is

---
method call sender=:1.130 -> dest=org.freedesktop.secrets serial=182 path=/org/freedesktop/secrets; interface=org.freedesktop.Secrets.Service; member=OpenSession
method call sender=:1.191 -> dest=org.freedesktop.DBus serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetConnectionUnixProcessID
   string ":1.130"
method return sender=:1.191 -> dest=:1.130 reply_serial=182
   object path "/org/freedesktop/secrets/session/s1"
method call sender=:1.130 -> dest=org.freedesktop.secrets serial=183 path=/org/freedesktop/secrets; interface=org.freedesktop.Secrets.Service; member=Unlock
   array [
      object path "/org/freedesktop/secrets/collection/login"
   ]
method return sender=:1.191 -> dest=:1.130 reply_serial=183
   array [
   ]
   object path "/org/freedesktop/secrets/prompt/p1"
method call sender=:1.130 -> dest=org.freedesktop.DBus serial=184 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string "org.freedesktop.secrets"
method call sender=:1.130 -> dest=org.freedesktop.DBus serial=185 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',interface='org.freedesktop.Secrets.Prompt',member='Completed',sender=':1.191',path='/org/freedesktop/secrets/prompt/p1'"
method call sender=:1.130 -> dest=org.freedesktop.secrets serial=186 path=/org/freedesktop/secrets/prompt/p1; interface=org.freedesktop.Secrets.Prompt; member=Prompt
   string "window-id"
method return sender=:1.191 -> dest=:1.130 reply_serial=186
signal sender=:1.191 -> dest=:1.130 serial=10 path=/org/freedesktop/secrets/prompt/p1; interface=org.freedesktop.Secrets.Prompt; member=Completed
   variant       array [
         object path "/org/freedesktop/secrets/collection/login"
      ]
   boolean false
method call sender=:1.130 -> dest=org.freedesktop.DBus serial=187 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=ReleaseName
   string "org.freedesktop.secrets"
method call sender=:1.130 -> dest=org.freedesktop.secrets serial=188 path=/org/freedesktop/secrets/collection/login/16; interface=org.freedesktop.Secrets.Service; member=GetSecret
   object path "/org/freedesktop/secrets/session/s1"
method return sender=:1.191 -> dest=:1.130 reply_serial=188
   object path "/org/freedesktop/secrets/session/s1"
---

Just to let you know ...

> Cheers,
>
> Stef

Best regards, Michael.



More information about the Authentication mailing list