blob: e35f4150318f01cbacacec9cbb48dd43dddcdc4b [file] [log] [blame]
/* libsecret - GLib wrapper for Secret Service
*
* Copyright 2011 Collabora Ltd.
* Copyright 2012 Red Hat Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the licence or (at
* your option) any later version.
*
* See the included COPYING file for more information.
*
* Author: Stef Walter <stefw@gnome.org>
*/
#if !defined (__SECRET_INSIDE_HEADER__) && !defined (SECRET_COMPILATION)
#error "Only <libsecret/secret.h> can be included directly."
#endif
#ifndef __SECRET_SERVICE_H__
#define __SECRET_SERVICE_H__
#include <gio/gio.h>
#include "secret-prompt.h"
#include "secret-schema.h"
#include "secret-types.h"
#include "secret-value.h"
G_BEGIN_DECLS
typedef enum {
SECRET_SERVICE_NONE = 0,
SECRET_SERVICE_OPEN_SESSION = 1 << 1,
SECRET_SERVICE_LOAD_COLLECTIONS = 1 << 2,
} SecretServiceFlags;
typedef enum {
SECRET_SEARCH_NONE = 0,
SECRET_SEARCH_ALL = 1 << 1,
SECRET_SEARCH_UNLOCK = 1 << 2,
SECRET_SEARCH_LOAD_SECRETS = 1 << 3,
} SecretSearchFlags;
#define SECRET_TYPE_SERVICE (secret_service_get_type ())
#define SECRET_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), SECRET_TYPE_SERVICE, SecretService))
#define SECRET_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), SECRET_TYPE_SERVICE, SecretServiceClass))
#define SECRET_IS_SERVICE(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), SECRET_TYPE_SERVICE))
#define SECRET_IS_SERVICE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), SECRET_TYPE_SERVICE))
#define SECRET_SERVICE_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), SECRET_TYPE_SERVICE, SecretServiceClass))
typedef struct _SecretCollection SecretCollection;
typedef struct _SecretService SecretService;
typedef struct _SecretServiceClass SecretServiceClass;
typedef struct _SecretServicePrivate SecretServicePrivate;
struct _SecretService {
GDBusProxy parent;
/*< private >*/
SecretServicePrivate *pv;
};
struct _SecretServiceClass {
GDBusProxyClass parent_class;
GType collection_gtype;
GType item_gtype;
GVariant * (* prompt_sync) (SecretService *self,
SecretPrompt *prompt,
GCancellable *cancellable,
const GVariantType *return_type,
GError **error);
void (* prompt_async) (SecretService *self,
SecretPrompt *prompt,
const GVariantType *return_type,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GVariant * (* prompt_finish) (SecretService *self,
GAsyncResult *result,
GError **error);
GType (* get_collection_gtype) (SecretService *self);
GType (* get_item_gtype) (SecretService *self);
/*< private >*/
gpointer padding[14];
};
GType secret_service_get_type (void) G_GNUC_CONST;
GType secret_service_get_collection_gtype (SecretService *self);
GType secret_service_get_item_gtype (SecretService *self);
void secret_service_get (SecretServiceFlags flags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
SecretService * secret_service_get_finish (GAsyncResult *result,
GError **error);
SecretService * secret_service_get_sync (SecretServiceFlags flags,
GCancellable *cancellable,
GError **error);
void secret_service_disconnect (void);
void secret_service_open (GType service_gtype,
const gchar *service_bus_name,
SecretServiceFlags flags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
SecretService * secret_service_open_finish (GAsyncResult *result,
GError **error);
SecretService * secret_service_open_sync (GType service_gtype,
const gchar *service_bus_name,
SecretServiceFlags flags,
GCancellable *cancellable,
GError **error);
SecretServiceFlags secret_service_get_flags (SecretService *self);
const gchar * secret_service_get_session_algorithms (SecretService *self);
GList * secret_service_get_collections (SecretService *self);
void secret_service_ensure_session (SecretService *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean secret_service_ensure_session_finish (SecretService *self,
GAsyncResult *result,
GError **error);
gboolean secret_service_ensure_session_sync (SecretService *self,
GCancellable *cancellable,
GError **error);
void secret_service_load_collections (SecretService *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean secret_service_load_collections_finish (SecretService *self,
GAsyncResult *result,
GError **error);
gboolean secret_service_load_collections_sync (SecretService *self,
GCancellable *cancellable,
GError **error);
GVariant * secret_service_prompt_sync (SecretService *self,
SecretPrompt *prompt,
GCancellable *cancellable,
const GVariantType *return_type,
GError **error);
void secret_service_prompt (SecretService *self,
SecretPrompt *prompt,
const GVariantType *return_type,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GVariant * secret_service_prompt_finish (SecretService *self,
GAsyncResult *result,
GError **error);
void secret_service_search (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
SecretSearchFlags flags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
GList * secret_service_search_finish (SecretService *service,
GAsyncResult *result,
GError **error);
GList * secret_service_search_sync (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
SecretSearchFlags flags,
GCancellable *cancellable,
GError **error);
void secret_service_lock (SecretService *service,
GList *objects,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gint secret_service_lock_finish (SecretService *service,
GAsyncResult *result,
GList **locked,
GError **error);
gint secret_service_lock_sync (SecretService *service,
GList *objects,
GCancellable *cancellable,
GList **locked,
GError **error);
void secret_service_unlock (SecretService *service,
GList *objects,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gint secret_service_unlock_finish (SecretService *service,
GAsyncResult *result,
GList **unlocked,
GError **error);
gint secret_service_unlock_sync (SecretService *service,
GList *objects,
GCancellable *cancellable,
GList **unlocked,
GError **error);
void secret_service_store (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
const gchar *collection,
const gchar *label,
SecretValue *value,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean secret_service_store_finish (SecretService *service,
GAsyncResult *result,
GError **error);
gboolean secret_service_store_sync (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
const gchar *collection,
const gchar *label,
SecretValue *value,
GCancellable *cancellable,
GError **error);
void secret_service_lookup (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
SecretValue * secret_service_lookup_finish (SecretService *service,
GAsyncResult *result,
GError **error);
SecretValue * secret_service_lookup_sync (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
GCancellable *cancellable,
GError **error);
void secret_service_clear (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean secret_service_clear_finish (SecretService *service,
GAsyncResult *result,
GError **error);
gboolean secret_service_clear_sync (SecretService *service,
const SecretSchema *schema,
GHashTable *attributes,
GCancellable *cancellable,
GError **error);
void secret_service_set_alias (SecretService *service,
const gchar *alias,
SecretCollection *collection,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean secret_service_set_alias_finish (SecretService *service,
GAsyncResult *result,
GError **error);
gboolean secret_service_set_alias_sync (SecretService *service,
const gchar *alias,
SecretCollection *collection,
GCancellable *cancellable,
GError **error);
G_END_DECLS
#endif /* __SECRET_SERVICE_H___ */