<?xml version="1.0" encoding="UTF-8" ?>

<node name="/org/chromium/Kerberos"
      xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <interface name="org.chromium.Kerberos">
    <method name="AddAccount">
      <tp:docstring>
        Adds a Kerberos account to the list of accounts.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized AddAccountRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized AddAccountResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="RemoveAccount">
      <tp:docstring>
        Removes a Kerberos account from the list of accounts.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized RemoveAccountRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized RemoveAccountResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="ClearAccounts">
      <tp:docstring>
        Removes all Kerberos accounts.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized ClearAccountsRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized ClearAccountsResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="ListAccounts">
      <tp:docstring>
        Gets a list of all existing accounts, including current status like
        remaining Kerberos ticket lifetime.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized ListAccountsRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized ListAccountsResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="SetConfig">
      <tp:docstring>
        Validates and sets the Kerberos configuration for the given account.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized SetConfigRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized SetConfigResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="ValidateConfig">
      <tp:docstring>
        Validates Kerberos configuration data.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized ValidateConfigRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized ValidateConfigRequest message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="AcquireKerberosTgt">
      <tp:docstring>
        Acquires a Kerberos ticket-granting-ticket from the Key Distribution
        Center (KDC).
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized AcquireKerberosTgtRequest message.
        </tp:docstring>
      </arg>
      <arg name="password_fd" type="h" direction="in">
        <tp:docstring>
          File descriptor to the password.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized AcquireKerberosTgtResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <method name="GetKerberosFiles">
      <tp:docstring>
         Gets the Kerberos credential cache (krb5cc) and configuration
         (krb5.conf) files for a given account. Returns ERROR_NONE and a blob
         with empty files if the account does not exist or has no credential
         cache. Returns ERROR_LOCAL_IO if the krb5cc file exists, but any file
         could not be read.
      </tp:docstring>
      <arg name="request" type="ay" direction="in">
        <tp:docstring>
          Serialized GetKerberosFilesRequest message.
        </tp:docstring>
      </arg>
      <arg name="response" type="ay" direction="out">
        <tp:docstring>
          Serialized GetKerberosFilesResponse message.
        </tp:docstring>
      </arg>
      <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
    </method>

    <signal name="KerberosFilesChanged">
      <tp:docstring>
        Signal emitted when either the Kerberos credential cache (krb5cc) or
        configuration (krb5.conf) files change for the account that corresponds
        to |principal_name|.
      </tp:docstring>
      <arg name="principal_name" type="s">
        <tp:docstring>
          Principal name (user@REALM.COM) that identifies the account.
        </tp:docstring>
      </arg>
    </signal>

    <signal name="KerberosTicketExpiring">
      <tp:docstring>
        Signal emitted when a Kerberos TGT is about to expire within the next
        couple of minutes for the account that corresponds to |principal_name|.
        Also emitted if the ticket already expired, e.g. after a system restart.
        The signal is only emitted once per ticket unless the ticket is
        refreshed.
      </tp:docstring>
      <arg name="principal_name" type="s">
        <tp:docstring>
          Principal name (user@REALM.COM) that identifies the account.
        </tp:docstring>
      </arg>
    </signal>  </interface>
</node>
