Re: gnome-keyring Initial whack at dbus interfaces



Michael Leupold wrote:
> Hi Stef,
> 
> On Thursday 19 March 2009 03:32:26 you wrote:
>> Attached are my initial try at some dbus interfaces for secret storage.
>> Hopefully we can implement something like this in gnome-keyring.
>> [...]
> 
> judging from your mail I think you forgot to attach the actual service 
> definition.

Whoops, heh here they are.

One or two other things:

 * Added, Removed, Changed signals needed.

 * The 'fields' arguments and properties are hash tables of
   string -> string (name -> value). Integer fields and other
   types of values are encoded (in a canonical way) as strings.

Cheers,

Stef
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>

<!-- 
/org/freedesktop/secrets/default
/org/freedesktop/secrets/login
/org/freedesktop/secrets/<collection>
-->

<node name="/org/freedesktop/secrets/collection/xxxx">
	<interface name="org.freedesktop.Secrets.Collection">

		<!-- 
		 * The displayable label of the collection. 
		-->
		<property name="Label" type="s" access="readwrite"/>

		<!--
		 * Whether the correction is locked or not.
		-->
		<property name="Locked" type="s" access="read"/>

		<!--
		 * Lock this collection.
		-->
		<method name="Lock">
		</method>

		<!--
		 * Unlock the collection. This method may block for 
		 * an indeterminate amount of time while authenticating.
		-->
		<method name="Unlock">
		</method>

		<!--
		 * Delete this collection.
		-->
		<method name="Delete">
		</method>

		<!--
		 * List the object paths of all items in this collection
		 * If fields contains values then items returned will be 
		 * restricted by those.
		-->
		<method name="ListItems">
			<arg name="fields" type="e{ss}" direction="in"/>
			<arg name="results" type="ao" direction="out"/>
		</method>

		<!--
		 * Create an item with the given fields, secret and label.
		 * If replace is set, then it replaces an item already
		 * present with the same fields.
		 *
		-->
		<method name="CreateItem">
			<arg name="fields" type="e{ss}" direction="in"/>
			<arg name="secret" type="(ss)" direction="in"/>
			<arg name="label" type="s" direction="in"/>
			<arg name="replace" type="b" direction="in"/>
			<arg name="result" type="o" direction="out"/>
		</method>

	</interface>
</node>

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>

<!-- 
 * This is the well known dbus service name for controlling the 
 * entire daemon. The services manages collections of secrets. These
 * are analogous to the gnome-keyring 'keyrings'.
-->

<node name="/org/freedesktop/secrets">
	<interface name="org.freedesktop.Secrets.Service">

		<!--
		 * Negotiate key agreement and encryption.
		-->
		<method name="Negotiate">
			<arg name="algorithms" type="s" direction="in"/>
			<arg name="input" type="ay" direction="in"/>
			<arg name="output" type="ay" direction="out"/>
		</method>

		<!-- 
		 * List the object paths of all collections (ie: keyrings) 
		-->
		<method name="ListCollections">
			<arg name="result" type="ao" direction="out"/>
		</method>

		<!--
		 * Create a new collection with the specified access attributes
		-->
		<method name="CreateCollection">
			<arg name="display_name" type="s" direction="in"/>
			<arg name="access_rules" type="as" direction="in"/>
		</method>

		<!-- 
		 * The object path of the default collection. 
		-->
		<property name="DefaultCollection" type="o" access="readwrite"/>

		<!--
		 * Lock down the entire service. Remove secrets from memory,
		 * lock all collections etc...
		-->
		<method name="LockService">
		</method>

		<!--
		 * Find secrets in any collection.
		-->
		<method name="FindSecrets">
			<arg name="fields" type="a{ss}" direction="in"/>
			<arg name="results" type="e{os}" direction="out"/>
		</method>
	</interface>
</node>

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>

<!-- 

-->

<node name="/org/freedesktop/secrets/collection/xxxx/xxxx">
	<interface name="org.freedesktop.Secrets.Item">

		<!-- 
		 * The lookup fields for this item.
		-->
		<property name="Fields" type="e{ss}" access="readwrite"/>

		<!-- 
		 * The displayable label for this item. 
		-->
		<property name="Label" type="s" access="readwrite"/>

		<!-- 
		 * The secret, usually transferred encrypted.
		-->
		<property name="Secret" type="(ss)" access="readwrite"/>

		<!--
		 * Delete this item.
		-->
		<method name="Delete"/>

	</interface>
</node>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]