| Current File : //usr/share/doc/dbus/api/group__DBusKeyring.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>D-Bus: keyring class</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">D-Bus
 <span id="projectnumber">1.8.20</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">keyring class</div> </div>
<div class="ingroups"><a class="el" href="group__DBusInternals.html">D-Bus secret internal implementation details</a></div></div><!--header-->
<div class="contents">
<p><a class="el" href="structDBusKeyring.html" title="Internals of DBusKeyring.">DBusKeyring</a> data structure.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#gacbe59117a5f042a680991461e6d2e20f">_dbus_keyring_ref</a> (<a class="el" href="structDBusKeyring.html">DBusKeyring</a> *keyring)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments reference count of the keyring. <a href="#gacbe59117a5f042a680991461e6d2e20f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#gadd42b029d08dc477b6847e91bdcb23ca">_dbus_keyring_unref</a> (<a class="el" href="structDBusKeyring.html">DBusKeyring</a> *keyring)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Decrements refcount and finalizes if it reaches zero. <a href="#gadd42b029d08dc477b6847e91bdcb23ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#ga6dad1720cf97ca6017c39330bec8d09f">_dbus_keyring_new_for_credentials</a> (<a class="el" href="structDBusCredentials.html">DBusCredentials</a> *credentials, const <a class="el" href="structDBusString.html">DBusString</a> *context, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new keyring that lives in the ~/.dbus-keyrings directory of the user represented by <code>credentials</code>. <a href="#ga6dad1720cf97ca6017c39330bec8d09f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#ga5bbeeef1ba831a89d7f0f211e886e7c2">_dbus_keyring_validate_context</a> (const <a class="el" href="structDBusString.html">DBusString</a> *context)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether the context is a valid context. <a href="#ga5bbeeef1ba831a89d7f0f211e886e7c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#ga0daf16cfb75ab28d67d5dfa881f457a6">_dbus_keyring_get_best_key</a> (<a class="el" href="structDBusKeyring.html">DBusKeyring</a> *keyring, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets a recent key to use for authentication. <a href="#ga0daf16cfb75ab28d67d5dfa881f457a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#ga5ef8c7224182f27ff56b3105c6963cfd">_dbus_keyring_is_for_credentials</a> (<a class="el" href="structDBusKeyring.html">DBusKeyring</a> *keyring, <a class="el" href="structDBusCredentials.html">DBusCredentials</a> *credentials)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether the keyring is for the same user as the given credentials. <a href="#ga5ef8c7224182f27ff56b3105c6963cfd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusKeyring.html#ga6adfb998247ab4d0c1d5652f59c354e4">_dbus_keyring_get_hex_key</a> (<a class="el" href="structDBusKeyring.html">DBusKeyring</a> *keyring, int key_id, <a class="el" href="structDBusString.html">DBusString</a> *hex_key)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the hex-encoded secret key for the given ID. <a href="#ga6adfb998247ab4d0c1d5652f59c354e4"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p><a class="el" href="structDBusKeyring.html" title="Internals of DBusKeyring.">DBusKeyring</a> data structure. </p>
<p>Types and functions related to <a class="el" href="structDBusKeyring.html" title="Internals of DBusKeyring.">DBusKeyring</a>. <a class="el" href="structDBusKeyring.html" title="Internals of DBusKeyring.">DBusKeyring</a> is intended to manage cookies used to authenticate clients to servers. This is essentially the "verify that client can read the user's homedir" authentication mechanism. Both client and server must have access to the homedir.</p>
<p>The secret keys are not kept in locked memory, and are written to a file in the user's homedir. However they are transient (only used by a single server instance for a fixed period of time, then discarded). Also, the keys are not sent over the wire.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000012">Todo:</a></b></dt><dd>there's a memory leak on some codepath in here, I saw it once when running make check - probably some specific initial cookies present in the cookie file, then depending on what we do with them. </dd></dl>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga0daf16cfb75ab28d67d5dfa881f457a6"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_get_best_key" ref="ga0daf16cfb75ab28d67d5dfa881f457a6" args="(DBusKeyring *keyring, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusKeyring.html#ga0daf16cfb75ab28d67d5dfa881f457a6">_dbus_keyring_get_best_key</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td>
<td class="paramname"><em>keyring</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets a recent key to use for authentication. </p>
<p>If no recent key exists, creates one. Returns the key ID. If a key can't be written to the keyring file so no recent key can be created, returns -1. All valid keys are > 0.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">keyring</td><td>the keyring </td></tr>
<tr><td class="paramname">error</td><td>error on failure </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>key ID to use for auth, or -1 on failure </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00943">943</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00350">DBUS_ERROR_FAILED</a>, <a class="el" href="dbus-errors_8c_source.html#l00243">dbus_set_error_const()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00094">DBusKey::id</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga6adfb998247ab4d0c1d5652f59c354e4"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_get_hex_key" ref="ga6adfb998247ab4d0c1d5652f59c354e4" args="(DBusKeyring *keyring, int key_id, DBusString *hex_key)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusKeyring.html#ga6adfb998247ab4d0c1d5652f59c354e4">_dbus_keyring_get_hex_key</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td>
<td class="paramname"><em>keyring</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>key_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>hex_key</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the hex-encoded secret key for the given ID. </p>
<p>Returns <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if not enough memory. Returns <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> but empty key on any other error such as unknown key ID.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">keyring</td><td>the keyring </td></tr>
<tr><td class="paramname">key_id</td><td>the key ID </td></tr>
<tr><td class="paramname">hex_key</td><td>string to append hex-encoded key to </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if we had enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l01001">1001</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l02241">_dbus_string_hex_encode()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00117">keys</a>, <a class="el" href="dbus-keyring_8c_source.html#l00118">n_keys</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-keyring_8c_source.html#l00101">DBusKey::secret</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga5ef8c7224182f27ff56b3105c6963cfd"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_is_for_credentials" ref="ga5ef8c7224182f27ff56b3105c6963cfd" args="(DBusKeyring *keyring, DBusCredentials *credentials)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusKeyring.html#ga5ef8c7224182f27ff56b3105c6963cfd">_dbus_keyring_is_for_credentials</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td>
<td class="paramname"><em>keyring</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusCredentials.html">DBusCredentials</a> * </td>
<td class="paramname"><em>credentials</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the keyring is for the same user as the given credentials. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">keyring</td><td>the keyring </td></tr>
<tr><td class="paramname">credentials</td><td>the credentials to check</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the keyring belongs to the given user </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00982">982</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-credentials_8c_source.html#l00493">_dbus_credentials_same_user()</a>, and <a class="el" href="dbus-keyring_8c_source.html#l00119">credentials</a>.</p>
</div>
</div>
<a class="anchor" id="ga6dad1720cf97ca6017c39330bec8d09f"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_new_for_credentials" ref="ga6dad1720cf97ca6017c39330bec8d09f" args="(DBusCredentials *credentials, const DBusString *context, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusKeyring.html">DBusKeyring</a>* <a class="el" href="group__DBusKeyring.html#ga6dad1720cf97ca6017c39330bec8d09f">_dbus_keyring_new_for_credentials</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusCredentials.html">DBusCredentials</a> * </td>
<td class="paramname"><em>credentials</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>context</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new keyring that lives in the ~/.dbus-keyrings directory of the user represented by <code>credentials</code>. </p>
<p>If the <code>credentials</code> are <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> or empty, uses those of the current process.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">credentials</td><td>a set of credentials representing a user or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> </td></tr>
<tr><td class="paramname">context</td><td>which keyring to get </td></tr>
<tr><td class="paramname">error</td><td>return location for errors </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the keyring or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> on error </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00709">709</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l03806">_dbus_append_keyring_directory_for_credentials()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02759">_dbus_concat_dir_and_file()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02725">_dbus_create_directory()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02369">_dbus_credentials_add_from_current_process()</a>, <a class="el" href="dbus-credentials_8c_source.html#l00361">_dbus_credentials_are_anonymous()</a>, <a class="el" href="dbus-credentials_8c_source.html#l00464">_dbus_credentials_copy()</a>, <a class="el" href="dbus-credentials_8c_source.html#l00093">_dbus_credentials_new_from_current_process()</a>, <a class="el" href="dbus-credentials_8c_source.html#l00128">_dbus_credentials_unref()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00681">_dbus_keyring_unref()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00847">_dbus_keyring_validate_context()</a>, <a class="el" href="dbus-string_8c_source.html#l00918">_dbus_string_append()</a>, <a class="el" href="dbus-string_8c_source.html#l01265">_dbus_string_copy()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00119">credentials</a>, <a class="el" href="dbus-protocol_8h_source.html#l00350">DBUS_ERROR_FAILED</a>, <a class="el" href="dbus-errors_8c_source.html#l00211">dbus_error_free()</a>, <a class="el" href="dbus-errors_8c_source.html#l00188">dbus_error_init()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00352">DBUS_ERROR_NO_MEMORY</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-errors_8c_source.html#l00243">dbus_set_error_const()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00114">directory</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-keyring_8c_source.html#l00115">filename</a>, <a class="el" href="dbus-keyring_8c_source.html#l00116">filename_lock</a>, <a class="el" href="dbus-errors_8h_source.html#l00051">DBusError::message</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="gacbe59117a5f042a680991461e6d2e20f"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_ref" ref="gacbe59117a5f042a680991461e6d2e20f" args="(DBusKeyring *keyring)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusKeyring.html">DBusKeyring</a>* <a class="el" href="group__DBusKeyring.html#gacbe59117a5f042a680991461e6d2e20f">_dbus_keyring_ref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td>
<td class="paramname"><em>keyring</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Increments reference count of the keyring. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">keyring</td><td>the keyring </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the keyring </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00667">667</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-keyring_8c_source.html#l00113">refcount</a>.</p>
</div>
</div>
<a class="anchor" id="gadd42b029d08dc477b6847e91bdcb23ca"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_unref" ref="gadd42b029d08dc477b6847e91bdcb23ca" args="(DBusKeyring *keyring)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusKeyring.html#gadd42b029d08dc477b6847e91bdcb23ca">_dbus_keyring_unref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusKeyring.html">DBusKeyring</a> * </td>
<td class="paramname"><em>keyring</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Decrements refcount and finalizes if it reaches zero. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">keyring</td><td>the keyring </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00681">681</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-credentials_8c_source.html#l00128">_dbus_credentials_unref()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00119">credentials</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-keyring_8c_source.html#l00114">directory</a>, <a class="el" href="dbus-keyring_8c_source.html#l00115">filename</a>, <a class="el" href="dbus-keyring_8c_source.html#l00116">filename_lock</a>, <a class="el" href="dbus-keyring_8c_source.html#l00117">keys</a>, <a class="el" href="dbus-keyring_8c_source.html#l00118">n_keys</a>, and <a class="el" href="dbus-keyring_8c_source.html#l00113">refcount</a>.</p>
<p>Referenced by <a class="el" href="dbus-auth_8c_source.html#l02346">_dbus_auth_unref()</a>, and <a class="el" href="dbus-keyring_8c_source.html#l00709">_dbus_keyring_new_for_credentials()</a>.</p>
</div>
</div>
<a class="anchor" id="ga5bbeeef1ba831a89d7f0f211e886e7c2"></a><!-- doxytag: member="dbus-keyring.c::_dbus_keyring_validate_context" ref="ga5bbeeef1ba831a89d7f0f211e886e7c2" args="(const DBusString *context)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusKeyring.html#ga5bbeeef1ba831a89d7f0f211e886e7c2">_dbus_keyring_validate_context</a> </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>context</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the context is a valid context. </p>
<p>Contexts that might cause confusion when used in filenames are not allowed (contexts can't start with a dot or contain dir separators).</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000013">Todo:</a></b></dt><dd>this is the most inefficient implementation imaginable.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">context</td><td>the context </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if valid </dd></dl>
<p>Definition at line <a class="el" href="dbus-keyring_8c_source.html#l00847">847</a> of file <a class="el" href="dbus-keyring_8c_source.html">dbus-keyring.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01586">_dbus_string_find()</a>, <a class="el" href="dbus-string_8c_source.html#l01747">_dbus_string_find_blank()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l02432">_dbus_string_validate_ascii()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-keyring_8c_source.html#l00709">_dbus_keyring_new_for_credentials()</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:32 for D-Bus by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>