This file is part of GNUnet.
Copyright (C) 2016 GNUnet e.V.
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
+ GNUnet is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
GNUnet is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
+ Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
#endif
#include "gnunet_util_lib.h"
-
+#include "gnunet_identity_attribute_lib.h"
/**
* Version number of GNUnet Identity Provider API.
*/
struct GNUNET_IDENTITY_PROVIDER_Operation;
-/**
- * Flags that can be set for an attribute.
- */
-enum GNUNET_IDENTITY_PROVIDER_AttributeType
-{
-
- /**
- * No value attribute.
- */
- GNUNET_IDENTITY_PROVIDER_AT_NULL = 0,
-
- /**
- * String attribute.
- */
- GNUNET_IDENTITY_PROVIDER_AT_STRING = 1,
-
-};
-
-
-
-/**
- * An attribute.
- */
-struct GNUNET_IDENTITY_PROVIDER_Attribute
-{
-
- /**
- * Type of Attribute.
- */
- uint32_t attribute_type;
-
- /**
- * Number of bytes in @e data.
- */
- size_t data_size;
-
- /**
- * The name of the attribute. Note "name" must never be individually
- * free'd
- */
- const char* name;
-
- /**
- * Binary value stored as attribute value. Note: "data" must never
- * be individually 'malloc'ed, but instead always points into some
- * existing data area.
- */
- const void *data;
-
-};
-
-struct GNUNET_IDENTITY_PROVIDER_AttributeList
-{
- /**
- * List head
- */
- struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *list_head;
-
- /**
- * List tail
- */
- struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *list_tail;
-};
-
-struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry
-{
- /**
- * DLL
- */
- struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *prev;
-
- /**
- * DLL
- */
- struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *next;
-
- /**
- * The attribute
- */
- struct GNUNET_IDENTITY_PROVIDER_Attribute *attribute;
-};
/**
* Connect to the identity provider service.
* @param h handle to the identity provider
* @param pkey private key of the identity
* @param attr the attribute
+ * @param exp_interval the relative expiration interval for the attribute
* @param cont continuation to call when done
* @param cont_cls closure for @a cont
* @return handle to abort the request
struct GNUNET_IDENTITY_PROVIDER_Operation *
GNUNET_IDENTITY_PROVIDER_attribute_store (struct GNUNET_IDENTITY_PROVIDER_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
- const struct GNUNET_IDENTITY_PROVIDER_Attribute *attr,
+ const struct GNUNET_IDENTITY_ATTRIBUTE_Claim *attr,
+ const struct GNUNET_TIME_Relative *exp_interval,
GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus cont,
void *cont_cls);
-/**
- * Create a new attribute.
- *
- * @param name the attribute name
- * @param type the attribute type
- * @param data the attribute value
- * @param data_size the attribute value size
- * @return the new attribute
- */
-struct GNUNET_IDENTITY_PROVIDER_Attribute *
-GNUNET_IDENTITY_PROVIDER_attribute_new (const char* attr_name,
- uint32_t attr_type,
- const void* data,
- size_t data_size);
-
/**
* Process an attribute that was stored in the idp.
*
* @param cls closure
+ * @param identity the identity
* @param attr the attribute
*/
typedef void
(*GNUNET_IDENTITY_PROVIDER_AttributeResult) (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
- const struct GNUNET_IDENTITY_PROVIDER_Attribute *attr);
+ const struct GNUNET_IDENTITY_ATTRIBUTE_Claim *attr);
/**
* Issues a ticket to another identity. The identity may use
- * @GNUNET_IDENTITY_PROVIDER_authorization_ticket_consume to consume the ticket
+ * GNUNET_IDENTITY_PROVIDER_ticket_consume to consume the ticket
* and retrieve the attributes specified in the AttributeList.
*
- * @param id the identity provider to use
+ * @param h the identity provider to use
* @param iss the issuing identity
* @param rp the subject of the ticket (the relying party)
- * @param attr the attributes that the relying party is given access to
+ * @param attrs the attributes that the relying party is given access to
* @param cb the callback
* @param cb_cls the callback closure
* @return handle to abort the operation
*/
struct GNUNET_IDENTITY_PROVIDER_Operation *
-GNUNET_IDENTITY_PROVIDER_ticket_issue (struct GNUNET_IDENTITY_PROVIDER_Handle *id,
+GNUNET_IDENTITY_PROVIDER_ticket_issue (struct GNUNET_IDENTITY_PROVIDER_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *iss,
const struct GNUNET_CRYPTO_EcdsaPublicKey *rp,
- const struct GNUNET_IDENTITY_PROVIDER_AttributeList *attrs,
+ const struct GNUNET_IDENTITY_ATTRIBUTE_ClaimList *attrs,
GNUNET_IDENTITY_PROVIDER_TicketCallback cb,
void *cb_cls);
* Revoked an issued ticket. The relying party will be unable to retrieve
* updated attributes.
*
- * @param id the identity provider to use
+ * @param h the identity provider to use
* @param identity the issuing identity
* @param ticket the ticket to revoke
* @param cb the callback
* @return handle to abort the operation
*/
struct GNUNET_IDENTITY_PROVIDER_Operation *
-GNUNET_IDENTITY_PROVIDER_ticket_revoke (struct GNUNET_IDENTITY_PROVIDER_Handle *id,
+GNUNET_IDENTITY_PROVIDER_ticket_revoke (struct GNUNET_IDENTITY_PROVIDER_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus cb,
* Consumes an issued ticket. The ticket is persisted
* and used to retrieve identity information from the issuer
*
- * @param id the identity provider to use
+ * @param h the identity provider to use
* @param identity the identity that is the subject of the issued ticket (the audience)
* @param ticket the issued ticket to consume
* @param cb the callback to call
* @return handle to abort the operation
*/
struct GNUNET_IDENTITY_PROVIDER_Operation *
-GNUNET_IDENTITY_PROVIDER_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *id,
+GNUNET_IDENTITY_PROVIDER_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket,
GNUNET_IDENTITY_PROVIDER_AttributeResult cb,
* Lists all tickets that have been issued to remote
* identites (relying parties)
*
- * @param id the identity provider to use
+ * @param h the identity provider to use
* @param identity the issuing identity
* @param error_cb function to call on error (i.e. disconnect),
* the handle is afterwards invalid