-remove deprecated
[oweals/gnunet.git] / src / include / gnunet_identity_provider_plugin.h
1 /*
2      This file is part of GNUnet
3      Copyright (C) 2012, 2013 GNUnet e.V.
4
5      GNUnet is free software; you can redistribute it and/or modify
6      it under the terms of the GNU General Public License as published
7      by the Free Software Foundation; either version 3, or (at your
8      option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      General Public License for more details.
14
15      You should have received a copy of the GNU General Public License
16      along with GNUnet; see the file COPYING.  If not, write to the
17      Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18      Boston, MA 02110-1301, USA.
19 */
20
21 /**
22  * @author Martin Schanzenbach
23  *
24  * @file
25  * Plugin API for the idp database backend
26  *
27  * @defgroup identity-provider-plugin  IdP service plugin API
28  * Plugin API for the idp database backend
29  * @{
30  */
31 #ifndef GNUNET_IDENTITY_PROVIDER_PLUGIN_H
32 #define GNUNET_IDENTITY_PROVIDER_PLUGIN_H
33
34 #include "gnunet_util_lib.h"
35 #include "gnunet_identity_provider_service.h"
36
37 #ifdef __cplusplus
38 extern "C"
39 {
40 #if 0                           /* keep Emacsens' auto-indent happy */
41 }
42 #endif
43 #endif
44
45
46 /**
47  * Function called by for each matching ticket.
48  *
49  * @param cls closure
50  * @param ticket the ticket
51  */
52 typedef void (*GNUNET_IDENTITY_PROVIDER_TicketIterator) (void *cls,
53                                                  const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket);
54
55
56 /**
57  * @brief struct returned by the initialization function of the plugin
58  */
59 struct GNUNET_IDENTITY_PROVIDER_PluginFunctions
60 {
61
62   /**
63    * Closure to pass to all plugin functions.
64    */
65   void *cls;
66
67   /**
68    * Store a ticket in the database.
69    *
70    * @param cls closure (internal context for the plugin)
71    * @param ticket the ticket to store
72    * @return #GNUNET_OK on success, else #GNUNET_SYSERR
73    */
74   int (*store_ticket) (void *cls,
75                         const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket);
76
77   /**
78    * Delete a ticket from the database.
79    *
80    * @param cls closure (internal context for the plugin)
81    * @param ticket the ticket to store
82    * @return #GNUNET_OK on success, else #GNUNET_SYSERR
83    */
84   int (*delete_ticket) (void *cls,
85                         const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket);
86
87
88
89   /**
90    * Iterate over all tickets
91    *
92    * @param cls closure (internal context for the plugin)
93    * @param identity the identity
94    * @param audience GNUNET_YES if the identity is the audience of the ticket
95    *                 else it is considered the issuer
96    * @param iter function to call with the result
97    * @param iter_cls closure for @a iter
98    * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
99    */
100   int (*iterate_tickets) (void *cls,
101                           const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
102         int audience,
103                           uint64_t offset,
104                           GNUNET_IDENTITY_PROVIDER_TicketIterator iter, void *iter_cls);
105
106
107 };
108
109
110 #if 0                           /* keep Emacsens' auto-indent happy */
111 {
112 #endif
113 #ifdef __cplusplus
114 }
115 #endif
116
117 #endif
118
119 /** @} */  /* end of group */