use namestore API for zone import instead of using plugin directly
[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              const struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList *attrs);
55
56
57 /**
58  * @brief struct returned by the initialization function of the plugin
59  */
60 struct GNUNET_IDENTITY_PROVIDER_PluginFunctions
61 {
62
63   /**
64    * Closure to pass to all plugin functions.
65    */
66   void *cls;
67
68   /**
69    * Store a ticket in the database.
70    *
71    * @param cls closure (internal context for the plugin)
72    * @param ticket the ticket to store
73    * @return #GNUNET_OK on success, else #GNUNET_SYSERR
74    */
75   int (*store_ticket) (void *cls,
76                         const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
77       const struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList *attrs);
78
79   /**
80    * Delete a ticket from the database.
81    *
82    * @param cls closure (internal context for the plugin)
83    * @param ticket the ticket to store
84    * @return #GNUNET_OK on success, else #GNUNET_SYSERR
85    */
86   int (*delete_ticket) (void *cls,
87                         const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket);
88
89
90
91   /**
92    * Iterate over all tickets
93    *
94    * @param cls closure (internal context for the plugin)
95    * @param identity the identity
96    * @param audience GNUNET_YES if the identity is the audience of the ticket
97    *                 else it is considered the issuer
98    * @param iter function to call with the result
99    * @param iter_cls closure for @a iter
100    * @return #GNUNET_OK on success, #GNUNET_NO if there were no results, #GNUNET_SYSERR on error
101    */
102   int (*iterate_tickets) (void *cls,
103                           const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
104         int audience,
105                           uint64_t offset,
106                           GNUNET_IDENTITY_PROVIDER_TicketIterator iter, void *iter_cls);
107
108   int (*get_ticket_attributes) (void* cls,
109                                 const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
110                                 GNUNET_IDENTITY_PROVIDER_TicketIterator iter,
111                                 void *iter_cls);
112 };
113
114 #if 0                           /* keep Emacsens' auto-indent happy */
115 {
116 #endif
117 #ifdef __cplusplus
118 }
119 #endif
120
121 #endif
122
123 /** @} */  /* end of group */