Merge branch 'master' into getopt
[oweals/gnunet.git] / src / identity-provider / identity_token.h
index 3eeaf9ae2f13430a4bba24b355f342cbcf64413b..7ded6662ee99f615137463e71fd59de4af29c388 100644 (file)
@@ -1,6 +1,6 @@
 /*
    This file is part of GNUnet.
-   Copyright (C) 2012-2015 Christian Grothoff (and other contributing authors)
+   Copyright (C) 2012-2015 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
@@ -19,7 +19,7 @@
    */
 /**
  * @author Martin Schanzenbach
- * @file include/gnunet_identity_provider_lib.h
+ * @file identity-provider/identity_token.h
  * @brief GNUnet Identity Provider library
  *
  */
@@ -97,6 +97,12 @@ struct TokenAttrValue
    * Attribute value
    */
   char *value;
+
+  /**
+   * Attribute int value
+   * used if NULL == value
+   */
+  uint64_t int_value;
 };
 
 struct TokenTicketPayload
@@ -104,7 +110,7 @@ struct TokenTicketPayload
   /**
    * Nonce
    */
-  char* nonce;
+  uint64_t nonce;
 
   /**
    * Label
@@ -175,6 +181,20 @@ token_add_attr (struct IdentityToken *token,
                 const char* key,
                 const char* value);
 
+/**
+ * Add a new key value pair to the token
+ * 
+ * @param token the token to modify
+ * @param key the key
+ * @param value the value
+ */
+void
+token_add_attr_int (struct IdentityToken *token,
+                      const char* key,
+                      uint64_t value);
+
+
+
 /**
  * Add a value to a TokenAttribute
  *
@@ -193,10 +213,10 @@ token_add_attr (struct IdentityToken *token,
  * @param value the value
  *
  */
-void
-token_add_json (const struct IdentityToken *token,
-                const char* key,
-                json_t* value);
+  void
+  token_add_json (const struct IdentityToken *token,
+                  const char* key,
+                  json_t* value);
 
 /**
  * Serialize a token. The token will be signed and base64 according to the
@@ -214,11 +234,11 @@ token_add_json (const struct IdentityToken *token,
  *
  * @return GNUNET_OK on success
  */
-int 
-token_serialize (const struct IdentityToken*token,
-                 const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
-                 struct GNUNET_CRYPTO_EcdhePrivateKey **ecdhe_privkey,
-                 char **result);
+  int 
+  token_serialize (const struct IdentityToken*token,
+                   const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
+                   struct GNUNET_CRYPTO_EcdhePrivateKey **ecdhe_privkey,
+                   char **result);
 
 /**
  * Parses the serialized token and returns a token
@@ -229,10 +249,10 @@ token_serialize (const struct IdentityToken*token,
  *
  * @return GNUNET_OK on success
  */
-  int
-  token_parse (const char* data,
-               const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
-               struct IdentityToken **result);
+               int
+               token_parse (const char* data,
+                            const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
+                            struct IdentityToken **result);
 
 /**
  * Parses the serialized token and returns a token
@@ -263,17 +283,17 @@ token_parse2 (const char* data,
  *
  * @return GNUNET_OK on success
  */
-int
-token_to_string (const struct IdentityToken *token,
-                 const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
-                 char **result);
+  int
+  token_to_string (const struct IdentityToken *token,
+                   const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
+                   char **result);
 
 /**
  *
  * Creates a ticket that can be exchanged by the audience for 
  * the token. The token must be placed under the label
  *
- * @param nonce_str nonce provided by the audience that requested the ticket
+ * @param nonce nonce provided by the audience that requested the ticket
  * @param iss_pkey the issuer pubkey used to sign the ticket
  * @param label the label encoded in the ticket
  * @param aud_ley the audience pubkey used to encrypt the ticket payload
@@ -281,7 +301,7 @@ token_to_string (const struct IdentityToken *token,
  * @return the ticket
  */
 struct TokenTicket*
-ticket_create (const char* nonce_str,
+ticket_create (uint64_t nonce,
                const struct GNUNET_CRYPTO_EcdsaPublicKey* iss_pkey,
                const char* lbl_str,
                const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key);
@@ -296,10 +316,10 @@ ticket_create (const char* nonce_str,
  *
  * @return GNUNET_OK on success
  */
-int
-ticket_serialize (struct TokenTicket *ticket,
-                  const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
-                  char **result);
+  int
+  ticket_serialize (struct TokenTicket *ticket,
+                    const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key,
+                    char **result);
 
 /**
  * Destroys a ticket