summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2020-08-19 19:05:23 +0200
committerMartin Schanzenbach <mschanzenbach@posteo.de>2020-08-20 17:59:01 +0200
commite75869506cc08e08056168383bd4ab02e1f007de (patch)
treeb4617425e38fbd7070f6a6d7cd41544a7f41df5d
parent1ca1140d4602dcc5c66da0d1ab1b082db9258ead (diff)
- towards separation between credentials and presentations thereof, wip, ftbfs
-rw-r--r--src/include/gnunet_protocols.h12
-rw-r--r--src/include/gnunet_reclaim_lib.h394
-rw-r--r--src/include/gnunet_reclaim_plugin.h187
-rw-r--r--src/include/gnunet_reclaim_service.h61
-rw-r--r--src/reclaim/Makefile.am18
-rw-r--r--src/reclaim/gnunet-reclaim.c216
-rw-r--r--src/reclaim/gnunet-service-reclaim.c272
-rw-r--r--src/reclaim/gnunet-service-reclaim_tickets.c194
-rw-r--r--src/reclaim/gnunet-service-reclaim_tickets.h2
-rw-r--r--src/reclaim/json_reclaim.c60
-rw-r--r--src/reclaim/json_reclaim.h11
-rw-r--r--src/reclaim/oidc_helper.c110
-rw-r--r--src/reclaim/oidc_helper.h13
-rw-r--r--src/reclaim/plugin_reclaim_credential_jwt.c (renamed from src/reclaim/plugin_reclaim_attestation_jwt.c)75
-rw-r--r--src/reclaim/plugin_rest_openid_connect.c142
-rw-r--r--src/reclaim/plugin_rest_reclaim.c144
-rw-r--r--src/reclaim/reclaim.h28
-rw-r--r--src/reclaim/reclaim_api.c161
-rw-r--r--src/reclaim/reclaim_attribute.c18
-rw-r--r--src/reclaim/reclaim_attribute.h37
-rw-r--r--src/reclaim/reclaim_credential.c (renamed from src/reclaim/reclaim_attestation.c)270
-rw-r--r--src/reclaim/reclaim_credential.h (renamed from src/reclaim/reclaim_attestation.h)26
22 files changed, 1402 insertions, 1049 deletions
diff --git a/src/include/gnunet_protocols.h b/src/include/gnunet_protocols.h
index 4526b75d9..d9821ffe8 100644
--- a/src/include/gnunet_protocols.h
+++ b/src/include/gnunet_protocols.h
@@ -2900,17 +2900,17 @@ extern "C" {
#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_DELETE 976
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_STORE 977
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_STORE 977
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_DELETE 978
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_DELETE 978
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_RESULT 979
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_RESULT 979
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_START 980
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_START 980
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_STOP 981
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_STOP 981
-#define GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_NEXT 982
+#define GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_NEXT 982
/**************************************************
diff --git a/src/include/gnunet_reclaim_lib.h b/src/include/gnunet_reclaim_lib.h
index 7d521ffa8..f5c3d3864 100644
--- a/src/include/gnunet_reclaim_lib.h
+++ b/src/include/gnunet_reclaim_lib.h
@@ -39,26 +39,34 @@ extern "C" {
#include "gnunet_util_lib.h"
+enum GNUNET_RECLAIM_AttributeType {
+ /**
+ * No value attribute.
+ */
+ GNUNET_RECLAIM_ATTRIBUTE_TYPE_NONE = 0,
-/**
- * No value attribute.
- */
-#define GNUNET_RECLAIM_ATTRIBUTE_TYPE_NONE 0
+ /**
+ * String attribute.
+ */
+ GNUNET_RECLAIM_ATTRIBUTE_TYPE_STRING = 1
+};
-/**
- * String attribute.
- */
-#define GNUNET_RECLAIM_ATTRIBUTE_TYPE_STRING 1
+enum GNUNET_RECLAIM_CredentialType {
+ /**
+ * No value credential.
+ */
+ GNUNET_RECLAIM_CREDENTIAL_TYPE_NONE = 0,
-/**
-* No value attestation.
-*/
-#define GNUNET_RECLAIM_ATTESTATION_TYPE_NONE 10
+ /**
+ * A JSON Web Token credential.
+ */
+ GNUNET_RECLAIM_CREDENTIAL_TYPE_JWT = 1,
-/**
-* A JSON Web Token attestation.
-*/
-#define GNUNET_RECLAIM_ATTESTATION_TYPE_JWT 11
+ /**
+ * libpabc credential
+ */
+ GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC = 2
+};
/**
* We want an ID to be a 256-bit symmetric key
@@ -107,9 +115,10 @@ struct GNUNET_RECLAIM_Attribute
struct GNUNET_RECLAIM_Identifier id;
/**
- * Referenced ID of Attestation (may be 0 if self-attested)
+ * Referenced ID of credential
+ * (may be GNUNET_RECLAIM_ID_ZERO if self-creded)
*/
- struct GNUNET_RECLAIM_Identifier attestation;
+ struct GNUNET_RECLAIM_Identifier credential;
/**
* Type of Claim
@@ -141,9 +150,9 @@ struct GNUNET_RECLAIM_Attribute
};
/**
- * An attestation.
+ * A credential.
*/
-struct GNUNET_RECLAIM_Attestation
+struct GNUNET_RECLAIM_Credential
{
/**
* ID
@@ -161,7 +170,7 @@ struct GNUNET_RECLAIM_Attestation
uint32_t flag;
/**
- * The name of the attribute. Note "name" must never be individually
+ * The name of the credential. Note: must never be individually
* free'd
*/
const char *name;
@@ -172,7 +181,36 @@ struct GNUNET_RECLAIM_Attestation
size_t data_size;
/**
- * Binary value stored as attribute value. Note: "data" must never
+ * Binary value stored as credential value. Note: "data" must never
+ * be individually 'malloc'ed, but instead always points into some
+ * existing data area.
+ */
+ const void *data;
+};
+
+
+/**
+ * A credential presentation.
+ */
+struct GNUNET_RECLAIM_Presentation
+{
+ /**
+ * The credential id of which this is a presentation.
+ */
+ struct GNUNET_RECLAIM_Identifier credential_id;
+
+ /**
+ * Type/Format of Claim
+ */
+ uint32_t type;
+
+ /**
+ * Number of bytes in @e data.
+ */
+ size_t data_size;
+
+ /**
+ * Binary value stored as presentation value. Note: "data" must never
* be individually 'malloc'ed, but instead always points into some
* existing data area.
*/
@@ -180,6 +218,7 @@ struct GNUNET_RECLAIM_Attestation
};
+
/**
* A list of GNUNET_RECLAIM_Attribute structures.
*/
@@ -217,56 +256,94 @@ struct GNUNET_RECLAIM_AttributeListEntry
};
/**
- * A list of GNUNET_RECLAIM_Attestation structures.
+ * A list of GNUNET_RECLAIM_Credential structures.
*/
-struct GNUNET_RECLAIM_AttestationList
+struct GNUNET_RECLAIM_CredentialList
{
/**
* List head
*/
- struct GNUNET_RECLAIM_AttestationListEntry *list_head;
+ struct GNUNET_RECLAIM_CredentialListEntry *list_head;
/**
* List tail
*/
- struct GNUNET_RECLAIM_AttestationListEntry *list_tail;
+ struct GNUNET_RECLAIM_CredentialListEntry *list_tail;
};
-struct GNUNET_RECLAIM_AttestationListEntry
+struct GNUNET_RECLAIM_CredentialListEntry
{
/**
* DLL
*/
- struct GNUNET_RECLAIM_AttestationListEntry *prev;
+ struct GNUNET_RECLAIM_CredentialListEntry *prev;
/**
* DLL
*/
- struct GNUNET_RECLAIM_AttestationListEntry *next;
+ struct GNUNET_RECLAIM_CredentialListEntry *next;
/**
- * The attestation
+ * The credential
*/
- struct GNUNET_RECLAIM_Attestation *attestation;
+ struct GNUNET_RECLAIM_Credential *credential;
};
/**
+ * A list of GNUNET_RECLAIM_Presentation structures.
+ */
+struct GNUNET_RECLAIM_PresentationList
+{
+ /**
+ * List head
+ */
+ struct GNUNET_RECLAIM_PresentationListEntry *list_head;
+
+ /**
+ * List tail
+ */
+ struct GNUNET_RECLAIM_PresentationListEntry *list_tail;
+};
+
+
+struct GNUNET_RECLAIM_PresentationListEntry
+{
+ /**
+ * DLL
+ */
+ struct GNUNET_RECLAIM_PresentationListEntry *prev;
+
+ /**
+ * DLL
+ */
+ struct GNUNET_RECLAIM_PresentationListEntry *next;
+
+ /**
+ * The credential
+ */
+ struct GNUNET_RECLAIM_Presentation *presentation;
+
+};
+
+
+
+/**
* Create a new attribute claim.
*
* @param attr_name the attribute name
- * @param attestation ID of the attestation (may be NULL)
+ * @param credential ID of the credential (may be NULL)
* @param type the attribute type
- * @param data the attribute value. Must be the mapped name if attestation not NULL
+ * @param data the attribute value. Must be #attr_name if credential not NULL
* @param data_size the attribute value size
* @return the new attribute
*/
struct GNUNET_RECLAIM_Attribute *
GNUNET_RECLAIM_attribute_new (const char *attr_name,
const struct
- GNUNET_RECLAIM_Identifier *attestation,
+ GNUNET_RECLAIM_Identifier *credential,
uint32_t type,
const void *data,
size_t data_size);
@@ -298,7 +375,7 @@ GNUNET_RECLAIM_attribute_list_destroy (
*
* @param attrs the attribute list to add to
* @param attr_name the name of the new attribute claim
- * @param attestation attestation ID (may be NULL)
+ * @param credential credential ID (may be NULL)
* @param type the type of the claim
* @param data claim payload
* @param data_size claim payload size
@@ -307,7 +384,7 @@ void
GNUNET_RECLAIM_attribute_list_add (
struct GNUNET_RECLAIM_AttributeList *attrs,
const char *attr_name,
- const struct GNUNET_RECLAIM_Identifier *attestation,
+ const struct GNUNET_RECLAIM_Identifier *credential,
uint32_t type,
const void *data,
size_t data_size);
@@ -439,8 +516,8 @@ GNUNET_RECLAIM_attribute_number_to_typename (uint32_t type);
* @return the required buffer size
*/
size_t
-GNUNET_RECLAIM_attestation_list_serialize_get_size (
- const struct GNUNET_RECLAIM_AttestationList *attestations);
+GNUNET_RECLAIM_credential_list_serialize_get_size (
+ const struct GNUNET_RECLAIM_CredentialList *credentials);
/**
@@ -449,8 +526,8 @@ GNUNET_RECLAIM_attestation_list_serialize_get_size (
* @param attrs list to destroy
*/
void
-GNUNET_RECLAIM_attestation_list_destroy (
- struct GNUNET_RECLAIM_AttestationList *attestations);
+GNUNET_RECLAIM_credential_list_destroy (
+ struct GNUNET_RECLAIM_CredentialList *credentials);
/**
@@ -462,8 +539,8 @@ GNUNET_RECLAIM_attestation_list_destroy (
* @param data_size claim payload size
*/
void
-GNUNET_RECLAIM_attestation_list_add (
- struct GNUNET_RECLAIM_AttestationList *attrs,
+GNUNET_RECLAIM_credential_list_add (
+ struct GNUNET_RECLAIM_CredentialList *attrs,
const char *att_name,
uint32_t type,
const void *data,
@@ -478,8 +555,8 @@ GNUNET_RECLAIM_attestation_list_add (
* @return length of serialized data
*/
size_t
-GNUNET_RECLAIM_attestation_list_serialize (
- const struct GNUNET_RECLAIM_AttestationList *attrs,
+GNUNET_RECLAIM_credential_list_serialize (
+ const struct GNUNET_RECLAIM_CredentialList *attrs,
char *result);
@@ -490,75 +567,75 @@ GNUNET_RECLAIM_attestation_list_serialize (
* @param data_size the length of the serialized data
* @return a GNUNET_IDENTITY_PROVIDER_AttributeList, must be free'd by caller
*/
-struct GNUNET_RECLAIM_AttestationList *
-GNUNET_RECLAIM_attestation_list_deserialize (const char *data,
+struct GNUNET_RECLAIM_CredentialList *
+GNUNET_RECLAIM_credential_list_deserialize (const char *data,
size_t data_size);
/**
- * @param attestation the attestation to serialize
+ * @param credential the credential to serialize
* @return the required buffer size
*/
size_t
-GNUNET_RECLAIM_attestation_serialize_get_size (
- const struct GNUNET_RECLAIM_Attestation *attestation);
+GNUNET_RECLAIM_credential_serialize_get_size (
+ const struct GNUNET_RECLAIM_Credential *credential);
/**
- * Serialize an attestation
+ * Serialize an credential
*
- * @param attestation the attestation to serialize
- * @param result the serialized attestation
+ * @param credential the credential to serialize
+ * @param result the serialized credential
* @return length of serialized data
*/
size_t
-GNUNET_RECLAIM_attestation_serialize (
- const struct GNUNET_RECLAIM_Attestation *attestation,
+GNUNET_RECLAIM_credential_serialize (
+ const struct GNUNET_RECLAIM_Credential *credential,
char *result);
/**
- * Deserialize an attestation
+ * Deserialize an credential
*
- * @param data the serialized attestation
+ * @param data the serialized credential
* @param data_size the length of the serialized data
*
* @return a GNUNET_IDENTITY_PROVIDER_Attribute, must be free'd by caller
*/
-struct GNUNET_RECLAIM_Attestation *
-GNUNET_RECLAIM_attestation_deserialize (const char *data, size_t data_size);
+struct GNUNET_RECLAIM_Credential *
+GNUNET_RECLAIM_credential_deserialize (const char *data, size_t data_size);
/**
- * Create a new attestation.
+ * Create a new credential.
*
- * @param name the attestation name
- * @param type the attestation type
- * @param data the attestation value
- * @param data_size the attestation value size
- * @return the new attestation
- */
-struct GNUNET_RECLAIM_Attestation *
-GNUNET_RECLAIM_attestation_new (const char *name,
+ * @param name the credential name
+ * @param type the credential type
+ * @param data the credential value
+ * @param data_size the credential value size
+ * @return the new credential
+ */
+struct GNUNET_RECLAIM_Credential *
+GNUNET_RECLAIM_credential_new (const char *name,
uint32_t type,
const void *data,
size_t data_size);
/**
- * Convert the 'claim' of an attestation to a string
+ * Convert the 'claim' of an credential to a string
*
- * @param type the type of attestation
+ * @param type the type of credential
* @param data claim in binary encoding
* @param data_size number of bytes in @a data
* @return NULL on error, otherwise human-readable representation of the claim
*/
char *
-GNUNET_RECLAIM_attestation_value_to_string (uint32_t type,
+GNUNET_RECLAIM_credential_value_to_string (uint32_t type,
const void *data,
size_t data_size);
/**
- * Convert human-readable version of a 'claim' of an attestation to the binary
+ * Convert human-readable version of a 'claim' of an credential to the binary
* representation
*
* @param type type of the claim
@@ -568,48 +645,199 @@ GNUNET_RECLAIM_attestation_value_to_string (uint32_t type,
* @return #GNUNET_OK on success
*/
int
-GNUNET_RECLAIM_attestation_string_to_value (uint32_t type,
+GNUNET_RECLAIM_credential_string_to_value (uint32_t type,
const char *s,
void **data,
size_t *data_size);
/**
- * Convert an attestation type number to the corresponding attestation type string
+ * Convert an credential type number to the corresponding credential type string
*
* @param type number of a type
* @return corresponding typestring, NULL on error
*/
const char *
-GNUNET_RECLAIM_attestation_number_to_typename (uint32_t type);
+GNUNET_RECLAIM_credential_number_to_typename (uint32_t type);
/**
- * Convert an attestation type name to the corresponding number
+ * Convert an credential type name to the corresponding number
*
* @param typename name to convert
* @return corresponding number, UINT32_MAX on error
*/
uint32_t
-GNUNET_RECLAIM_attestation_typename_to_number (const char *typename);
+GNUNET_RECLAIM_credential_typename_to_number (const char *typename);
/**
- * Convert an attestation type name to the corresponding number
+ * Convert an credential type name to the corresponding number
*
* @param typename name to convert
* @return corresponding number, UINT32_MAX on error
*/
struct GNUNET_RECLAIM_AttributeList*
-GNUNET_RECLAIM_attestation_get_attributes (const struct
- GNUNET_RECLAIM_Attestation *attest);
+GNUNET_RECLAIM_credential_get_attributes (const struct
+ GNUNET_RECLAIM_Credential *cred);
char*
-GNUNET_RECLAIM_attestation_get_issuer (const struct
- GNUNET_RECLAIM_Attestation *attest);
+GNUNET_RECLAIM_credential_get_issuer (const struct
+ GNUNET_RECLAIM_Credential *cred);
int
-GNUNET_RECLAIM_attestation_get_expiration (const struct
- GNUNET_RECLAIM_Attestation *attest,
+GNUNET_RECLAIM_credential_get_expiration (const struct
+ GNUNET_RECLAIM_Credential *cred,
struct GNUNET_TIME_Absolute *exp);
+/**
+ * Get required size for serialization buffer
+ *
+ * @param presentations the presentation list to serialize
+ * @return the required buffer size
+ */
+size_t
+GNUNET_RECLAIM_presentation_list_serialize_get_size (
+ const struct GNUNET_RECLAIM_PresentationList *presentations);
+
+
+/**
+ * Destroy presentations list
+ *
+ * @param presentations list to destroy
+ */
+void
+GNUNET_RECLAIM_presentation_list_destroy (
+ struct GNUNET_RECLAIM_PresentationList *presentations);
+
+
+/**
+ * Serialize a presentation list
+ *
+ * @param presentations the attribute list to serialize
+ * @param result the serialized list
+ * @return length of serialized data
+ */
+size_t
+GNUNET_RECLAIM_presentation_list_serialize (
+ const struct GNUNET_RECLAIM_PresentationList *presentations,
+ char *result);
+
+
+/**
+ * Deserialize a presentation list
+ *
+ * @param data the serialized list
+ * @param data_size the length of the serialized data
+ * @return a GNUNET_RECLAIM_PresentationList, must be free'd by caller
+ */
+struct GNUNET_RECLAIM_PresentationList *
+GNUNET_RECLAIM_presentation_list_deserialize (const char *data,
+ size_t data_size);
+
+
+/**
+ * @param presentation the presentation to serialize
+ * @return the required buffer size
+ */
+size_t
+GNUNET_RECLAIM_presentation_serialize_get_size (
+ const struct GNUNET_RECLAIM_Presentation *presentation);
+
+
+/**
+ * Serialize a presentation.
+ *
+ * @param presentation the presentation to serialize
+ * @param result the serialized presentation
+ * @return length of serialized data
+ */
+size_t
+GNUNET_RECLAIM_presentation_serialize (
+ const struct GNUNET_RECLAIM_Presentation *presentation,
+ char *result);
+
+
+/**
+ * Deserialize a presentation
+ *
+ * @param data the serialized presentation
+ * @param data_size the length of the serialized data
+ *
+ * @return a GNUNET_RECLAIM_Presentation, must be free'd by caller
+ */
+struct GNUNET_RECLAIM_Presentation *
+GNUNET_RECLAIM_presentation_deserialize (const char *data, size_t data_size);
+
+
+/**
+ * Convert the 'claim' of a presentation to a string
+ *
+ * @param type the type of presentation
+ * @param data presentation in binary encoding
+ * @param data_size number of bytes in @a data
+ * @return NULL on error, otherwise human-readable representation of the claim
+ */
+char *
+GNUNET_RECLAIM_presentation_value_to_string (uint32_t type,
+ const void *data,
+ size_t data_size);
+
+/**
+ * Convert human-readable version of a 'claim' of a presentation to the binary
+ * representation
+ *
+ * @param type type of the presentation
+ * @param s human-readable string
+ * @param data set to value in binary encoding (will be allocated)
+ * @param data_size set to number of bytes in @a data
+ * @return #GNUNET_OK on success
+ */
+int
+GNUNET_RECLAIM_presentation_string_to_value (uint32_t type,
+ const char *s,
+ void **data,
+ size_t *data_size);
+
+/**
+ * Convert a presentation type number to the corresponding credential type
+ * string.
+ *
+ * @param type number of a type
+ * @return corresponding typestring, NULL on error
+ */
+const char *
+GNUNET_RECLAIM_presentation_number_to_typename (uint32_t type);
+
+struct GNUNET_RECLAIM_AttributeList*
+GNUNET_RECLAIM_presentation_get_attributes (const struct
+ GNUNET_RECLAIM_Presentation *cred);
+
+char*
+GNUNET_RECLAIM_presentation_get_issuer (const struct
+ GNUNET_RECLAIM_Presentation *cred);
+
+int
+GNUNET_RECLAIM_presentation_get_expiration (const struct
+ GNUNET_RECLAIM_Presentation *cred,
+ struct GNUNET_TIME_Absolute *exp);
+
+
+
+/**
+ * Create a presentation from a credential and a lift of (selected)
+ * attributes in the credential.
+ * FIXME not yet implemented
+ *
+ * @param cred the credential to use
+ * @param attrs the attributes to present from the credential
+ * @return the credential presentation presenting the attributes according
+ * to the presentation mechanism of the credential
+ * or NULL on error.
+ */
+struct GNUNET_RECLAIM_Presentation*
+GNUNET_RECLAIM_credential_get_presentation (
+ const struct GNUNET_RECLAIM_Credential *cred,
+ const struct GNUNET_RECLAIM_AttributeList *attrs);
+
+
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif
diff --git a/src/include/gnunet_reclaim_plugin.h b/src/include/gnunet_reclaim_plugin.h
index 7ee9e730f..af6c74e0b 100644
--- a/src/include/gnunet_reclaim_plugin.h
+++ b/src/include/gnunet_reclaim_plugin.h
@@ -27,8 +27,8 @@
* @defgroup reclaim-attribute-plugin reclaim plugin API for attributes/claims
* @{
*/
-#ifndef GNUNET_RECLAIM_AttributePLUGIN_H
-#define GNUNET_RECLAIM_AttributePLUGIN_H
+#ifndef GNUNET_RECLAIM_PLUGIN_H
+#define GNUNET_RECLAIM_PLUGIN_H
#include "gnunet_util_lib.h"
#include "gnunet_reclaim_lib.h"
@@ -113,7 +113,7 @@ typedef const char *(*GNUNET_RECLAIM_AttributeNumberToTypenameFunction) (
* @param data_size number of bytes in @a data
* @return NULL on error, otherwise human-readable representation of the value
*/
-typedef char *(*GNUNET_RECLAIM_AttestationValueToStringFunction) (
+typedef char *(*GNUNET_RECLAIM_CredentialValueToStringFunction) (
void *cls,
uint32_t type,
const void *data,
@@ -132,7 +132,7 @@ typedef char *(*GNUNET_RECLAIM_AttestationValueToStringFunction) (
* @param data_size set to number of bytes in @a data
* @return #GNUNET_OK on success
*/
-typedef int (*GNUNET_RECLAIM_AttestationStringToValueFunction) (
+typedef int (*GNUNET_RECLAIM_CredentialStringToValueFunction) (
void *cls,
uint32_t type,
const char *s,
@@ -148,7 +148,7 @@ typedef int (*GNUNET_RECLAIM_AttestationStringToValueFunction) (
* @param typename name to convert
* @return corresponding number, UINT32_MAX on error
*/
-typedef uint32_t (*GNUNET_RECLAIM_AttestationTypenameToNumberFunction) (
+typedef uint32_t (*GNUNET_RECLAIM_CredentialTypenameToNumberFunction) (
void *cls,
const char *typename);
@@ -161,45 +161,144 @@ typedef uint32_t (*GNUNET_RECLAIM_AttestationTypenameToNumberFunction) (
* @param type number of a type to convert
* @return corresponding typestring, NULL on error
*/
-typedef const char *(*GNUNET_RECLAIM_AttestationNumberToTypenameFunction) (
+typedef const char *(*GNUNET_RECLAIM_CredentialNumberToTypenameFunction) (
void *cls,
uint32_t type);
/**
- * Function called to extract attributes from an attestation
+ * Function called to extract attributes from a credential
*
* @param cls closure
- * @param attest the attestation object
+ * @param cred the credential object
* @return an attribute list
*/
typedef struct
GNUNET_RECLAIM_AttributeList *(*
-GNUNET_RECLAIM_AttestationGetAttributesFunction) (
+GNUNET_RECLAIM_CredentialGetAttributesFunction) (
void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest);
+ const struct GNUNET_RECLAIM_Credential *cred);
/**
- * Function called to get the issuer of the attestation (as string)
+ * Function called to get the issuer of the credential (as string)
*
* @param cls closure
- * @param attest the attestation object
+ * @param cred the credential object
* @return corresponding issuer string
*/
-typedef char *(*GNUNET_RECLAIM_AttestationGetIssuerFunction) (
+typedef char *(*GNUNET_RECLAIM_CredentialGetIssuerFunction) (
void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest);
+ const struct GNUNET_RECLAIM_Credential *cred);
/**
- * Function called to get the expiration of the attestation
+ * Function called to get the expiration of the credential
*
* @param cls closure
- * @param attest the attestation object
+ * @param cred the credential object
* @param where to write the value
* @return GNUNET_OK if successful
*/
-typedef int (*GNUNET_RECLAIM_AttestationGetExpirationFunction) (
+typedef int (*GNUNET_RECLAIM_CredentialGetExpirationFunction) (
void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest,
+ const struct GNUNET_RECLAIM_Credential *cred,
+ struct GNUNET_TIME_Absolute *expiration);
+
+/**
+ * Function called to convert the binary value @a data of an attribute of
+ * type @a type to a human-readable string.
+ *
+ * @param cls closure
+ * @param type type of the attribute
+ * @param data value in binary encoding
+ * @param data_size number of bytes in @a data
+ * @return NULL on error, otherwise human-readable representation of the value
+ */
+typedef char *(*GNUNET_RECLAIM_PresentationValueToStringFunction) (
+ void *cls,
+ uint32_t type,
+ const void *data,
+ size_t data_size);
+
+
+/**
+ * Function called to convert human-readable version of the value @a s
+ * of an attribute of type @a type to the respective binary
+ * representation.
+ *
+ * @param cls closure
+ * @param type type of the attribute
+ * @param s human-readable string
+ * @param data set to value in binary encoding (will be allocated)
+ * @param data_size set to number of bytes in @a data
+ * @return #GNUNET_OK on success
+ */
+typedef int (*GNUNET_RECLAIM_PresentationStringToValueFunction) (
+ void *cls,
+ uint32_t type,
+ const char *s,
+ void **data,
+ size_t *data_size);
+
+
+/**
+ * Function called to convert a type name to the
+ * corresponding number.
+ *
+ * @param cls closure
+ * @param typename name to convert
+ * @return corresponding number, UINT32_MAX on error
+ */
+typedef uint32_t (*GNUNET_RECLAIM_PresentationTypenameToNumberFunction) (
+ void *cls,
+ const char *typename);
+
+
+/**
+ * Function called to convert a type number (i.e. 1) to the
+ * corresponding type string
+ *
+ * @param cls closure
+ * @param type number of a type to convert
+ * @return corresponding typestring, NULL on error
+ */
+typedef const char *(*GNUNET_RECLAIM_PresentationNumberToTypenameFunction) (
+ void *cls,
+ uint32_t type);
+
+/**
+ * Function called to extract attributes from a credential
+ *
+ * @param cls closure
+ * @param cred the credential object
+ * @return an attribute list
+ */
+typedef struct
+ GNUNET_RECLAIM_AttributeList *(*
+GNUNET_RECLAIM_PresentationGetAttributesFunction) (
+ void *cls,
+ const struct GNUNET_RECLAIM_Presentation *cred);
+
+/**
+ * Function called to get the issuer of the credential (as string)
+ *
+ * @param cls closure
+ * @param cred the credential object
+ * @return corresponding issuer string
+ */
+typedef char *(*GNUNET_RECLAIM_PresentationGetIssuerFunction) (
+ void *cls,
+ const struct GNUNET_RECLAIM_Presentation *cred);
+
+/**
+ * Function called to get the expiration of the credential
+ *
+ * @param cls closure
+ * @param cred the credential object
+ * @param where to write the value
+ * @return GNUNET_OK if successful
+ */
+typedef int (*GNUNET_RECLAIM_PresentationGetExpirationFunction) (
+ void *cls,
+ const struct GNUNET_RECLAIM_Presentation *cred,
struct GNUNET_TIME_Absolute *expiration);
@@ -240,7 +339,7 @@ struct GNUNET_RECLAIM_AttributePluginFunctions
* Each plugin is required to return a pointer to a struct of this
* type as the return value from its entry point.
*/
-struct GNUNET_RECLAIM_AttestationPluginFunctions
+struct GNUNET_RECLAIM_CredentialPluginFunctions
{
/**
* Closure for all of the callbacks.
@@ -250,37 +349,73 @@ struct GNUNET_RECLAIM_AttestationPluginFunctions
/**
* Conversion to string.
*/
- GNUNET_RECLAIM_AttestationValueToStringFunction value_to_string;
+ GNUNET_RECLAIM_CredentialValueToStringFunction value_to_string;
+
+ /**
+ * Conversion to binary.
+ */
+ GNUNET_RECLAIM_CredentialStringToValueFunction string_to_value;
+
+ /**
+ * Typename to number.
+ */
+ GNUNET_RECLAIM_CredentialTypenameToNumberFunction typename_to_number;
+
+ /**
+ * Number to typename.
+ */
+ GNUNET_RECLAIM_CredentialNumberToTypenameFunction number_to_typename;
+
+ /**
+ * Attesation attributes.
+ */
+ GNUNET_RECLAIM_CredentialGetAttributesFunction get_attributes;
+
+ /**
+ * Attesation issuer.
+ */
+ GNUNET_RECLAIM_CredentialGetIssuerFunction get_issuer;
+
+ /**
+ * Expiration.
+ */
+ GNUNET_RECLAIM_CredentialGetExpirationFunction get_expiration;
+
+ /**
+ * Conversion to string.
+ */
+ GNUNET_RECLAIM_PresentationValueToStringFunction value_to_string_p;
/**
* Conversion to binary.
*/
- GNUNET_RECLAIM_AttestationStringToValueFunction string_to_value;
+ GNUNET_RECLAIM_PresentationStringToValueFunction string_to_value_p;
/**
* Typename to number.
*/
- GNUNET_RECLAIM_AttestationTypenameToNumberFunction typename_to_number;
+ GNUNET_RECLAIM_PresentationTypenameToNumberFunction typename_to_number_p;
/**
* Number to typename.
*/
- GNUNET_RECLAIM_AttestationNumberToTypenameFunction number_to_typename;
+ GNUNET_RECLAIM_PresentationNumberToTypenameFunction number_to_typename_p;
/**
* Attesation attributes.
*/
- GNUNET_RECLAIM_AttestationGetAttributesFunction get_attributes;
+ GNUNET_RECLAIM_PresentationGetAttributesFunction get_attributes_p;
/**
* Attesation issuer.
*/
- GNUNET_RECLAIM_AttestationGetIssuerFunction get_issuer;
+ GNUNET_RECLAIM_PresentationGetIssuerFunction get_issuer_p;
/**
* Expiration.
*/
- GNUNET_RECLAIM_AttestationGetExpirationFunction get_expiration;
+ GNUNET_RECLAIM_PresentationGetExpirationFunction get_expiration_p;
+
};
diff --git a/src/include/gnunet_reclaim_service.h b/src/include/gnunet_reclaim_service.h
index 139c44ae7..8387c79b0 100644
--- a/src/include/gnunet_reclaim_service.h
+++ b/src/include/gnunet_reclaim_service.h
@@ -113,7 +113,6 @@ typedef void (*GNUNET_RECLAIM_ContinuationWithStatus) (void *cls,
* @param cls The callback closure
* @param identity The identity authoritative over the attributes
* @param attr The attribute
- * @param attestation The attestation for the attribute (may be NULL)
*/
typedef void (*GNUNET_RECLAIM_AttributeResult) (
void *cls, const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
@@ -125,25 +124,25 @@ typedef void (*GNUNET_RECLAIM_AttributeResult) (
* @param cls The callback closure
* @param identity The identity authoritative over the attributes
* @param attr The attribute
- * @param attestation The attestation for the attribute (may be NULL)
+ * @param presentation The presentation for the credential (may be NULL)
*/
typedef void (*GNUNET_RECLAIM_AttributeTicketResult) (
void *cls, const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_Attribute *attr,
- const struct GNUNET_RECLAIM_Attestation *attestation);
+ const struct GNUNET_RECLAIM_Presentation *presentation);
/**
- * Callback used to notify the client of attestation results.
+ * Callback used to notify the client of credential results.
*
* @param cls The callback closure
* @param identity The identity authoritative over the attributes
- * @param attestation The attestation
+ * @param credential The credential
* @param attributes the parsed attributes
*/
-typedef void (*GNUNET_RECLAIM_AttestationResult) (
+typedef void (*GNUNET_RECLAIM_CredentialResult) (
void *cls, const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
- const struct GNUNET_RECLAIM_Attestation *attestation);
+ const struct GNUNET_RECLAIM_Credential *credential);
/**
@@ -178,22 +177,22 @@ GNUNET_RECLAIM_attribute_store (
/**
- * Store an attestation. If the attestation is already present,
- * it is replaced with the new attestation.
+ * Store a credential. If the credential is already present,
+ * it is replaced with the new credential.
*
* @param h handle to the re:claimID service
* @param pkey private key of the identity
- * @param attr the attestation value
- * @param exp_interval the relative expiration interval for the attestation
+ * @param attr the credential value
+ * @param exp_interval the relative expiration interval for the credential
* @param cont continuation to call when done
* @param cont_cls closure for @a cont
* @return handle to abort the request
*/
struct GNUNET_RECLAIM_Operation *
-GNUNET_RECLAIM_attestation_store (
+GNUNET_RECLAIM_credential_store (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
- const struct GNUNET_RECLAIM_Attestation *attestation,
+ const struct GNUNET_RECLAIM_Credential *credential,
const struct GNUNET_TIME_Relative *exp_interval,
GNUNET_RECLAIM_ContinuationWithStatus cont,
void *cont_cls);
@@ -218,21 +217,21 @@ GNUNET_RECLAIM_attribute_delete (
GNUNET_RECLAIM_ContinuationWithStatus cont, void *cont_cls);
/**
- * Delete an attestation. Tickets used to share this attestation are updated
- * accordingly.
+ * Delete a credential. Tickets used to share use a presentation of this
+ * credential are updated accordingly.
*
* @param h handle to the re:claimID service
* @param pkey Private key of the identity to add an attribute to
- * @param attr The attestation
+ * @param cred The credential
* @param cont Continuation to call when done
* @param cont_cls Closure for @a cont
* @return handle Used to to abort the request
*/
struct GNUNET_RECLAIM_Operation *
-GNUNET_RECLAIM_attestation_delete (
+GNUNET_RECLAIM_credential_delete (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
- const struct GNUNET_RECLAIM_Attestation *attr,
+ const struct GNUNET_RECLAIM_Credential *cred,
GNUNET_RECLAIM_ContinuationWithStatus cont,
void *cont_cls);
@@ -293,12 +292,12 @@ GNUNET_RECLAIM_get_attributes_stop (
/**
- * List all attestations for a local identity.
+ * List all credentials for a local identity.
* This MUST lock the `struct GNUNET_RECLAIM_Handle`
- * for any other calls than #GNUNET_RECLAIM_get_attestations_next() and
- * #GNUNET_RECLAIM_get_attestations_stop. @a proc will be called once
+ * for any other calls than #GNUNET_RECLAIM_get_credentials_next() and
+ * #GNUNET_RECLAIM_get_credentials_stop. @a proc will be called once
* immediately, and then again after
- * #GNUNET_RECLAIM_get_attestations_next() is invoked.
+ * #GNUNET_RECLAIM_get_credentials_next() is invoked.
*
* On error (disconnect), @a error_cb will be invoked.
* On normal completion, @a finish_cb proc will be
@@ -309,34 +308,34 @@ GNUNET_RECLAIM_get_attributes_stop (
* @param error_cb Function to call on error (i.e. disconnect),
* the handle is afterwards invalid
* @param error_cb_cls Closure for @a error_cb
- * @param proc Function to call on each attestation
+ * @param proc Function to call on each credential
* @param proc_cls Closure for @a proc
* @param finish_cb Function to call on completion
* the handle is afterwards invalid
* @param finish_cb_cls Closure for @a finish_cb
* @return an iterator Handle to use for iteration
*/
-struct GNUNET_RECLAIM_AttestationIterator *
-GNUNET_RECLAIM_get_attestations_start (
+struct GNUNET_RECLAIM_CredentialIterator *
+GNUNET_RECLAIM_get_credentials_start (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
GNUNET_SCHEDULER_TaskCallback error_cb,
void *error_cb_cls,
- GNUNET_RECLAIM_AttestationResult proc,
+ GNUNET_RECLAIM_CredentialResult proc,
void *proc_cls,
GNUNET_SCHEDULER_TaskCallback finish_cb,
void *finish_cb_cls);
/**
- * Calls the record processor specified in #GNUNET_RECLAIM_get_attestation_start
+ * Calls the record processor specified in #GNUNET_RECLAIM_get_credentials_start
* for the next record.
*
* @param it the iterator
*/
void
-GNUNET_RECLAIM_get_attestations_next (struct
- GNUNET_RECLAIM_AttestationIterator *ait);
+GNUNET_RECLAIM_get_credentials_next (
+ struct GNUNET_RECLAIM_CredentialIterator *ait);
/**
@@ -347,8 +346,8 @@ GNUNET_RECLAIM_get_attestations_next (struct
* @param it the iterator
*/
void
-GNUNET_RECLAIM_get_attestations_stop (struct
- GNUNET_RECLAIM_AttestationIterator *ait);
+GNUNET_RECLAIM_get_credentials_stop (
+ struct GNUNET_RECLAIM_CredentialIterator *ait);
/**
diff --git a/src/reclaim/Makefile.am b/src/reclaim/Makefile.am
index 9b75c11aa..a58127abf 100644
--- a/src/reclaim/Makefile.am
+++ b/src/reclaim/Makefile.am
@@ -13,8 +13,8 @@ REST_PLUGIN = \
libgnunet_plugin_rest_openid_connect.la \
libgnunet_plugin_rest_reclaim.la
-ATTESTATION_PLUGIN = \
- libgnunet_plugin_reclaim_attestation_jwt.la
+CREDENTIAL_PLUGIN = \
+ libgnunet_plugin_reclaim_credential_jwt.la
EXTRA_DIST = \
reclaim.conf \
@@ -34,7 +34,7 @@ lib_LTLIBRARIES = \
plugin_LTLIBRARIES = \
libgnunet_plugin_gnsrecord_reclaim.la \
libgnunet_plugin_reclaim_attribute_basic.la \
- $(ATTESTATION_PLUGIN) \
+ $(CREDENTIAL_PLUGIN) \
$(REST_PLUGIN)
bin_PROGRAMS = \
@@ -115,8 +115,8 @@ libgnunetreclaim_la_SOURCES = \
reclaim.h \
reclaim_attribute.c \
reclaim_attribute.h \
- reclaim_attestation.c \
- reclaim_attestation.h
+ reclaim_credential.c \
+ reclaim_credential.h
libgnunetreclaim_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la \
$(GN_LIBINTL) $(XLIB)
@@ -133,14 +133,14 @@ libgnunet_plugin_reclaim_attribute_basic_la_LIBADD = \
libgnunet_plugin_reclaim_attribute_basic_la_LDFLAGS = \
$(GN_PLUGIN_LDFLAGS)
-libgnunet_plugin_reclaim_attestation_jwt_la_SOURCES = \
- plugin_reclaim_attestation_jwt.c
-libgnunet_plugin_reclaim_attestation_jwt_la_LIBADD = \
+libgnunet_plugin_reclaim_credential_jwt_la_SOURCES = \
+ plugin_reclaim_credential_jwt.c
+libgnunet_plugin_reclaim_credential_jwt_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la \
libgnunetreclaim.la \
-ljansson\
$(LTLIBINTL)
-libgnunet_plugin_reclaim_attestation_jwt_la_LDFLAGS = \
+libgnunet_plugin_reclaim_credential_jwt_la_LDFLAGS = \
$(GN_PLUGIN_LDFLAGS)
gnunet_reclaim_SOURCES = \
diff --git a/src/reclaim/gnunet-reclaim.c b/src/reclaim/gnunet-reclaim.c
index 6bef5b6fe..a59053f5f 100644
--- a/src/reclaim/gnunet-reclaim.c
+++ b/src/reclaim/gnunet-reclaim.c
@@ -43,29 +43,34 @@ static int ret;
static int list;
/**
- * List attestations flag
+ * List credentials flag
*/
-static int list_attestations;
+static int list_credentials;
/**
- * Attestation ID string
+ * Credential ID string
*/
-static char *attestation_id;
+static char *credential_id;
/**
- * Attestation ID
+ * Credential ID
*/
-static struct GNUNET_RECLAIM_Identifier attestation;
+static struct GNUNET_RECLAIM_Identifier credential;
/**
- * Attestation name
+ * Credential name
*/
-static char *attestation_name;
+static char *credential_name;
/**
- * Attestation exists
+ * Credential type
*/
-static int attestation_exists;
+static char *credential_type;
+
+/**
+ * Credential exists
+ */
+static int credential_exists;
/**
* Relying party
@@ -133,9 +138,9 @@ static struct GNUNET_RECLAIM_Operation *reclaim_op;
static struct GNUNET_RECLAIM_AttributeIterator *attr_iterator;
/**
- * Attestation iterator
+ * Credential iterator
*/
-static struct GNUNET_RECLAIM_AttestationIterator *attest_iterator;
+static struct GNUNET_RECLAIM_CredentialIterator *cred_iterator;
/**
@@ -143,10 +148,6 @@ static struct GNUNET_RECLAIM_AttestationIterator *attest_iterator;
*/
static struct GNUNET_RECLAIM_TicketIterator *ticket_iterator;
-/**
- * Master ABE key
- */
-static struct GNUNET_CRYPTO_AbeMasterKey *abe_key;
/**
* ego private key
@@ -208,20 +209,20 @@ do_cleanup (void *cls)
GNUNET_RECLAIM_cancel (reclaim_op);
if (NULL != attr_iterator)
GNUNET_RECLAIM_get_attributes_stop (attr_iterator);
- if (NULL != attest_iterator)
- GNUNET_RECLAIM_get_attestations_stop (attest_iterator);
+ if (NULL != cred_iterator)
+ GNUNET_RECLAIM_get_credentials_stop (cred_iterator);
if (NULL != ticket_iterator)
GNUNET_RECLAIM_ticket_iteration_stop (ticket_iterator);
if (NULL != reclaim_handle)
GNUNET_RECLAIM_disconnect (reclaim_handle);
if (NULL != identity_handle)
GNUNET_IDENTITY_disconnect (identity_handle);
- if (NULL != abe_key)
- GNUNET_free (abe_key);
if (NULL != attr_list)
GNUNET_free (attr_list);
if (NULL != attr_to_delete)
GNUNET_free (attr_to_delete);
+ if (NULL == credential_type)
+ GNUNET_free (credential_type);
}
@@ -260,7 +261,7 @@ static void
process_attrs (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_Attribute *attr,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Presentation *presentation)
{
char *value_str;
char *id;
@@ -280,7 +281,7 @@ process_attrs (void *cls,
attr_type = GNUNET_RECLAIM_attribute_number_to_typename (attr->type);
id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(attr->id));
value_str = NULL;
- if (NULL == attest)
+ if (NULL == presentation)
{
value_str = GNUNET_RECLAIM_attribute_value_to_string (attr->type,
attr->data,
@@ -290,7 +291,7 @@ process_attrs (void *cls,
{
struct GNUNET_RECLAIM_AttributeListEntry *ale;
struct GNUNET_RECLAIM_AttributeList *al
- = GNUNET_RECLAIM_attestation_get_attributes (attest);
+ = GNUNET_RECLAIM_presentation_get_attributes (presentation);
for (ale = al->list_head; NULL != ale; ale = ale->next)
{
@@ -298,10 +299,8 @@ process_attrs (void *cls,
continue;
value_str
= GNUNET_RECLAIM_attribute_value_to_string (ale->attribute->type,
- ale->attribute->
- data,
- ale->attribute->
- data_size);
+ ale->attribute->data,
+ ale->attribute->data_size);
break;
}
}
@@ -312,7 +311,7 @@ process_attrs (void *cls,
attr_type,
attr->flag,
id,
- (NULL == attest) ? "" : "(ATTESTED)");
+ (NULL == presentation) ? "" : "(ATTESTED)");
GNUNET_free (value_str);
GNUNET_free (id);
}
@@ -362,7 +361,7 @@ static void
iter_error (void *cls)
{
attr_iterator = NULL;
- attest_iterator = NULL;
+ cred_iterator = NULL;
fprintf (stderr, "Failed\n");
cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
@@ -489,9 +488,9 @@ iter_finished (void *cls)
claim =
GNUNET_RECLAIM_attribute_new (attr_name, NULL, type, data, data_size);
}
- if (NULL != attestation_id)
+ if (NULL != credential_id)
{
- claim->attestation = attestation;
+ claim->credential = credential;
}
reclaim_op = GNUNET_RECLAIM_attribute_store (reclaim_handle,
pkey,
@@ -524,7 +523,7 @@ iter_cb (void *cls,
if (0 == strcasecmp (attr_name, attr->name))
{
claim = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
@@ -543,7 +542,7 @@ iter_cb (void *cls,
}
le = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
le->attribute = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
@@ -562,7 +561,7 @@ iter_cb (void *cls,
if (0 == strcasecmp (attr_delete, label))
{
attr_to_delete = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
@@ -577,7 +576,7 @@ iter_cb (void *cls,
attr->data_size);
attr_type = GNUNET_RECLAIM_attribute_number_to_typename (attr->type);
id = GNUNET_STRINGS_data_to_string_alloc (&attr->id, sizeof(attr->id));
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attr->attestation))
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attr->credential))
{
fprintf (stdout,
"%s: ``%s'' (%s); ID: %s\n",
@@ -588,17 +587,17 @@ iter_cb (void *cls,
}
else
{
- char *attest_id =
- GNUNET_STRINGS_data_to_string_alloc (&attr->attestation,
- sizeof(attr->attestation));
+ char *cred_id =
+ GNUNET_STRINGS_data_to_string_alloc (&attr->credential,
+ sizeof(attr->credential));
fprintf (stdout,
- "%s: <``%s'' in attestation %s> (%s); ID: %s\n",
+ "%s: ``%s'' in credential presentation `%s' (%s); ID: %s\n",
attr->name,
attr_str,
- attest_id,
+ cred_id,
attr_type,
id);
- GNUNET_free (attest_id);
+ GNUNET_free (cred_id);
}
GNUNET_free (id);
@@ -608,29 +607,31 @@ iter_cb (void *cls,
static void
-attest_iter_finished (void *cls)
+cred_iter_finished (void *cls)
{
- attest_iterator = NULL;
+ cred_iterator = NULL;
- // Add new attestation
- if ((NULL != attestation_name) &&
+ // Add new credential
+ if ((NULL != credential_name) &&
(NULL != attr_value))
{
- struct GNUNET_RECLAIM_Attestation *attestation =
- GNUNET_RECLAIM_attestation_new (attestation_name,
- GNUNET_RECLAIM_ATTESTATION_TYPE_JWT, // FIXME hardcoded
- attr_value,
- strlen (attr_value));
- reclaim_op = GNUNET_RECLAIM_attestation_store (reclaim_handle,
- pkey,
- attestation,
- &exp_interval,
- store_cont,
- NULL);
+ enum GNUNET_RECLAIM_CredentialType ctype =
+ GNUNET_RECLAIM_credential_typename_to_number (credential_type);
+ struct GNUNET_RECLAIM_Credential *credential =
+ GNUNET_RECLAIM_credential_new (credential_name,
+ ctype,
+ attr_value,
+ strlen (attr_value));
+ reclaim_op = GNUNET_RECLAIM_credential_store (reclaim_handle,
+ pkey,
+ credential,
+ &exp_interval,
+ store_cont,
+ NULL);
return;
}
- if (list_attestations)
+ if (list_credentials)
{
cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
return;
@@ -648,34 +649,34 @@ attest_iter_finished (void *cls)
static void
-attest_iter_cb (void *cls,
- const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
- const struct GNUNET_RECLAIM_Attestation *attest)
+cred_iter_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
+ const struct GNUNET_RECLAIM_Credential *cred)
{
- char *attest_str;
+ char *cred_str;
char *attr_str;
char *id;
- const char *attest_type;
+ const char *cred_type;
struct GNUNET_RECLAIM_AttributeListEntry *ale;
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (&attestation,
- &attest->id))
- attestation_exists = GNUNET_YES;
- if (list_attestations)
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (&credential,
+ &cred->id))
+ credential_exists = GNUNET_YES;
+ if (list_credentials)
{
- attest_str = GNUNET_RECLAIM_attestation_value_to_string (attest->type,
- attest->data,
- attest->data_size);
- attest_type = GNUNET_RECLAIM_attestation_number_to_typename (attest->type);
- id = GNUNET_STRINGS_data_to_string_alloc (&attest->id, sizeof(attest->id));
+ cred_str = GNUNET_RECLAIM_credential_value_to_string (cred->type,
+ cred->data,
+ cred->data_size);
+ cred_type = GNUNET_RECLAIM_credential_number_to_typename (cred->type);
+ id = GNUNET_STRINGS_data_to_string_alloc (&cred->id, sizeof(cred->id));
fprintf (stdout,
"%s: ``%s'' (%s); ID: %s\n",
- attest->name,
- attest_str,
- attest_type,
+ cred->name,
+ cred_str,
+ cred_type,
id);
struct GNUNET_RECLAIM_AttributeList *attrs =
- GNUNET_RECLAIM_attestation_get_attributes (attest);
+ GNUNET_RECLAIM_credential_get_attributes (cred);
if (NULL != attrs)
{
fprintf (stdout,
@@ -684,11 +685,8 @@ attest_iter_cb (void *cls,
{
attr_str = GNUNET_RECLAIM_attribute_value_to_string (
ale->attribute->type,
- ale->attribute->
- data,
- ale->attribute->
- data_size);
-
+ ale->attribute->data,
+ ale->attribute->data_size);
fprintf (stdout,
"\t %s: %s\n", ale->attribute->name, attr_str);
GNUNET_free (attr_str);
@@ -697,7 +695,7 @@ attest_iter_cb (void *cls,
}
GNUNET_free (id);
}
- GNUNET_RECLAIM_get_attestations_next (attest_iterator);
+ GNUNET_RECLAIM_get_credentials_next (cred_iterator);
}
@@ -710,12 +708,14 @@ start_process ()
cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
return;
}
- attestation = GNUNET_RECLAIM_ID_ZERO;
- if (NULL != attestation_id)
- GNUNET_STRINGS_string_to_data (attestation_id,
- strlen (attestation_id),
- &attestation, sizeof(attestation));
- attestation_exists = GNUNET_NO;
+ if (NULL == credential_type)
+ credential_type = GNUNET_strdup ("JWT");
+ credential = GNUNET_RECLAIM_ID_ZERO;
+ if (NULL != credential_id)
+ GNUNET_STRINGS_string_to_data (credential_id,
+ strlen (credential_id),
+ &credential, sizeof(credential));
+ credential_exists = GNUNET_NO;
if (list_tickets)
{
ticket_iterator = GNUNET_RECLAIM_ticket_iteration_start (reclaim_handle,
@@ -750,15 +750,14 @@ start_process ()
attr_list = GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
claim = NULL;
- attest_iterator = GNUNET_RECLAIM_get_attestations_start (reclaim_handle,
- pkey,
- &iter_error,
- NULL,
- &attest_iter_cb,
- NULL,
- &
- attest_iter_finished,
- NULL);
+ cred_iterator = GNUNET_RECLAIM_get_credentials_start (reclaim_handle,
+ pkey,
+ &iter_error,
+ NULL,
+ &cred_iter_cb,
+ NULL,
+ &cred_iter_finished,
+ NULL);
}
@@ -856,20 +855,20 @@ main (int argc, char *const argv[])
gettext_noop ("List attributes for EGO"),
&list),
GNUNET_GETOPT_option_flag ('A',
- "attestations",
- gettext_noop ("List attestations for EGO"),
- &list_attestations),
+ "credentials",
+ gettext_noop ("List credentials for EGO"),
+ &list_credentials),
GNUNET_GETOPT_option_string ('I',
- "Attestation ID",
- "ATTESTATION_ID",
+ "Credential ID",
+ "CREDENTIAL_ID",
gettext_noop (
- "Attestation to use for attribute"),
- &attestation_id),
+ "Credential to use for attribute"),
+ &credential_id),
GNUNET_GETOPT_option_string ('N',
- "attestation-name",
+ "credential-name",
"NAME",
- gettext_noop ("Attestation name"),
- &attestation_name),
+ gettext_noop ("Credential name"),
+ &credential_name),
GNUNET_GETOPT_option_string ('i',
"issue",
"A1,A2,...",
@@ -891,6 +890,11 @@ main (int argc, char *const argv[])
"TYPE",
gettext_noop ("Type of attribute"),
&type_str),
+ GNUNET_GETOPT_option_string ('u',
+ "credential-type",
+ "TYPE",
+ gettext_noop ("Type of credential"),
+ &credential_type),
GNUNET_GETOPT_option_flag ('T',
"tickets",
gettext_noop ("List tickets of ego"),
diff --git a/src/reclaim/gnunet-service-reclaim.c b/src/reclaim/gnunet-service-reclaim.c
index 84afd482e..30a84b3e8 100644
--- a/src/reclaim/gnunet-service-reclaim.c
+++ b/src/reclaim/gnunet-service-reclaim.c
@@ -170,17 +170,17 @@ struct IdpClient
/**
* Head of the DLL of
- * Attribute iteration operations in
+ * Credential iteration operations in
* progress initiated by this client
*/
- struct Iterator *attest_iter_head;
+ struct Iterator *cred_iter_head;
/**
* Tail of the DLL of
- * Attribute iteration operations
+ * Credential iteration operations
* in progress initiated by this client
*/
- struct Iterator *attest_iter_tail;
+ struct Iterator *cred_iter_tail;
/**
* Head of DLL of ticket iteration ops
@@ -285,9 +285,9 @@ struct AttributeDeleteHandle
struct GNUNET_RECLAIM_Attribute *claim;
/**
- * The attestation to delete
+ * The credential to delete
*/
- struct GNUNET_RECLAIM_Attestation *attest;
+ struct GNUNET_RECLAIM_Credential *credential;
/**
* Tickets to update
@@ -352,9 +352,9 @@ struct AttributeStoreHandle
struct GNUNET_RECLAIM_Attribute *claim;
/**
- * The attestation to store
+ * The credential to store
*/
- struct GNUNET_RECLAIM_Attestation *attest;
+ struct GNUNET_RECLAIM_Credential *credential;
/**
* The attribute expiration interval
@@ -488,8 +488,8 @@ cleanup_adh (struct AttributeDeleteHandle *adh)
GNUNET_free (adh->label);
if (NULL != adh->claim)
GNUNET_free (adh->claim);
- if (NULL != adh->attest)
- GNUNET_free (adh->attest);
+ if (NULL != adh->credential)
+ GNUNET_free (adh->credential);
while (NULL != (le = adh->tickets_to_update_head))
{
GNUNET_CONTAINER_DLL_remove (adh->tickets_to_update_head,
@@ -517,8 +517,8 @@ cleanup_as_handle (struct AttributeStoreHandle *ash)
GNUNET_NAMESTORE_cancel (ash->ns_qe);
if (NULL != ash->claim)
GNUNET_free (ash->claim);
- if (NULL != ash->attest)
- GNUNET_free (ash->attest);
+ if (NULL != ash->credential)
+ GNUNET_free (ash->credential);
GNUNET_free (ash);
}
@@ -569,9 +569,9 @@ cleanup_client (struct IdpClient *idp)
GNUNET_CONTAINER_DLL_remove (idp->attr_iter_head, idp->attr_iter_tail, ai);
GNUNET_free (ai);
}
- while (NULL != (ai = idp->attest_iter_head))
+ while (NULL != (ai = idp->cred_iter_head))
{
- GNUNET_CONTAINER_DLL_remove (idp->attest_iter_head, idp->attest_iter_tail,
+ GNUNET_CONTAINER_DLL_remove (idp->cred_iter_head, idp->cred_iter_tail,
ai);
GNUNET_free (ai);
}
@@ -847,7 +847,7 @@ static void
consume_result_cb (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_AttributeList *attrs,
- const struct GNUNET_RECLAIM_AttestationList *attests,
+ const struct GNUNET_RECLAIM_PresentationList *presentations,
int32_t success,
const char *emsg)
{
@@ -856,28 +856,28 @@ consume_result_cb (void *cls,
struct GNUNET_MQ_Envelope *env;
char *data_tmp;
size_t attrs_len = 0;
- size_t attests_len = 0;
+ size_t pres_len = 0;
if (GNUNET_OK != success)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error consuming ticket: %s\n", emsg);
}
attrs_len = GNUNET_RECLAIM_attribute_list_serialize_get_size (attrs);
- attests_len = GNUNET_RECLAIM_attestation_list_serialize_get_size (attests);
+ pres_len = GNUNET_RECLAIM_presentation_list_serialize_get_size (presentations);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Sending CONSUME_TICKET_RESULT message\n");
env = GNUNET_MQ_msg_extra (crm,
- attrs_len + attests_len,
+ attrs_len + pres_len,
GNUNET_MESSAGE_TYPE_RECLAIM_CONSUME_TICKET_RESULT);
crm->id = htonl (cop->r_id);
crm->attrs_len = htons (attrs_len);
- crm->attestations_len = htons (attests_len);
+ crm->pres_len = htons (pres_len);
crm->identity = *identity;
crm->result = htonl (success);
data_tmp = (char *) &crm[1];
GNUNET_RECLAIM_attribute_list_serialize (attrs, data_tmp);
data_tmp += attrs_len;
- GNUNET_RECLAIM_attestation_list_serialize (attests, data_tmp);
+ GNUNET_RECLAIM_presentation_list_serialize (presentations, data_tmp);
GNUNET_MQ_send (cop->client->mq, env);
GNUNET_CONTAINER_DLL_remove (cop->client->consume_op_head,
cop->client->consume_op_tail,
@@ -1075,14 +1075,14 @@ handle_attribute_store_message (void *cls,
/**
- * Attestation store result handler
+ * Credential store result handler
*
* @param cls our attribute store handle
* @param success GNUNET_OK if successful
* @param emsg error message (NULL if success=GNUNET_OK)
*/
static void
-attest_store_cont (void *cls, int32_t success, const char *emsg)
+cred_store_cont (void *cls, int32_t success, const char *emsg)
{
struct AttributeStoreHandle *ash = cls;
struct GNUNET_MQ_Envelope *env;
@@ -1096,7 +1096,7 @@ attest_store_cont (void *cls, int32_t success, const char *emsg)
if (GNUNET_SYSERR == success)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed to store attestation %s\n",
+ "Failed to store credential: %s\n",
emsg);
cleanup_as_handle (ash);
GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
@@ -1113,16 +1113,16 @@ attest_store_cont (void *cls, int32_t success, const char *emsg)
/**
- * Error looking up potential attestation. Abort.
+ * Error looking up potential credential. Abort.
*
* @param cls our attribute store handle
*/
static void
-attest_error (void *cls)
+cred_error (void *cls)
{
struct AttributeStoreHandle *ash = cls;
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Failed to check for existing Attestation\n");
+ "Failed to check for existing credential.\n");
cleanup_as_handle (ash);
GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
return;
@@ -1130,7 +1130,7 @@ attest_error (void *cls)
/**
-* Check for existing record before storing attestation
+* Check for existing record before storing credential
*
* @param cls our attribute store handle
* @param zone zone we are iterating
@@ -1139,33 +1139,34 @@ attest_error (void *cls)
* @param rd records
*/
static void
-attest_add_cb (void *cls,
- const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
- const char *label,
- unsigned int rd_count,
- const struct GNUNET_GNSRECORD_Data *rd)
+cred_add_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
+ const char *label,
+ unsigned int rd_count,
+ const struct GNUNET_GNSRECORD_Data *rd)
{
struct AttributeStoreHandle *ash = cls;
+ struct GNUNET_GNSRECORD_Data rd_new[1];
char *buf;
size_t buf_size;
- buf_size = GNUNET_RECLAIM_attestation_serialize_get_size (ash->attest);
+
+ buf_size = GNUNET_RECLAIM_credential_serialize_get_size (ash->credential);
buf = GNUNET_malloc (buf_size);
- GNUNET_RECLAIM_attestation_serialize (ash->attest, buf);
+ GNUNET_RECLAIM_presentation_serialize (ash->credential, buf);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Storing new Attestation\n");
- struct GNUNET_GNSRECORD_Data rd_new[1];
+ "Storing new credential under `%s'.\n",
+ label);
rd_new[0].data_size = buf_size;
rd_new[0].data = buf;
- rd_new[0].record_type = GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION;
+ rd_new[0].record_type = GNUNET_GNSRECORD_TYPE_RECLAIM_CREDENTIAL;
rd_new[0].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
rd_new[0].expiration_time = ash->exp.rel_value_us;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Encrypting with label %s\n", label);
ash->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
&ash->identity,
label,
1,
rd_new,
- &attest_store_cont,
+ &cred_store_cont,
ash);
GNUNET_free (buf);
return;
@@ -1173,44 +1174,43 @@ attest_add_cb (void *cls,
/**
- * Add a new attestation
+ * Add a new credential
*
* @param cls the AttributeStoreHandle
*/
static void
-attest_store_task (void *cls)
+cred_store_task (void *cls)
{
struct AttributeStoreHandle *ash = cls;
char *label;
// Give the ash a new id if unset
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->attest->id))
- GNUNET_RECLAIM_id_generate (&ash->attest->id);
- label = GNUNET_STRINGS_data_to_string_alloc (&ash->attest->id,
- sizeof (ash->attest->id));
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&ash->credential->id))
+ GNUNET_RECLAIM_id_generate (&ash->credential->id);
+ label = GNUNET_STRINGS_data_to_string_alloc (&ash->credential->id,
+ sizeof (ash->credential->id));
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Looking up existing data under label %s\n", label);
-// Test for the content of the existing ID
+ "Looking up existing data under label `%s'\n", label);
ash->ns_qe = GNUNET_NAMESTORE_records_lookup (nsh,
&ash->identity,
label,
- &attest_error,
+ &cred_error,
ash,
- &attest_add_cb,
+ &cred_add_cb,
ash);
GNUNET_free (label);
}
/**
- * Check an attestation store message
+ * Check an credential store message
*
* @param cls unused
* @param sam the message to check
*/
static int
-check_attestation_store_message (void *cls,
- const struct AttributeStoreMessage *sam)
+check_credential_store_message (void *cls,
+ const struct AttributeStoreMessage *sam)
{
uint16_t size;
@@ -1225,26 +1225,26 @@ check_attestation_store_message (void *cls,
/**
-* Handle an attestation store message
+* Handle a credential store message
*
* @param cls our client
* @param sam the message to handle
*/
static void
-handle_attestation_store_message (void *cls,
+handle_credential_store_message (void *cls,
const struct AttributeStoreMessage *sam)
{
struct AttributeStoreHandle *ash;
struct IdpClient *idp = cls;
size_t data_len;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received ATTESTATION_STORE message\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received CREDENTIAL_STORE message\n");
data_len = ntohs (sam->attr_len);
ash = GNUNET_new (struct AttributeStoreHandle);
- ash->attest = GNUNET_RECLAIM_attestation_deserialize ((char *) &sam[1],
- data_len);
+ ash->credential = GNUNET_RECLAIM_credential_deserialize ((char *) &sam[1],
+ data_len);
ash->r_id = ntohl (sam->id);
ash->identity = sam->identity;
@@ -1254,7 +1254,7 @@ handle_attestation_store_message (void *cls,
GNUNET_SERVICE_client_continue (idp->client);
ash->client = idp;
GNUNET_CONTAINER_DLL_insert (idp->store_op_head, idp->store_op_tail, ash);
- GNUNET_SCHEDULER_add_now (&attest_store_task, ash);
+ GNUNET_SCHEDULER_add_now (&cred_store_task, ash);
}
@@ -1310,12 +1310,12 @@ ticket_iter (void *cls,
if (GNUNET_YES != GNUNET_RECLAIM_id_is_equal (rd[i].data,
&adh->claim->id))
continue;
- if (adh->attest != NULL)
+ if (adh->credential != NULL)
if (GNUNET_YES != GNUNET_RECLAIM_id_is_equal (rd[i].data,
- &adh->attest->id))
+ &adh->credential->id))
continue;
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Attribute or Attestation to delete found (%s)\n",
+ "Attribute to delete found (%s)\n",
adh->label);
has_changed = GNUNET_YES;
break;
@@ -1410,10 +1410,10 @@ update_tickets (void *cls)
&& (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
&adh->claim->id)))
continue;
- if (adh->attest != NULL)
+ if (adh->credential != NULL)
if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF == rd[i].record_type)
&& (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
- &adh->attest->id)))
+ &adh->credential->id)))
continue;
rd_new[j] = rd[i];
j++;
@@ -1557,7 +1557,7 @@ handle_attribute_delete_message (void *cls,
GNUNET_RECLAIM_attribute_deserialize ((char *) &dam[1],
data_len,
&adh->claim);
- adh->attest = NULL;
+ adh->credential = NULL;
adh->r_id = ntohl (dam->id);
adh->identity = dam->identity;
@@ -1578,14 +1578,14 @@ handle_attribute_delete_message (void *cls,
/**
- * Attestation deleted callback
+ * Credential deleted callback
*
* @param cls our handle
* @param success success status
* @param emsg error message (NULL if success=GNUNET_OK)
*/
static void
-attest_delete_cont (void *cls, int32_t success, const char *emsg)
+cred_delete_cont (void *cls, int32_t success, const char *emsg)
{
struct AttributeDeleteHandle *adh = cls;
@@ -1593,7 +1593,7 @@ attest_delete_cont (void *cls, int32_t success, const char *emsg)
if (GNUNET_SYSERR == success)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Error deleting attestation %s\n",
+ "Error deleting credential `%s'\n",
adh->label);
send_delete_response (adh, GNUNET_SYSERR);
cleanup_adh (adh);
@@ -1605,13 +1605,13 @@ attest_delete_cont (void *cls, int32_t success, const char *emsg)
/**
- * Check attestation delete message format
+ * Check credential delete message format
*
* @cls unused
* @dam message to check
*/
static int
-check_attestation_delete_message (void *cls,
+check_cred_delete_message (void *cls,
const struct AttributeDeleteMessage *dam)
{
uint16_t size;
@@ -1627,33 +1627,33 @@ check_attestation_delete_message (void *cls,
/**
- * Handle attestation deletion
+ * Handle credential deletion
*
* @param cls our client
* @param dam deletion message
*/
static void
-handle_attestation_delete_message (void *cls,
+handle_credential_delete_message (void *cls,
const struct AttributeDeleteMessage *dam)
{
struct AttributeDeleteHandle *adh;
struct IdpClient *idp = cls;
size_t data_len;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received ATTESTATION_DELETE message\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received CREDENTIAL_DELETE message\n");
data_len = ntohs (dam->attr_len);
adh = GNUNET_new (struct AttributeDeleteHandle);
- adh->attest = GNUNET_RECLAIM_attestation_deserialize ((char *) &dam[1],
- data_len);
+ adh->credential = GNUNET_RECLAIM_credential_deserialize ((char *) &dam[1],
+ data_len);
adh->claim = NULL;
adh->r_id = ntohl (dam->id);
adh->identity = dam->identity;
adh->label
- = GNUNET_STRINGS_data_to_string_alloc (&adh->attest->id,
- sizeof(adh->attest->id));
+ = GNUNET_STRINGS_data_to_string_alloc (&adh->credential->id,
+ sizeof(adh->credential->id));
GNUNET_SERVICE_client_continue (idp->client);
adh->client = idp;
GNUNET_CONTAINER_DLL_insert (idp->delete_op_head, idp->delete_op_tail, adh);
@@ -1662,7 +1662,7 @@ handle_attestation_delete_message (void *cls,
adh->label,
0,
NULL,
- &attest_delete_cont,
+ &cred_delete_cont,
adh);
}
@@ -1712,7 +1712,7 @@ attr_iter_error (void *cls)
/**
- * Got record. Return if it is an attribute or attestation.
+ * Got record. Return if it is an attribute.
*
* @param cls our attribute iterator
* @param zone zone we are iterating
@@ -1852,51 +1852,51 @@ handle_iteration_next (void *cls,
/*************************************************
-* Attestation iteration
+* Credential iteration
*************************************************/
/**
- * Done iterating over attestations
+ * Done iterating over credentials
*
* @param cls our iterator handle
*/
static void
-attest_iter_finished (void *cls)
+cred_iter_finished (void *cls)
{
struct Iterator *ai = cls;
struct GNUNET_MQ_Envelope *env;
- struct AttestationResultMessage *arm;
+ struct CredentialResultMessage *arm;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending ATTESTATION_RESULT message\n");
- env = GNUNET_MQ_msg (arm, GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_RESULT);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending CREDENTIAL_RESULT message\n");
+ env = GNUNET_MQ_msg (arm, GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_RESULT);
arm->id = htonl (ai->request_id);
- arm->attestation_len = htons (0);
+ arm->credential_len = htons (0);
GNUNET_MQ_send (ai->client->mq, env);
- GNUNET_CONTAINER_DLL_remove (ai->client->attest_iter_head,
- ai->client->attest_iter_tail,
+ GNUNET_CONTAINER_DLL_remove (ai->client->cred_iter_head,
+ ai->client->cred_iter_tail,
ai);
GNUNET_free (ai);
}
/**
- * Error iterating over attestations. Abort.
+ * Error iterating over credentials. Abort.
*
* @param cls our attribute iteration handle
*/
static void
-attest_iter_error (void *cls)
+cred_iter_error (void *cls)
{
struct Iterator *ai = cls;
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to iterate over attestations\n");
- attest_iter_finished (ai);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to iterate over credentials\n");
+ cred_iter_finished (ai);
}
/**
- * Got record. Return attestation.
+ * Got record. Return credential.
*
* @param cls our attribute iterator
* @param zone zone we are iterating
@@ -1905,32 +1905,32 @@ attest_iter_error (void *cls)
* @param rd records
*/
static void
-attest_iter_cb (void *cls,
- const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
- const char *label,
- unsigned int rd_count,
- const struct GNUNET_GNSRECORD_Data *rd)
+cred_iter_cb (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
+ const char *label,
+ unsigned int rd_count,
+ const struct GNUNET_GNSRECORD_Data *rd)
{
struct Iterator *ai = cls;
struct GNUNET_MQ_Envelope *env;
- struct AttestationResultMessage *arm;
+ struct CredentialResultMessage *arm;
char *data_tmp;
if ((rd_count != 1) ||
- (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION != rd->record_type))
+ (GNUNET_GNSRECORD_TYPE_RECLAIM_CREDENTIAL != rd->record_type))
{
GNUNET_NAMESTORE_zone_iterator_next (ai->ns_it, 1);
return;
}
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found attestation under: %s\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Found credential under: %s\n",
label);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Sending ATTESTATION_RESULT message\n");
+ "Sending CREDENTIAL_RESULT message\n");
env = GNUNET_MQ_msg_extra (arm,
rd->data_size,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_RESULT);
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_RESULT);
arm->id = htonl (ai->request_id);
- arm->attestation_len = htons (rd->data_size);
+ arm->credential_len = htons (rd->data_size);
GNUNET_CRYPTO_ecdsa_key_get_public (zone, &arm->identity);
data_tmp = (char *) &arm[1];
GNUNET_memcpy (data_tmp, rd->data, rd->data_size);
@@ -1946,29 +1946,29 @@ attest_iter_cb (void *cls,
* @param ais_msg the iteration message to start
*/
static void
-handle_attestation_iteration_start (void *cls,
- const struct
- AttestationIterationStartMessage *ais_msg)
+handle_credential_iteration_start (void *cls,
+ const struct
+ CredentialIterationStartMessage *ais_msg)
{
struct IdpClient *idp = cls;
struct Iterator *ai;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Received ATTESTATION_ITERATION_START message\n");
+ "Received CREDENTIAL_ITERATION_START message\n");
ai = GNUNET_new (struct Iterator);
ai->request_id = ntohl (ais_msg->id);
ai->client = idp;
ai->identity = ais_msg->identity;
- GNUNET_CONTAINER_DLL_insert (idp->attest_iter_head, idp->attest_iter_tail,
+ GNUNET_CONTAINER_DLL_insert (idp->cred_iter_head, idp->cred_iter_tail,
ai);
ai->ns_it = GNUNET_NAMESTORE_zone_iteration_start (nsh,
&ai->identity,
- &attest_iter_error,
+ &cred_iter_error,
ai,
- &attest_iter_cb,
+ &cred_iter_cb,
ai,
- &attest_iter_finished,
+ &cred_iter_finished,
ai);
GNUNET_SERVICE_client_continue (idp->client);
}
@@ -1981,9 +1981,9 @@ handle_attestation_iteration_start (void *cls,
* @param ais_msg the stop message
*/
static void
-handle_attestation_iteration_stop (void *cls,
- const struct
- AttestationIterationStopMessage *ais_msg)
+handle_credential_iteration_stop (void *cls,
+ const struct
+ CredentialIterationStopMessage *ais_msg)
{
struct IdpClient *idp = cls;
struct Iterator *ai;
@@ -1991,9 +1991,9 @@ handle_attestation_iteration_stop (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Received `%s' message\n",
- "ATTESTATION_ITERATION_STOP");
+ "CREDENTIAL_ITERATION_STOP");
rid = ntohl (ais_msg->id);
- for (ai = idp->attest_iter_head; NULL != ai; ai = ai->next)
+ for (ai = idp->cred_iter_head; NULL != ai; ai = ai->next)
if (ai->request_id == rid)
break;
if (NULL == ai)
@@ -2002,7 +2002,7 @@ handle_attestation_iteration_stop (void *cls,
GNUNET_SERVICE_client_drop (idp->client);
return;
}
- GNUNET_CONTAINER_DLL_remove (idp->attest_iter_head, idp->attest_iter_tail,
+ GNUNET_CONTAINER_DLL_remove (idp->cred_iter_head, idp->cred_iter_tail,
ai);
GNUNET_free (ai);
GNUNET_SERVICE_client_continue (idp->client);
@@ -2010,24 +2010,24 @@ handle_attestation_iteration_stop (void *cls,
/**
- * Client requests next attestation from iterator
+ * Client requests next credential from iterator
*
* @param cls the client
* @param ais_msg the message
*/
static void
-handle_attestation_iteration_next (void *cls,
- const struct
- AttestationIterationNextMessage *ais_msg)
+handle_credential_iteration_next (void *cls,
+ const struct
+ CredentialIterationNextMessage *ais_msg)
{
struct IdpClient *idp = cls;
struct Iterator *ai;
uint32_t rid;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Received ATTESTATION_ITERATION_NEXT message\n");
+ "Received CREDENTIAL_ITERATION_NEXT message\n");
rid = ntohl (ais_msg->id);
- for (ai = idp->attest_iter_head; NULL != ai; ai = ai->next)
+ for (ai = idp->cred_iter_head; NULL != ai; ai = ai->next)
if (ai->request_id == rid)
break;
if (NULL == ai)
@@ -2269,16 +2269,16 @@ GNUNET_SERVICE_MAIN (
GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_STORE,
struct AttributeStoreMessage,
NULL),
- GNUNET_MQ_hd_var_size (attestation_store_message,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_STORE,
+ GNUNET_MQ_hd_var_size (credential_store_message,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_STORE,
struct AttributeStoreMessage,
NULL),
GNUNET_MQ_hd_var_size (attribute_delete_message,
GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_DELETE,
struct AttributeDeleteMessage,
NULL),
- GNUNET_MQ_hd_var_size (attestation_delete_message,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_DELETE,
+ GNUNET_MQ_hd_var_size (credential_delete_message,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_DELETE,
struct AttributeDeleteMessage,
NULL),
GNUNET_MQ_hd_fixed_size (iteration_start,
@@ -2293,17 +2293,17 @@ GNUNET_SERVICE_MAIN (
GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_ITERATION_STOP,
struct AttributeIterationStopMessage,
NULL),
- GNUNET_MQ_hd_fixed_size (attestation_iteration_start,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_START,
- struct AttestationIterationStartMessage,
+ GNUNET_MQ_hd_fixed_size (credential_iteration_start,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_START,
+ struct CredentialIterationStartMessage,
NULL),
- GNUNET_MQ_hd_fixed_size (attestation_iteration_next,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_NEXT,
- struct AttestationIterationNextMessage,
+ GNUNET_MQ_hd_fixed_size (credential_iteration_next,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_NEXT,
+ struct CredentialIterationNextMessage,
NULL),
- GNUNET_MQ_hd_fixed_size (attestation_iteration_stop,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_STOP,
- struct AttestationIterationStopMessage,
+ GNUNET_MQ_hd_fixed_size (credential_iteration_stop,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_STOP,
+ struct CredentialIterationStopMessage,
NULL),
GNUNET_MQ_hd_var_size (issue_ticket_message,
diff --git a/src/reclaim/gnunet-service-reclaim_tickets.c b/src/reclaim/gnunet-service-reclaim_tickets.c
index af01d8ec7..18b173aaa 100644
--- a/src/reclaim/gnunet-service-reclaim_tickets.c
+++ b/src/reclaim/gnunet-service-reclaim_tickets.c
@@ -114,9 +114,9 @@ struct RECLAIM_TICKETS_ConsumeHandle
struct GNUNET_RECLAIM_AttributeList *attrs;
/**
- * Attestations
+ * Credentials
*/
- struct GNUNET_RECLAIM_AttestationList *attests;
+ struct GNUNET_RECLAIM_CredentialList *credentials;
/**
* Lookup time
@@ -715,20 +715,20 @@ rvk_move_attr_cb (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attribute %s\n", new_label);
GNUNET_free (claim);
}
- else if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION == rd[i].record_type)
+ else if (GNUNET_GNSRECORD_TYPE_RECLAIM_CREDENTIAL == rd[i].record_type)
{
- struct GNUNET_RECLAIM_Attestation *attest;
- attest = GNUNET_RECLAIM_attestation_deserialize (rd[i].data,
- rd[i].data_size);
+ struct GNUNET_RECLAIM_Credential *credential;
+ credential = GNUNET_RECLAIM_credential_deserialize (rd[i].data,
+ rd[i].data_size);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Attestation to update: Name=%s\n",
- attest->name);
- attest->id = rvk->move_attr->new_id;
+ "Credential to update: Name=%s\n",
+ credential->name);
+ credential->id = rvk->move_attr->new_id;
new_rd[i].data_size =
- GNUNET_RECLAIM_attestation_serialize_get_size (attest);
+ GNUNET_RECLAIM_credential_serialize_get_size (credential);
attr_data = GNUNET_malloc (rd[i].data_size);
- new_rd[i].data_size = GNUNET_RECLAIM_attestation_serialize (attest,
- attr_data);
+ new_rd[i].data_size = GNUNET_RECLAIM_credential_serialize (credential,
+ attr_data);
new_rd[i].data = attr_data;
new_rd[i].record_type = rd[i].record_type;
new_rd[i].flags = rd[i].flags;
@@ -736,9 +736,9 @@ rvk_move_attr_cb (void *cls,
new_label =
GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id,
sizeof (rvk->move_attr->new_id));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attestation %s\n",
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding credential %s\n",
new_label);
- GNUNET_free (attest);
+ GNUNET_free (credential);
}
}
rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh,
@@ -981,8 +981,8 @@ cleanup_cth (struct RECLAIM_TICKETS_ConsumeHandle *cth)
if (NULL != cth->attrs)
GNUNET_RECLAIM_attribute_list_destroy (cth->attrs);
- if (NULL != cth->attests)
- GNUNET_RECLAIM_attestation_list_destroy (cth->attests);
+ if (NULL != cth->credentials)
+ GNUNET_RECLAIM_credential_list_destroy (cth->credentials);
GNUNET_free (cth);
}
@@ -1027,40 +1027,20 @@ process_parallel_lookup_result (void *cls,
// REMARK: It is possible now to find rd_count > 1
for (int i = 0; i < rd_count; i++)
{
- if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE == rd[i].record_type)
- {
- attr_le = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
- GNUNET_RECLAIM_attribute_deserialize (rd[i].data, rd[i].data_size,
- &attr_le->attribute);
- GNUNET_CONTAINER_DLL_insert (cth->attrs->list_head,
- cth->attrs->list_tail,
- attr_le);
- }
- else if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION == rd[i].record_type)
- {
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
- ale = GNUNET_new (struct GNUNET_RECLAIM_AttestationListEntry);
- ale->attestation =
- GNUNET_RECLAIM_attestation_deserialize (rd[i].data,
- rd[i].data_size);
- GNUNET_CONTAINER_DLL_insert (cth->attests->list_head,
- cth->attests->list_tail,
- ale);
- }
- else
- {
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Parallel Lookup of Reference without Attestation");
+ if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE != rd[i].record_type)
continue;
- }
-
-
+ attr_le = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
+ GNUNET_RECLAIM_attribute_deserialize (rd[i].data, rd[i].data_size,
+ &attr_le->attribute);
+ GNUNET_CONTAINER_DLL_insert (cth->attrs->list_head,
+ cth->attrs->list_tail,
+ attr_le);
}
if (NULL != cth->parallel_lookups_head)
return; // Wait for more
/* Else we are done */
cth->cb (cth->cb_cls, &cth->ticket.identity,
- cth->attrs, cth->attests, GNUNET_OK, NULL);
+ cth->attrs, cth->credentials, GNUNET_OK, NULL);
cleanup_cth (cth);
}
@@ -1126,26 +1106,45 @@ lookup_authz_cb (void *cls,
for (int i = 0; i < rd_count; i++)
{
- if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF != rd[i].record_type) &&
- (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION_REF != rd[i].record_type))
- continue;
- lbl = GNUNET_STRINGS_data_to_string_alloc (rd[i].data, rd[i].data_size);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ticket reference found %s\n", lbl);
- parallel_lookup = GNUNET_new (struct ParallelLookup);
- parallel_lookup->handle = cth;
- parallel_lookup->label = lbl;
- parallel_lookup->lookup_start_time = GNUNET_TIME_absolute_get ();
- parallel_lookup->lookup_request =
- GNUNET_GNS_lookup (gns,
- lbl,
- &cth->ticket.identity,
- GNUNET_GNSRECORD_TYPE_ANY,
- GNUNET_GNS_LO_DEFAULT,
- &process_parallel_lookup_result,
- parallel_lookup);
- GNUNET_CONTAINER_DLL_insert (cth->parallel_lookups_head,
- cth->parallel_lookups_tail,
- parallel_lookup);
+ /**
+ * Check if record is a credential presentation or an attribute
+ * reference.
+ */
+ switch (rd[i].record_type)
+ {
+ case GNUNET_GNSRECORD_TYPE_RECLAIM_PRESENTATION:
+ struct GNUNET_RECLAIM_CredentialListEntry *ale;
+ ale = GNUNET_new (struct GNUNET_RECLAIM_CredentialListEntry);
+ ale->credential =
+ GNUNET_RECLAIM_credential_deserialize (rd[i].data,
+ rd[i].data_size);
+ GNUNET_CONTAINER_DLL_insert (cth->credentials->list_head,
+ cth->credentials->list_tail,
+ ale);
+ break;
+ case GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF:
+ lbl = GNUNET_STRINGS_data_to_string_alloc (rd[i].data, rd[i].data_size);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ticket reference found %s\n", lbl);
+ parallel_lookup = GNUNET_new (struct ParallelLookup);
+ parallel_lookup->handle = cth;
+ parallel_lookup->label = lbl;
+ parallel_lookup->lookup_start_time = GNUNET_TIME_absolute_get ();
+ parallel_lookup->lookup_request =
+ GNUNET_GNS_lookup (gns,
+ lbl,
+ &cth->ticket.identity,
+ GNUNET_GNSRECORD_TYPE_ANY,
+ GNUNET_GNS_LO_DEFAULT,
+ &process_parallel_lookup_result,
+ parallel_lookup);
+ GNUNET_CONTAINER_DLL_insert (cth->parallel_lookups_head,
+ cth->parallel_lookups_tail,
+ parallel_lookup);
+ break;
+ default:
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Ignoring unknown record type %d", rd[i].record_type);
+ }
}
/**
* We started lookups. Add a timeout task.
@@ -1163,7 +1162,7 @@ lookup_authz_cb (void *cls,
* No references found, return empty attribute list
*/
cth->cb (cth->cb_cls, &cth->ticket.identity,
- cth->attrs, cth->attests, GNUNET_OK, NULL);
+ cth->attrs, cth->credentials, GNUNET_OK, NULL);
cleanup_cth (cth);
}
@@ -1193,7 +1192,7 @@ RECLAIM_TICKETS_consume (const struct GNUNET_CRYPTO_EcdsaPrivateKey *id,
cth->identity = *id;
GNUNET_CRYPTO_ecdsa_key_get_public (&cth->identity, &cth->identity_pub);
cth->attrs = GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
- cth->attests = GNUNET_new (struct GNUNET_RECLAIM_AttestationList);
+ cth->credentials = GNUNET_new (struct GNUNET_RECLAIM_CredentialList);
cth->ticket = *ticket;
cth->cb = cb;
cth->cb_cls = cb_cls;
@@ -1293,7 +1292,7 @@ issue_ticket (struct TicketIssueHandle *ih)
for (le = ih->attrs->list_head; NULL != le; le = le->next)
attrs_count++;
- // Worst case we have one attestation per attribute
+ // Worst case we have one credential per attribute
attrs_record =
GNUNET_malloc (2 * attrs_count * sizeof(struct GNUNET_GNSRECORD_Data));
i = 0;
@@ -1308,26 +1307,31 @@ issue_ticket (struct TicketIssueHandle *ih)
attrs_record[i].record_type = GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF;
attrs_record[i].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
i++;
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->attestation))
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->credential))
{
+ struct GNUNET_RECLAIM_Presentation *pres;
int j;
for (j = 0; j < i; j++)
{
if (attrs_record[j].record_type
- != GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION_REF)
+ != GNUNET_GNSRECORD_TYPE_RECLAIM_PRESENTATION)
continue;
- if (0 == memcmp (attrs_record[j].data,
- &le->attribute->attestation,
- sizeof (le->attribute->attestation)))
+ pres = attrs_record[j].data;
+ if (0 == memcmp (pres->credential_id,
+ &le->attribute->credential,
+ sizeof (le->attribute->credential)))
break;
}
if (j < i)
- continue; // Skip as we have already added this attestation.
- attrs_record[i].data = &le->attribute->attestation;
- attrs_record[i].data_size = sizeof(le->attribute->attestation);
+ continue; // Skip as we have already added this credential presentation.
+ /**
+ * FIXME: Create a new presentation from the credential.
+ */
+ attrs_record[i].data = &le->attribute->credential;
+ attrs_record[i].data_size = sizeof(le->attribute->credential);
attrs_record[i].expiration_time = ticket_refresh_interval.rel_value_us;
attrs_record[i].record_type =
- GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION_REF;
+ GNUNET_GNSRECORD_TYPE_RECLAIM_PRESENTATION;
attrs_record[i].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION;
i++;
}
@@ -1401,22 +1405,23 @@ filter_tickets_cb (void *cls,
{
struct TicketIssueHandle *tih = cls;
struct GNUNET_RECLAIM_Ticket *ticket = NULL;
+ struct GNUNET_RECLAIM_Presentation *pres;
// figure out the number of requested attributes
struct GNUNET_RECLAIM_AttributeListEntry *le;
unsigned int attr_cnt = 0;
- unsigned int attest_cnt = 0;
+ unsigned int cred_cnt = 0;
for (le = tih->attrs->list_head; NULL != le; le = le->next)
{
attr_cnt++;
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->attestation))
- attest_cnt++;
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->credential))
+ pres_cnt++;
}
// ticket search
unsigned int found_attrs_cnt = 0;
- unsigned int found_attests_cnt = 0;
+ unsigned int found_pres_cnt = 0;
for (int i = 0; i < rd_count; i++)
{
@@ -1436,20 +1441,25 @@ filter_tickets_cb (void *cls,
}
// cmp requested attributes with ticket attributes
- if ((GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF != rd[i].record_type) &&
- (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTESTATION_REF != rd[i].record_type))
- continue;
- for (le = tih->attrs->list_head; NULL != le; le = le->next)
+ if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTRIBUTE_REF == rd[i].record_type)
{
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
- &le->attribute->id))
- found_attrs_cnt++;
+ for (le = tih->attrs->list_head; NULL != le; le = le->next)
+ {
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
+ &le->attribute->id))
+ found_attrs_cnt++;
+ }
}
- for (le = tih->attrs->list_head; NULL != le; le = le->next)
+ if (GNUNET_GNSRECORD_TYPE_RECLAIM_PRESENTATION == rd[i].record_type)
{
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (rd[i].data,
- &le->attribute->attestation))
- found_attests_cnt++;
+ for (le = tih->attrs->list_head; NULL != le; le = le->next)
+ {
+ pres = rd[i].data;
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_equal (pres->credential_id,
+ &le->attribute->credential))
+ found_pres_cnt++;
+ // FIXME should we store credentials here for later use??
+ }
}
}
@@ -1458,7 +1468,7 @@ filter_tickets_cb (void *cls,
* we are done.
*/
if ((attr_cnt == found_attrs_cnt) &&
- (attest_cnt == found_attests_cnt) &&
+ (pres_cnt == found_pres_cnt) &&
(NULL != ticket))
{
GNUNET_NAMESTORE_zone_iteration_stop (tih->ns_it);
diff --git a/src/reclaim/gnunet-service-reclaim_tickets.h b/src/reclaim/gnunet-service-reclaim_tickets.h
index 1c7214d42..404b9c837 100644
--- a/src/reclaim/gnunet-service-reclaim_tickets.h
+++ b/src/reclaim/gnunet-service-reclaim_tickets.h
@@ -137,7 +137,7 @@ typedef void (*RECLAIM_TICKETS_ConsumeCallback) (
void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_AttributeList *attributes,
- const struct GNUNET_RECLAIM_AttestationList *attestations,
+ const struct GNUNET_RECLAIM_CredentialList *credentials,
int32_t success,
const char *emsg);
diff --git a/src/reclaim/json_reclaim.c b/src/reclaim/json_reclaim.c
index c470ea567..c8b944326 100644
--- a/src/reclaim/json_reclaim.c
+++ b/src/reclaim/json_reclaim.c
@@ -46,7 +46,7 @@ parse_attr (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
const char *val_str = NULL;
const char *type_str = NULL;
const char *id_str = NULL;
- const char *attest_str = NULL;
+ const char *cred_str = NULL;
const char *flag_str = NULL;
char *data;
int unpack_state;
@@ -68,8 +68,8 @@ parse_attr (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
&name_str,
"id",
&id_str,
- "attestation",
- &attest_str,
+ "credential",
+ &cred_str,
"type",
&type_str,
"value",
@@ -95,12 +95,12 @@ parse_attr (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
}
attr = GNUNET_RECLAIM_attribute_new (name_str, NULL,
type, data, data_size);
- if ((NULL != attest_str) && (0 != strlen (attest_str)))
+ if ((NULL != cred_str) && (0 != strlen (cred_str)))
{
- GNUNET_STRINGS_string_to_data (attest_str,
- strlen (attest_str),
- &attr->attestation,
- sizeof(attr->attestation));
+ GNUNET_STRINGS_string_to_data (cred_str,
+ strlen (cred_str),
+ &attr->credential,
+ sizeof(attr->credential));
}
if ((NULL == id_str) || (0 == strlen (id_str)))
memset (&attr->id, 0, sizeof (attr->id));
@@ -142,7 +142,7 @@ clean_attr (void *cls, struct GNUNET_JSON_Specification *spec)
* @return JSON Specification
*/
struct GNUNET_JSON_Specification
-GNUNET_RECLAIM_JSON_spec_claim (struct GNUNET_RECLAIM_Attribute **attr)
+GNUNET_RECLAIM_JSON_spec_attribute (struct GNUNET_RECLAIM_Attribute **attr)
{
struct GNUNET_JSON_Specification ret = { .parser = &parse_attr,
.cleaner = &clean_attr,
@@ -279,7 +279,7 @@ GNUNET_RECLAIM_JSON_spec_ticket (struct GNUNET_RECLAIM_Ticket **ticket)
/**
- * Parse given JSON object to an attestation claim
+ * Parse given JSON object to a credential claim
*
* @param cls closure, NULL
* @param root the json object representing data
@@ -287,9 +287,9 @@ GNUNET_RECLAIM_JSON_spec_ticket (struct GNUNET_RECLAIM_Ticket **ticket)
* @return #GNUNET_OK upon successful parsing; #GNUNET_SYSERR upon error
*/
static int
-parse_attest (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
+parse_credential (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
{
- struct GNUNET_RECLAIM_Attestation *attr;
+ struct GNUNET_RECLAIM_Credential *cred;
const char *name_str = NULL;
const char *val_str = NULL;
const char *type_str = NULL;
@@ -325,17 +325,17 @@ parse_attest (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
"Error json object has a wrong format!\n");
return GNUNET_SYSERR;
}
- type = GNUNET_RECLAIM_attestation_typename_to_number (type_str);
+ type = GNUNET_RECLAIM_credential_typename_to_number (type_str);
if (GNUNET_SYSERR ==
- (GNUNET_RECLAIM_attestation_string_to_value (type,
- val_str,
- (void **) &data,
- &data_size)))
+ (GNUNET_RECLAIM_credential_string_to_value (type,
+ val_str,
+ (void **) &data,
+ &data_size)))
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Attestation value invalid!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Credential value invalid!\n");
return GNUNET_SYSERR;
}
- attr = GNUNET_RECLAIM_attestation_new (name_str, type, data, data_size);
+ attr = GNUNET_RECLAIM_credential_new (name_str, type, data, data_size);
if ((NULL == id_str) || (0 == strlen (id_str)))
memset (&attr->id, 0, sizeof (attr->id));
else
@@ -344,7 +344,7 @@ parse_attest (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
&attr->id,
sizeof(attr->id));
- *(struct GNUNET_RECLAIM_Attestation **) spec->ptr = attr;
+ *(struct GNUNET_RECLAIM_Credential **) spec->ptr = attr;
return GNUNET_OK;
}
@@ -356,11 +356,11 @@ parse_attest (void *cls, json_t *root, struct GNUNET_JSON_Specification *spec)
* @param[out] spec where to free the data
*/
static void
-clean_attest (void *cls, struct GNUNET_JSON_Specification *spec)
+clean_credential (void *cls, struct GNUNET_JSON_Specification *spec)
{
- struct GNUNET_RECLAIM_Attestation **attr;
+ struct GNUNET_RECLAIM_Credential **attr;
- attr = (struct GNUNET_RECLAIM_Attestation **) spec->ptr;
+ attr = (struct GNUNET_RECLAIM_Credential **) spec->ptr;
if (NULL != *attr)
{
GNUNET_free (*attr);
@@ -370,23 +370,23 @@ clean_attest (void *cls, struct GNUNET_JSON_Specification *spec)
/**
- * JSON Specification for Reclaim attestation claims.
+ * JSON Specification for credential claims.
*
- * @param ticket struct of GNUNET_RECLAIM_ATTESTATION_Claim to fill
+ * @param attr struct of GNUNET_RECLAIM_Credential to fill
* @return JSON Specification
*/
struct GNUNET_JSON_Specification
-GNUNET_RECLAIM_JSON_spec_claim_attest (struct
- GNUNET_RECLAIM_Attestation **attr)
+GNUNET_RECLAIM_JSON_spec_credential (struct
+ GNUNET_RECLAIM_Credential **cred)
{
- struct GNUNET_JSON_Specification ret = { .parser = &parse_attest,
- .cleaner = &clean_attest,
+ struct GNUNET_JSON_Specification ret = { .parser = &parse_credential,
+ .cleaner = &clean_credential,
.cls = NULL,
.field = NULL,
.ptr = attr,
.ptr_size = 0,
.size_ptr = NULL };
- *attr = NULL;
+ *cred = NULL;
return ret;
}
diff --git a/src/reclaim/json_reclaim.h b/src/reclaim/json_reclaim.h
index c57971dcb..8911cf92d 100644
--- a/src/reclaim/json_reclaim.h
+++ b/src/reclaim/json_reclaim.h
@@ -32,11 +32,11 @@
/**
* JSON Specification for Reclaim claims.
*
- * @param ticket struct of GNUNET_RECLAIM_ATTRIBUTE_Claim to fill
+ * @param attr struct of GNUNET_RECLAIM_Attribute to fill
* @return JSON Specification
*/
struct GNUNET_JSON_Specification
-GNUNET_RECLAIM_JSON_spec_claim (struct GNUNET_RECLAIM_Attribute **attr);
+GNUNET_RECLAIM_JSON_spec_attribute (struct GNUNET_RECLAIM_Attribute **attr);
/**
* JSON Specification for Reclaim tickets.
@@ -48,11 +48,10 @@ struct GNUNET_JSON_Specification
GNUNET_RECLAIM_JSON_spec_ticket (struct GNUNET_RECLAIM_Ticket **ticket);
/**
- * JSON Specification for Reclaim attestation claims.
+ * JSON Specification for credentials.
*
- * @param ticket struct of GNUNET_RECLAIM_Attestation to fill
+ * @param cred struct of GNUNET_RECLAIM_Credential to fill
* @return JSON Specification
*/
struct GNUNET_JSON_Specification
-GNUNET_RECLAIM_JSON_spec_claim_attest (struct
- GNUNET_RECLAIM_Attestation **attr);
+GNUNET_RECLAIM_JSON_spec_credential (struct GNUNET_RECLAIM_Attestation **cred);
diff --git a/src/reclaim/oidc_helper.c b/src/reclaim/oidc_helper.c
index eab12db33..9c7e79c41 100644
--- a/src/reclaim/oidc_helper.c
+++ b/src/reclaim/oidc_helper.c
@@ -62,9 +62,9 @@ struct OIDC_Parameters
uint32_t attr_list_len GNUNET_PACKED;
/**
- * The length of the attestation list
+ * The length of the presentation list
*/
- uint32_t attest_list_len GNUNET_PACKED;
+ uint32_t pres_list_len GNUNET_PACKED;
};
GNUNET_NETWORK_STRUCT_END
@@ -157,24 +157,24 @@ fix_base64 (char *str)
static json_t*
generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests)
+ struct GNUNET_RECLAIM_PresentationList *presentations)
{
struct GNUNET_RECLAIM_AttributeListEntry *le;
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
+ struct GNUNET_RECLAIM_PresentationListEntry *ple;
char *subject;
char *source_name;
char *attr_val_str;
- char *attest_val_str;
+ char *pres_val_str;
json_t *body;
json_t *aggr_names;
json_t *aggr_sources;
json_t *aggr_sources_jwt;
json_t *addr_claim = NULL;
- int num_attestations = 0;
+ int num_presentations = 0;
for (le = attrs->list_head; NULL != le; le = le->next)
{
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->attestation))
- num_attestations++;
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_zero (&le->attribute->credential))
+ num_presentations++;
}
subject =
@@ -191,23 +191,25 @@ generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
json_object_set_new (body, "iss", json_string (SERVER_ADDRESS));
// sub REQUIRED public key identity, not exceed 255 ASCII length
json_object_set_new (body, "sub", json_string (subject));
- attest_val_str = NULL;
+ pres_val_str = NULL;
source_name = NULL;
int i = 0;
- for (ale = attests->list_head; NULL != ale; ale = ale->next)
+ for (ple = presentations->list_head; NULL != ple; ple = ple->next)
{
- // New Attestation
+ // New presentation
GNUNET_asprintf (&source_name,
"src%d",
i);
aggr_sources_jwt = json_object ();
- attest_val_str =
- GNUNET_RECLAIM_attestation_value_to_string (ale->attestation->type,
- ale->attestation->data,
- ale->attestation->data_size);
- json_object_set_new (aggr_sources_jwt, "JWT",
- json_string (attest_val_str) );
+ pres_val_str =
+ GNUNET_RECLAIM_presentation_value_to_string (ple->presentation->type,
+ ple->presentation->data,
+ ple->presentation->data_size);
+ json_object_set_new (aggr_sources_jwt,
+ GNUNET_RECLAIM_presentation_number_to_typename (ple->presentation->type),
+ json_string (pres_val_str) );
json_object_set_new (aggr_sources, source_name, aggr_sources_jwt);
+ GNUNET_free (pres_val_str);
GNUNET_free (source_name);
source_name = NULL;
i++;
@@ -216,7 +218,7 @@ generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
for (le = attrs->list_head; NULL != le; le = le->next)
{
- if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&le->attribute->attestation))
+ if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&le->attribute->credential))
{
attr_val_str =
@@ -247,18 +249,24 @@ generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
}
else
{
- // Check if attest is there
+ // Check if presentation is there
int j = 0;
- for (ale = attests->list_head; NULL != ale; ale = ale->next)
+ for (ple = presentations->list_head; NULL != ple; ple = ple->next)
{
if (GNUNET_YES ==
- GNUNET_RECLAIM_id_is_equal (&ale->attestation->id,
- &le->attribute->attestation))
+ GNUNET_RECLAIM_id_is_equal (&ple->presentation->credential_id,
+ &le->attribute->credential))
break;
j++;
}
- GNUNET_assert (NULL != ale);
- // Attestation is existing, hence take the respective source str
+ if (NULL == ple)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Presentation for `%s' missing...\n",
+ le->attribute->name);
+ continue;
+ }
+ // Presentation exists, hence take the respective source str
GNUNET_asprintf (&source_name,
"src%d",
j);
@@ -269,9 +277,6 @@ generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
}
if (NULL != addr_claim)
json_object_set_new (body, "address", addr_claim);
-
- if (NULL != attest_val_str)
- GNUNET_free (attest_val_str);
if (0 != i)
{
json_object_set_new (body, "_claim_names", aggr_names);
@@ -286,18 +291,18 @@ generate_userinfo_json(const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
*
* @param sub_key the subject (user)
* @param attrs user attribute list
- * @param attests user attribute attestation list (may be empty)
+ * @param presentations credential presentation list (may be empty)
* @return Userinfo JSON
*/
char *
OIDC_generate_userinfo (const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests)
+ struct GNUNET_RECLAIM_PresentationList *presentations)
{
char *body_str;
json_t* body = generate_userinfo_json (sub_key,
attrs,
- attests);
+ presentations);
body_str = json_dumps (body, JSON_INDENT (0) | JSON_COMPACT);
json_decref (body);
return body_str;
@@ -310,6 +315,7 @@ OIDC_generate_userinfo (const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
* @param aud_key the public of the audience
* @param sub_key the public key of the subject
* @param attrs the attribute list
+ * @param presentations credential presentation list (may be empty)
* @param expiration_time the validity of the token
* @param secret_key the key used to sign the JWT
* @return a new base64-encoded JWT string.
@@ -318,7 +324,7 @@ char *
OIDC_generate_id_token (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests,
+ struct GNUNET_RECLAIM_PresentationList *presentations,
const struct GNUNET_TIME_Relative *expiration_time,
const char *nonce,
const char *secret_key)
@@ -339,7 +345,7 @@ OIDC_generate_id_token (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
body = generate_userinfo_json (sub_key,
attrs,
- attests);
+ presentations);
// iat REQUIRED time now
time_now = GNUNET_TIME_absolute_get ();
// exp REQUIRED time expired from config
@@ -426,6 +432,7 @@ OIDC_generate_id_token (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
* @param issuer the issuer of the ticket, used to sign the ticket and nonce
* @param ticket the ticket to include in the code
* @param attrs list of attributes which are shared
+ * @param presentations credential presentation list (may be empty)
* @param nonce the nonce to include in the code
* @param code_challenge PKCE code challenge
* @return a new authorization code (caller must free)
@@ -434,7 +441,7 @@ char *
OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
const struct GNUNET_RECLAIM_Ticket *ticket,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests,
+ struct GNUNET_RECLAIM_PresentationList *presentations,
const char *nonce_str,
const char *code_challenge)
{
@@ -447,7 +454,7 @@ OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
size_t payload_len;
size_t code_payload_len;
size_t attr_list_len = 0;
- size_t attests_list_len = 0;
+ size_t pres_list_len = 0;
size_t code_challenge_len = 0;
uint32_t nonce_len = 0;
struct GNUNET_CRYPTO_EccSignaturePurpose *purpose;
@@ -481,17 +488,17 @@ OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
// Get serialized attributes
payload_len += attr_list_len;
}
- if (NULL != attests)
+ if (NULL != presentations)
{
// Get length
- attests_list_len =
- GNUNET_RECLAIM_attestation_list_serialize_get_size (attests);
- params.attest_list_len = htonl (attests_list_len);
+ pres_list_len =
+ GNUNET_RECLAIM_presentation_list_serialize_get_size (presentations);
+ params.pres_list_len = htonl (pres_list_len);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Length of serialized attestations: %lu\n",
- attests_list_len);
+ "Length of serialized presentations: %lu\n",
+ pres_list_len);
// Get serialized attributes
- payload_len += attests_list_len;
+ payload_len += pres_list_len;
}
// Get plaintext length
@@ -510,8 +517,8 @@ OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
}
if (0 < attr_list_len)
GNUNET_RECLAIM_attribute_list_serialize (attrs, tmp);
- if (0 < attests_list_len)
- GNUNET_RECLAIM_attestation_list_serialize (attests, tmp);
+ if (0 < pres_list_len)
+ GNUNET_RECLAIM_presentation_list_serialize (presentations, tmp);
/** END **/
@@ -564,7 +571,7 @@ OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
* if used in request.
* @param ticket where to store the ticket
* @param attrs the attributes in the code
- * @param attests the attestations in the code (if any)
+ * @param presentations credential presentation list
* @param nonce_str where to store the nonce (if contained)
* @return GNUNET_OK if successful, else GNUNET_SYSERR
*/
@@ -574,14 +581,14 @@ OIDC_parse_authz_code (const struct GNUNET_CRYPTO_EcdsaPublicKey *audience,
const char *code_verifier,
struct GNUNET_RECLAIM_Ticket *ticket,
struct GNUNET_RECLAIM_AttributeList **attrs,
- struct GNUNET_RECLAIM_AttestationList **attests,
+ struct GNUNET_RECLAIM_PresentationList **presentations,
char **nonce_str)
{
char *code_payload;
char *ptr;
char *plaintext;
char *attrs_ser;
- char *attests_ser;
+ char *presentations_ser;
char *expected_code_challenge;
char *code_challenge;
char *code_verifier_hash;
@@ -589,7 +596,7 @@ OIDC_parse_authz_code (const struct GNUNET_CRYPTO_EcdsaPublicKey *audience,
struct GNUNET_CRYPTO_EcdsaSignature *signature;
uint32_t code_challenge_len;
uint32_t attrs_ser_len;
- uint32_t attests_ser_len;
+ uint32_t presentations_ser_len;
size_t plaintext_len;
size_t code_payload_len;
uint32_t nonce_len = 0;
@@ -692,10 +699,11 @@ OIDC_parse_authz_code (const struct GNUNET_CRYPTO_EcdsaPublicKey *audience,
attrs_ser = ((char *) &params[1]) + code_challenge_len + nonce_len;
attrs_ser_len = ntohl (params->attr_list_len);
*attrs = GNUNET_RECLAIM_attribute_list_deserialize (attrs_ser, attrs_ser_len);
- attests_ser = ((char*) attrs_ser) + attrs_ser_len;
- attests_ser_len = ntohl (params->attest_list_len);
- *attests = GNUNET_RECLAIM_attestation_list_deserialize (attests_ser,
- attests_ser_len);
+ presentations_ser = ((char*) attrs_ser) + attrs_ser_len;
+ pres_ser_len = ntohl (params->pres_list_len);
+ *presentations =
+ GNUNET_RECLAIM_presentations_list_deserialize (presentations_ser,
+ pres_ser_len);
GNUNET_free (code_payload);
return GNUNET_OK;
diff --git a/src/reclaim/oidc_helper.h b/src/reclaim/oidc_helper.h
index e713dab62..789a2acc7 100644
--- a/src/reclaim/oidc_helper.h
+++ b/src/reclaim/oidc_helper.h
@@ -44,6 +44,7 @@
* @param aud_key the public of the audience
* @param sub_key the public key of the subject
* @param attrs the attribute list
+ * @param presentations credential presentation list (may be empty)
* @param expiration_time the validity of the token
* @param secret_key the key used to sign the JWT
* @return a new base64-encoded JWT string.
@@ -52,7 +53,7 @@ char*
OIDC_generate_id_token (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests,
+ struct GNUNET_RECLAIM_PresentationList *presentations,
const struct GNUNET_TIME_Relative *expiration_time,
const char *nonce,
const char *secret_key);
@@ -64,6 +65,7 @@ OIDC_generate_id_token (const struct GNUNET_CRYPTO_EcdsaPublicKey *aud_key,
* @param issuer the issuer of the ticket, used to sign the ticket and nonce
* @param ticket the ticket to include in the code
* @param attrs list of attributes to share
+ * @param presentations credential presentation list
* @param nonce the nonce to include in the code
* @param code_challenge PKCE code challenge
* @return a new authorization code (caller must free)
@@ -72,7 +74,7 @@ char*
OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
const struct GNUNET_RECLAIM_Ticket *ticket,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests,
+ struct GNUNET_RECLAIM_PresentationList *presentations,
const char *nonce,
const char *code_challenge);
@@ -86,6 +88,7 @@ OIDC_build_authz_code (const struct GNUNET_CRYPTO_EcdsaPrivateKey *issuer,
* @param code_verfier PKCE code verifier
* @param ticket where to store the ticket
* @param attrs the attributes found in the code
+ * @param presentations credential presentation list
* @param nonce where to store the nonce
* @return GNUNET_OK if successful, else GNUNET_SYSERR
*/
@@ -95,7 +98,7 @@ OIDC_parse_authz_code (const struct GNUNET_CRYPTO_EcdsaPublicKey *ecdsa_pub,
const char *code_verifier,
struct GNUNET_RECLAIM_Ticket *ticket,
struct GNUNET_RECLAIM_AttributeList **attrs,
- struct GNUNET_RECLAIM_AttestationList **attests,
+ struct GNUNET_RECLAIM_PresentationList **presentations,
char **nonce);
/**
@@ -145,12 +148,12 @@ OIDC_check_scopes_for_claim_request (const char*scopes,
*
* @param sub_key the subject (user)
* @param attrs user attribute list
- * @param attests user attribute attestation list (may be empty)
+ * @param presentations credential presentation list
* @return Userinfo JSON
*/
char *
OIDC_generate_userinfo (const struct GNUNET_CRYPTO_EcdsaPublicKey *sub_key,
struct GNUNET_RECLAIM_AttributeList *attrs,
- struct GNUNET_RECLAIM_AttestationList *attests);
+ struct GNUNET_RECLAIM_PresentationList *presentations);
#endif
diff --git a/src/reclaim/plugin_reclaim_attestation_jwt.c b/src/reclaim/plugin_reclaim_credential_jwt.c
index c87d3e61a..38effcf78 100644
--- a/src/reclaim/plugin_reclaim_attestation_jwt.c
+++ b/src/reclaim/plugin_reclaim_credential_jwt.c
@@ -19,10 +19,9 @@
*/
/**
- * @file reclaim-attribute/plugin_reclaim_attestation_gnuid.c
- * @brief reclaim-attribute-plugin-gnuid attribute plugin to provide the API for
- * fundamental
- * attribute types.
+ * @file reclaim/plugin_reclaim_credential_jwt.c
+ * @brief reclaim-credential-plugin-jwt attribute plugin to provide the API for
+ * JWT credentials.
*
* @author Martin Schanzenbach
*/
@@ -33,10 +32,10 @@
#include <jansson.h>
/**
- * Convert the 'value' of an attestation to a string.
+ * Convert the 'value' of an credential to a string.
*
* @param cls closure, unused
- * @param type type of the attestation
+ * @param type type of the credential
* @param data value in binary encoding
* @param data_size number of bytes in @a data
* @return NULL on error, otherwise human-readable representation of the value
@@ -49,7 +48,7 @@ jwt_value_to_string (void *cls,
{
switch (type)
{
- case GNUNET_RECLAIM_ATTESTATION_TYPE_JWT:
+ case GNUNET_RECLAIM_credential_TYPE_JWT:
return GNUNET_strndup (data, data_size);
default:
@@ -59,11 +58,11 @@ jwt_value_to_string (void *cls,
/**
- * Convert human-readable version of a 'value' of an attestation to the binary
+ * Convert human-readable version of a 'value' of an credential to the binary
* representation.
*
* @param cls closure, unused
- * @param type type of the attestation
+ * @param type type of the credential
* @param s human-readable string
* @param data set to value in binary encoding (will be allocated)
* @param data_size set to number of bytes in @a data
@@ -80,7 +79,7 @@ jwt_string_to_value (void *cls,
return GNUNET_SYSERR;
switch (type)
{
- case GNUNET_RECLAIM_ATTESTATION_TYPE_JWT:
+ case GNUNET_RECLAIM_credential_TYPE_JWT:
*data = GNUNET_strdup (s);
*data_size = strlen (s);
return GNUNET_OK;
@@ -92,14 +91,14 @@ jwt_string_to_value (void *cls,
/**
- * Mapping of attestation type numbers to human-readable
- * attestation type names.
+ * Mapping of credential type numbers to human-readable
+ * credential type names.
*/
static struct
{
const char *name;
uint32_t number;
-} jwt_attest_name_map[] = { { "JWT", GNUNET_RECLAIM_ATTESTATION_TYPE_JWT },
+} jwt_cred_name_map[] = { { "JWT", GNUNET_RECLAIM_credential_TYPE_JWT },
{ NULL, UINT32_MAX } };
/**
@@ -115,10 +114,10 @@ jwt_typename_to_number (void *cls, const char *jwt_typename)
unsigned int i;
i = 0;
- while ((NULL != jwt_attest_name_map[i].name) &&
- (0 != strcasecmp (jwt_typename, jwt_attest_name_map[i].name)))
+ while ((NULL != jwt_cred_name_map[i].name) &&
+ (0 != strcasecmp (jwt_typename, jwt_cred_name_map[i].name)))
i++;
- return jwt_attest_name_map[i].number;
+ return jwt_cred_name_map[i].number;
}
@@ -135,11 +134,11 @@ jwt_number_to_typename (void *cls, uint32_t type)
unsigned int i;
i = 0;
- while ((NULL != jwt_attest_name_map[i].name) && (type !=
- jwt_attest_name_map[i].
+ while ((NULL != jwt_cred_name_map[i].name) && (type !=
+ jwt_cred_name_map[i].
number))
i++;
- return jwt_attest_name_map[i].name;
+ return jwt_cred_name_map[i].name;
}
@@ -147,12 +146,12 @@ jwt_number_to_typename (void *cls, uint32_t type)
* Parse a JWT and return the respective claim value as Attribute
*
* @param cls the plugin
- * @param attest the jwt attestation
+ * @param cred the jwt credential
* @return a GNUNET_RECLAIM_Attribute, containing the new value
*/
struct GNUNET_RECLAIM_AttributeList *
jwt_parse_attributes (void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Credential *cred)
{
char *jwt_string;
struct GNUNET_RECLAIM_AttributeList *attrs;
@@ -163,12 +162,12 @@ jwt_parse_attributes (void *cls,
json_t *json_val;
json_error_t *json_err = NULL;
- /* GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%s\n", attest->data); (not OK: 'data' is not defined as 0-terminated text, but binary) */
- if (GNUNET_RECLAIM_ATTESTATION_TYPE_JWT != attest->type)
+ /* GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "%s\n", cred->data); (not OK: 'data' is not defined as 0-terminated text, but binary) */
+ if (GNUNET_RECLAIM_credential_TYPE_JWT != cred->type)
return NULL;
attrs = GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
- jwt_string = GNUNET_strdup (attest->data);
+ jwt_string = GNUNET_strdup (cred->data);
const char *jwt_body = strtok (jwt_string, delim);
jwt_body = strtok (NULL, delim);
GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
@@ -207,12 +206,12 @@ jwt_parse_attributes (void *cls,
* Parse a JWT and return the issuer
*
* @param cls the plugin
- * @param attest the jwt attestation
+ * @param cred the jwt credential
* @return a string, containing the isser
*/
char *
jwt_get_issuer (void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Credential *cred)
{
const char *jwt_body;
char *jwt_string;
@@ -224,9 +223,9 @@ jwt_get_issuer (void *cls,
json_t *json_val;
json_error_t *json_err = NULL;
- if (GNUNET_RECLAIM_ATTESTATION_TYPE_JWT != attest->type)
+ if (GNUNET_RECLAIM_credential_TYPE_JWT != cred->type)
return NULL;
- jwt_string = GNUNET_strdup (attest->data);
+ jwt_string = GNUNET_strdup (cred->data);
jwt_body = strtok (jwt_string, delim);
jwt_body = strtok (NULL, delim);
GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
@@ -245,12 +244,12 @@ jwt_get_issuer (void *cls,
* Parse a JWT and return the expiration
*
* @param cls the plugin
- * @param attest the jwt attestation
+ * @param cred the jwt credential
* @return a string, containing the isser
*/
int
jwt_get_expiration (void *cls,
- const struct GNUNET_RECLAIM_Attestation *attest,
+ const struct GNUNET_RECLAIM_Credential *cred,
struct GNUNET_TIME_Absolute *exp)
{
const char *jwt_body;
@@ -262,9 +261,9 @@ jwt_get_expiration (void *cls,
json_t *json_val;
json_error_t *json_err = NULL;
- if (GNUNET_RECLAIM_ATTESTATION_TYPE_JWT != attest->type)
+ if (GNUNET_RECLAIM_credential_TYPE_JWT != cred->type)
return GNUNET_NO;
- jwt_string = GNUNET_strdup (attest->data);
+ jwt_string = GNUNET_strdup (cred->data);
jwt_body = strtok (jwt_string, delim);
jwt_body = strtok (NULL, delim);
GNUNET_STRINGS_base64url_decode (jwt_body, strlen (jwt_body),
@@ -286,11 +285,11 @@ jwt_get_expiration (void *cls,
* @return the exported block API
*/
void *
-libgnunet_plugin_reclaim_attestation_jwt_init (void *cls)
+libgnunet_plugin_reclaim_credential_jwt_init (void *cls)
{
- struct GNUNET_RECLAIM_AttestationPluginFunctions *api;
+ struct GNUNET_RECLAIM_CredentialPluginFunctions *api;
- api = GNUNET_new (struct GNUNET_RECLAIM_AttestationPluginFunctions);
+ api = GNUNET_new (struct GNUNET_RECLAIM_CredentialPluginFunctions);
api->value_to_string = &jwt_value_to_string;
api->string_to_value = &jwt_string_to_value;
api->typename_to_number = &jwt_typename_to_number;
@@ -309,13 +308,13 @@ libgnunet_plugin_reclaim_attestation_jwt_init (void *cls)
* @return NULL
*/
void *
-libgnunet_plugin_reclaim_attestation_jwt_done (void *cls)
+libgnunet_plugin_reclaim_credential_jwt_done (void *cls)
{
- struct GNUNET_RECLAIM_AttestationPluginFunctions *api = cls;
+ struct GNUNET_RECLAIM_CredentialPluginFunctions *api = cls;
GNUNET_free (api);
return NULL;
}
-/* end of plugin_reclaim_attestation_type_gnuid.c */
+/* end of plugin_reclaim_credential_type_jwt.c */
diff --git a/src/reclaim/plugin_rest_openid_connect.c b/src/reclaim/plugin_rest_openid_connect.c
index 2f44917c9..5ae6565af 100644
--- a/src/reclaim/plugin_rest_openid_connect.c
+++ b/src/reclaim/plugin_rest_openid_connect.c
@@ -439,9 +439,9 @@ struct RequestHandle
struct GNUNET_RECLAIM_AttributeList *attr_userinfo_list;
/**
- * Attestation list
+ * Credential list
*/
- struct GNUNET_RECLAIM_AttestationList *attests_list;
+ struct GNUNET_RECLAIM_CredentialList *creds_list;
/**
@@ -461,9 +461,9 @@ struct RequestHandle
struct GNUNET_RECLAIM_AttributeIterator *attr_it;
/**
- * Attestation iterator
+ * Credential iterator
*/
- struct GNUNET_RECLAIM_AttestationIterator *attest_it;
+ struct GNUNET_RECLAIM_CredentialIterator *cred_it;
/**
@@ -561,8 +561,8 @@ cleanup_handle (struct RequestHandle *handle)
GNUNET_SCHEDULER_cancel (handle->timeout_task);
if (NULL != handle->attr_it)
GNUNET_RECLAIM_get_attributes_stop (handle->attr_it);
- if (NULL != handle->attest_it)
- GNUNET_RECLAIM_get_attestations_stop (handle->attest_it);
+ if (NULL != handle->cred_it)
+ GNUNET_RECLAIM_get_credentials_stop (handle->cred_it);
if (NULL != handle->ticket_it)
GNUNET_RECLAIM_ticket_iteration_stop (handle->ticket_it);
if (NULL != handle->idp_op)
@@ -590,8 +590,8 @@ cleanup_handle (struct RequestHandle *handle)
GNUNET_RECLAIM_attribute_list_destroy (handle->attr_idtoken_list);
if (NULL!=handle->attr_userinfo_list)
GNUNET_RECLAIM_attribute_list_destroy (handle->attr_userinfo_list);
- if (NULL!=handle->attests_list)
- GNUNET_RECLAIM_attestation_list_destroy (handle->attests_list);
+ if (NULL!=handle->creds_list)
+ GNUNET_RECLAIM_credential_list_destroy (handle->creds_list);
GNUNET_CONTAINER_DLL_remove (requests_head,
requests_tail,
handle);
@@ -957,7 +957,7 @@ oidc_ticket_issue_cb (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket)
code_string = OIDC_build_authz_code (&handle->priv_key,
&handle->ticket,
handle->attr_idtoken_list,
- handle->attests_list,
+ handle->creds_list,
handle->oidc->nonce,
handle->oidc->code_challenge);
if ((NULL != handle->redirect_prefix) && (NULL != handle->redirect_suffix) &&
@@ -1010,13 +1010,13 @@ attribute_list_merge (struct GNUNET_RECLAIM_AttributeList *list_a,
le_m = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
le_m->attribute = GNUNET_RECLAIM_attribute_new (le_a->attribute->name,
&le_a->attribute->
- attestation,
+ credential,
le_a->attribute->type,
le_a->attribute->data,
le_a->attribute->data_size);
le_m->attribute->id = le_a->attribute->id;
le_m->attribute->flag = le_a->attribute->flag;
- le_m->attribute->attestation = le_a->attribute->attestation;
+ le_m->attribute->credential = le_a->attribute->credential;
GNUNET_CONTAINER_DLL_insert (merged_list->list_head,
merged_list->list_tail,
le_m);
@@ -1035,13 +1035,13 @@ attribute_list_merge (struct GNUNET_RECLAIM_AttributeList *list_a,
le_m = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
le_m->attribute = GNUNET_RECLAIM_attribute_new (le_b->attribute->name,
&le_b->attribute->
- attestation,
+ credential,
le_b->attribute->type,
le_b->attribute->data,
le_b->attribute->data_size);
le_m->attribute->id = le_b->attribute->id;
le_m->attribute->flag = le_b->attribute->flag;
- le_m->attribute->attestation = le_b->attribute->attestation;
+ le_m->attribute->credential = le_b->attribute->credential;
GNUNET_CONTAINER_DLL_insert (merged_list->list_head,
merged_list->list_tail,
le_m);
@@ -1051,13 +1051,13 @@ attribute_list_merge (struct GNUNET_RECLAIM_AttributeList *list_a,
static void
-oidc_attest_collect_finished_cb (void *cls)
+oidc_cred_collect_finished_cb (void *cls)
{
struct RequestHandle *handle = cls;
struct GNUNET_RECLAIM_AttributeList *merged_list;
struct GNUNET_RECLAIM_AttributeListEntry *le_m;
- handle->attest_it = NULL;
+ handle->cred_it = NULL;
merged_list = attribute_list_merge (handle->attr_idtoken_list,
handle->attr_userinfo_list);
for (le_m = merged_list->list_head; NULL != le_m; le_m = le_m->next)
@@ -1078,40 +1078,40 @@ oidc_attest_collect_finished_cb (void *cls)
* Collects all attributes for an ego if in scope parameter
*/
static void
-oidc_attest_collect (void *cls,
- const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
- const struct GNUNET_RECLAIM_Attestation *attest)
+oidc_cred_collect (void *cls,
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
+ const struct GNUNET_RECLAIM_Credential *cred)
{
struct RequestHandle *handle = cls;
struct GNUNET_RECLAIM_AttributeListEntry *le;
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
+ struct GNUNET_RECLAIM_CredentialListEntry *ale;
- for (ale = handle->attests_list->list_head; NULL != ale; ale = ale->next)
+ for (ale = handle->creds_list->list_head; NULL != ale; ale = ale->next)
{
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&ale->attestation->id,
- &attest->id))
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&ale->credential->id,
+ &cred->id))
continue;
- /** Attestation already in list **/
- GNUNET_RECLAIM_get_attestations_next (handle->attest_it);
+ /** Credential already in list **/
+ GNUNET_RECLAIM_get_credentials_next (handle->cred_it);
return;
}
for (le = handle->attr_idtoken_list->list_head; NULL != le; le = le->next)
{
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&le->attribute->attestation,
- &attest->id))
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&le->attribute->credential,
+ &cred->id))
continue;
- /** Attestation matches for attribute, add **/
- ale = GNUNET_new (struct GNUNET_RECLAIM_AttestationListEntry);
- ale->attestation = GNUNET_RECLAIM_attestation_new (attest->name,
- attest->type,
- attest->data,
- attest->data_size);
- GNUNET_CONTAINER_DLL_insert (handle->attests_list->list_head,
- handle->attests_list->list_tail,
+ /** Credential matches for attribute, add **/
+ ale = GNUNET_new (struct GNUNET_RECLAIM_CredentialListEntry);
+ ale->credential = GNUNET_RECLAIM_credential_new (cred->name,
+ cred->type,
+ cred->data,
+ cred->data_size);
+ GNUNET_CONTAINER_DLL_insert (handle->creds_list->list_head,
+ handle->creds_list->list_tail,
ale);
}
- GNUNET_RECLAIM_get_attestations_next (handle->attest_it);
+ GNUNET_RECLAIM_get_credentials_next (handle->cred_it);
}
@@ -1129,16 +1129,16 @@ oidc_attr_collect_finished_cb (void *cls)
GNUNET_SCHEDULER_add_now (&do_redirect_error, handle);
return;
}
- handle->attests_list = GNUNET_new (struct GNUNET_RECLAIM_AttestationList);
- handle->attest_it =
- GNUNET_RECLAIM_get_attestations_start (idp,
- &handle->priv_key,
- &oidc_iteration_error,
- handle,
- &oidc_attest_collect,
- handle,
- &oidc_attest_collect_finished_cb,
- handle);
+ handle->creds_list = GNUNET_new (struct GNUNET_RECLAIM_CredentialList);
+ handle->cred_it =
+ GNUNET_RECLAIM_get_credentials_start (idp,
+ &handle->priv_key,
+ &oidc_iteration_error,
+ handle,
+ &oidc_cred_collect,
+ handle,
+ &oidc_cred_collect_finished_cb,
+ handle);
}
@@ -1212,13 +1212,13 @@ oidc_attr_collect (void *cls,
{
le = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
le->attribute = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
le->attribute->id = attr->id;
le->attribute->flag = attr->flag;
- le->attribute->attestation = attr->attestation;
+ le->attribute->credential = attr->credential;
GNUNET_CONTAINER_DLL_insert (handle->attr_idtoken_list->list_head,
handle->attr_idtoken_list->list_tail,
le);
@@ -1227,13 +1227,13 @@ oidc_attr_collect (void *cls,
{
le = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
le->attribute = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
le->attribute->id = attr->id;
le->attribute->flag = attr->flag;
- le->attribute->attestation = attr->attestation;
+ le->attribute->credential = attr->credential;
GNUNET_CONTAINER_DLL_insert (handle->attr_userinfo_list->list_head,
handle->attr_userinfo_list->list_tail,
le);
@@ -1982,7 +1982,7 @@ token_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
const struct EgoEntry *ego_entry;
struct GNUNET_TIME_Relative expiration_time;
struct GNUNET_RECLAIM_AttributeList *cl = NULL;
- struct GNUNET_RECLAIM_AttestationList *al = NULL;
+ struct GNUNET_RECLAIM_CredentialList *al = NULL;
struct GNUNET_RECLAIM_Ticket ticket;
struct GNUNET_CRYPTO_EcdsaPublicKey cid;
struct GNUNET_HashCode cache_key;
@@ -2124,7 +2124,7 @@ token_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
MHD_add_response_header (resp, "Content-Type", "application/json");
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
GNUNET_RECLAIM_attribute_list_destroy (cl);
- GNUNET_RECLAIM_attestation_list_destroy (al);
+ GNUNET_RECLAIM_credential_list_destroy (al);
GNUNET_free (access_token);
GNUNET_free (json_response);
GNUNET_free (id_token);
@@ -2139,11 +2139,11 @@ static void
consume_ticket (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_Attribute *attr,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Credential *cred)
{
struct RequestHandle *handle = cls;
struct GNUNET_RECLAIM_AttributeListEntry *ale;
- struct GNUNET_RECLAIM_AttestationListEntry *atle;
+ struct GNUNET_RECLAIM_CredentialListEntry *atle;
struct MHD_Response *resp;
char *result_str;
handle->idp_op = NULL;
@@ -2152,7 +2152,7 @@ consume_ticket (void *cls,
{
result_str = OIDC_generate_userinfo (&handle->ticket.identity,
handle->attr_userinfo_list,
- handle->attests_list);
+ handle->creds_list);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Userinfo: %s\n", result_str);
resp = GNUNET_REST_create_response (result_str);
handle->proc (handle->proc_cls, resp, MHD_HTTP_OK);
@@ -2162,35 +2162,35 @@ consume_ticket (void *cls,
}
ale = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
ale->attribute = GNUNET_RECLAIM_attribute_new (attr->name,
- &attr->attestation,
+ &attr->credential,
attr->type,
attr->data,
attr->data_size);
ale->attribute->id = attr->id;
ale->attribute->flag = attr->flag;
- ale->attribute->attestation = attr->attestation;
+ ale->attribute->credential = attr->credential;
GNUNET_CONTAINER_DLL_insert (handle->attr_userinfo_list->list_head,
handle->attr_userinfo_list->list_tail,
ale);
- if (NULL == attest)
+ if (NULL == cred)
return;
- for (atle = handle->attests_list->list_head; NULL != atle; atle = atle->next)
+ for (atle = handle->creds_list->list_head; NULL != atle; atle = atle->next)
{
- if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&atle->attestation->id,
- &attest->id))
+ if (GNUNET_NO == GNUNET_RECLAIM_id_is_equal (&atle->credential->id,
+ &cred->id))
continue;
break; /** already in list **/
}
if (NULL == atle)
{
- /** Attestation matches for attribute, add **/
- atle = GNUNET_new (struct GNUNET_RECLAIM_AttestationListEntry);
- atle->attestation = GNUNET_RECLAIM_attestation_new (attest->name,
- attest->type,
- attest->data,
- attest->data_size);
- GNUNET_CONTAINER_DLL_insert (handle->attests_list->list_head,
- handle->attests_list->list_tail,
+ /** Credential matches for attribute, add **/
+ atle = GNUNET_new (struct GNUNET_RECLAIM_CredentialListEntry);
+ atle->credential = GNUNET_RECLAIM_credential_new (cred->name,
+ cred->type,
+ cred->data,
+ cred->data_size);
+ GNUNET_CONTAINER_DLL_insert (handle->creds_list->list_head,
+ handle->creds_list->list_tail,
atle);
}
}
@@ -2289,8 +2289,8 @@ userinfo_endpoint (struct GNUNET_REST_RequestHandle *con_handle,
privkey = GNUNET_IDENTITY_ego_get_private_key (aud_ego->ego);
handle->attr_userinfo_list =
GNUNET_new (struct GNUNET_RECLAIM_AttributeList);
- handle->attests_list =
- GNUNET_new (struct GNUNET_RECLAIM_AttestationList);
+ handle->creds_list =
+ GNUNET_new (struct GNUNET_RECLAIM_CredentialList);
handle->idp_op = GNUNET_RECLAIM_ticket_consume (idp,
privkey,
@@ -2611,6 +2611,7 @@ libgnunet_plugin_rest_openid_connect_init (void *cls)
return api;
}
+
static int
cleanup_hashmap (void *cls, const struct GNUNET_HashCode *key, void *value)
{
@@ -2618,6 +2619,7 @@ cleanup_hashmap (void *cls, const struct GNUNET_HashCode *key, void *value)
return GNUNET_YES;
}
+
/**
* Exit point from the plugin.
*
diff --git a/src/reclaim/plugin_rest_reclaim.c b/src/reclaim/plugin_rest_reclaim.c
index 870baa7f3..a51d992e1 100644
--- a/src/reclaim/plugin_rest_reclaim.c
+++ b/src/reclaim/plugin_rest_reclaim.c
@@ -48,9 +48,9 @@
#define GNUNET_REST_API_NS_RECLAIM_ATTRIBUTES "/reclaim/attributes"
/**
- * Attestation namespace
+ * Credential namespace
*/
-#define GNUNET_REST_API_NS_RECLAIM_ATTESTATION "/reclaim/attestation"
+#define GNUNET_REST_API_NS_RECLAIM_CREDENTIAL "/reclaim/credential"
/**
* Ticket namespace
@@ -202,7 +202,7 @@ struct RequestHandle
/**
* Attribute iterator
*/
- struct GNUNET_RECLAIM_AttestationIterator *attest_it;
+ struct GNUNET_RECLAIM_CredentialIterator *cred_it;
/**
* Ticket iterator
@@ -282,8 +282,8 @@ cleanup_handle (void *cls)
GNUNET_SCHEDULER_cancel (handle->timeout_task);
if (NULL != handle->attr_it)
GNUNET_RECLAIM_get_attributes_stop (handle->attr_it);
- if (NULL != handle->attest_it)
- GNUNET_RECLAIM_get_attestations_stop (handle->attest_it);
+ if (NULL != handle->cred_it)
+ GNUNET_RECLAIM_get_credentials_stop (handle->cred_it);
if (NULL != handle->ticket_it)
GNUNET_RECLAIM_ticket_iteration_stop (handle->ticket_it);
if (NULL != handle->url)
@@ -413,7 +413,7 @@ collect_finished_cb (void *cls)
// Done
handle->attr_it = NULL;
- handle->attest_it = NULL;
+ handle->cred_it = NULL;
handle->ticket_it = NULL;
GNUNET_SCHEDULER_add_now (&return_response, handle);
}
@@ -460,7 +460,7 @@ ticket_collect (void *cls, const struct GNUNET_RECLAIM_Ticket *ticket)
static void
-add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
+add_credential_cont (struct GNUNET_REST_RequestHandle *con_handle,
const char *url,
void *cls)
{
@@ -468,19 +468,19 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity_priv;
const char *identity;
struct EgoEntry *ego_entry;
- struct GNUNET_RECLAIM_Attestation *attribute;
+ struct GNUNET_RECLAIM_Credential *attribute;
struct GNUNET_TIME_Relative exp;
char term_data[handle->rest_handle->data_size + 1];
json_t *data_json;
json_error_t err;
struct GNUNET_JSON_Specification attrspec[] =
- { GNUNET_RECLAIM_JSON_spec_claim_attest (&attribute),
+ { GNUNET_RECLAIM_JSON_spec_claim_cred (&attribute),
GNUNET_JSON_spec_end () };
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Adding an attestation for %s.\n",
+ "Adding an credential for %s.\n",
handle->url);
- if (strlen (GNUNET_REST_API_NS_RECLAIM_ATTESTATION) >= strlen (
+ if (strlen (GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) >= strlen (
handle->url))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No identity given.\n");
@@ -488,7 +488,7 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
return;
}
identity = handle->url + strlen (
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION) + 1;
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) + 1;
for (ego_entry = ego_head; NULL != ego_entry;
ego_entry = ego_entry->next)
@@ -518,7 +518,7 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
if (NULL == attribute)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Unable to parse attestation from %s\n",
+ "Unable to parse credential from %s\n",
term_data);
GNUNET_SCHEDULER_add_now (&do_error, handle);
return;
@@ -529,7 +529,7 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
if (GNUNET_YES == GNUNET_RECLAIM_id_is_zero (&attribute->id))
GNUNET_RECLAIM_id_generate (&attribute->id);
exp = GNUNET_TIME_UNIT_HOURS;
- handle->idp_op = GNUNET_RECLAIM_attestation_store (idp,
+ handle->idp_op = GNUNET_RECLAIM_credential_store (idp,
identity_priv,
attribute,
&exp,
@@ -540,52 +540,52 @@ add_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
/**
- * Collect all attestations for an ego
+ * Collect all credentials for an ego
*
*/
static void
-attest_collect (void *cls,
+cred_collect (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Credential *cred)
{
struct RequestHandle *handle = cls;
struct GNUNET_RECLAIM_AttributeList *attrs;
struct GNUNET_RECLAIM_AttributeListEntry *ale;
struct GNUNET_TIME_Absolute exp;
json_t *attr_obj;
- json_t *attest_obj;
+ json_t *cred_obj;
const char *type;
char *tmp_value;
char *id_str;
char *issuer;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding attestation: %s\n",
- attest->name);
- attrs = GNUNET_RECLAIM_attestation_get_attributes (attest);
- issuer = GNUNET_RECLAIM_attestation_get_issuer (attest);
- tmp_value = GNUNET_RECLAIM_attestation_value_to_string (attest->type,
- attest->data,
- attest->data_size);
- attest_obj = json_object ();
- json_object_set_new (attest_obj, "value", json_string (tmp_value));
- json_object_set_new (attest_obj, "name", json_string (attest->name));
- type = GNUNET_RECLAIM_attestation_number_to_typename (attest->type);
- json_object_set_new (attest_obj, "type", json_string (type));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding credential: %s\n",
+ cred->name);
+ attrs = GNUNET_RECLAIM_credential_get_attributes (cred);
+ issuer = GNUNET_RECLAIM_credential_get_issuer (cred);
+ tmp_value = GNUNET_RECLAIM_credential_value_to_string (cred->type,
+ cred->data,
+ cred->data_size);
+ cred_obj = json_object ();
+ json_object_set_new (cred_obj, "value", json_string (tmp_value));
+ json_object_set_new (cred_obj, "name", json_string (cred->name));
+ type = GNUNET_RECLAIM_credential_number_to_typename (cred->type);
+ json_object_set_new (cred_obj, "type", json_string (type));
if (NULL != issuer)
{
- json_object_set_new (attest_obj, "issuer", json_string (issuer));
+ json_object_set_new (cred_obj, "issuer", json_string (issuer));
GNUNET_free (issuer);
}
- if (GNUNET_OK == GNUNET_RECLAIM_attestation_get_expiration (attest,
+ if (GNUNET_OK == GNUNET_RECLAIM_credential_get_expiration (cred,
&exp))
{
- json_object_set_new (attest_obj, "expiration", json_integer (
+ json_object_set_new (cred_obj, "expiration", json_integer (
exp.abs_value_us));
}
- id_str = GNUNET_STRINGS_data_to_string_alloc (&attest->id,
- sizeof(attest->id));
- json_object_set_new (attest_obj, "id", json_string (id_str));
+ id_str = GNUNET_STRINGS_data_to_string_alloc (&cred->id,
+ sizeof(cred->id));
+ json_object_set_new (cred_obj, "id", json_string (id_str));
GNUNET_free (tmp_value);
GNUNET_free (id_str);
if (NULL != attrs)
@@ -606,27 +606,27 @@ attest_collect (void *cls,
type = GNUNET_RECLAIM_attribute_number_to_typename (ale->attribute->type);
json_object_set_new (attr_obj, "type", json_string (type));
json_object_set_new (attr_obj, "id", json_string (""));
- json_object_set_new (attr_obj, "attestation", json_string (""));
+ json_object_set_new (attr_obj, "credential", json_string (""));
json_array_append_new (attr_arr, attr_obj);
GNUNET_free (tmp_value);
}
- json_object_set_new (attest_obj, "attributes", attr_arr);
+ json_object_set_new (cred_obj, "attributes", attr_arr);
}
- json_array_append_new (handle->resp_object, attest_obj);
+ json_array_append_new (handle->resp_object, cred_obj);
GNUNET_RECLAIM_attribute_list_destroy (attrs);
- GNUNET_RECLAIM_get_attestations_next (handle->attest_it);
+ GNUNET_RECLAIM_get_credentials_next (handle->cred_it);
}
/**
- * Lists attestation for identity request
+ * Lists credential for identity request
*
* @param con_handle the connection handle
* @param url the url
* @param cls the RequestHandle
*/
static void
-list_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
+list_credential_cont (struct GNUNET_REST_RequestHandle *con_handle,
const char *url,
void *cls)
{
@@ -636,9 +636,9 @@ list_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
char *identity;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Getting attestations for %s.\n",
+ "Getting credentials for %s.\n",
handle->url);
- if (strlen (GNUNET_REST_API_NS_RECLAIM_ATTESTATION) >= strlen (
+ if (strlen (GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) >= strlen (
handle->url))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No identity given.\n");
@@ -646,7 +646,7 @@ list_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
return;
}
identity = handle->url + strlen (
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION) + 1;
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) + 1;
for (ego_entry = ego_head; NULL != ego_entry;
ego_entry = ego_entry->next)
@@ -663,11 +663,11 @@ list_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
return;
}
priv_key = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
- handle->attest_it = GNUNET_RECLAIM_get_attestations_start (idp,
+ handle->cred_it = GNUNET_RECLAIM_get_credentials_start (idp,
priv_key,
&collect_error_cb,
handle,
- &attest_collect,
+ &cred_collect,
handle,
&
collect_finished_cb,
@@ -676,27 +676,27 @@ list_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
/**
- * Deletes attestation from an identity
+ * Deletes credential from an identity
*
* @param con_handle the connection handle
* @param url the url
* @param cls the RequestHandle
*/
static void
-delete_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
+delete_credential_cont (struct GNUNET_REST_RequestHandle *con_handle,
const char *url,
void *cls)
{
struct RequestHandle *handle = cls;
const struct GNUNET_CRYPTO_EcdsaPrivateKey *priv_key;
- struct GNUNET_RECLAIM_Attestation attr;
+ struct GNUNET_RECLAIM_Credential attr;
struct EgoEntry *ego_entry;
char *identity_id_str;
char *identity;
char *id;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleting attestation.\n");
- if (strlen (GNUNET_REST_API_NS_RECLAIM_ATTESTATION) >= strlen (
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleting credential.\n");
+ if (strlen (GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) >= strlen (
handle->url))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No identity given.\n");
@@ -705,7 +705,7 @@ delete_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
}
identity_id_str =
strdup (handle->url + strlen (
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION) + 1);
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL) + 1);
identity = strtok (identity_id_str, "/");
id = strtok (NULL, "/");
if ((NULL == identity) || (NULL == id))
@@ -730,10 +730,10 @@ delete_attestation_cont (struct GNUNET_REST_RequestHandle *con_handle,
return;
}
priv_key = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
- memset (&attr, 0, sizeof(struct GNUNET_RECLAIM_Attestation));
+ memset (&attr, 0, sizeof(struct GNUNET_RECLAIM_Credential));
GNUNET_STRINGS_string_to_data (id, strlen (id), &attr.id, sizeof(attr.id));
attr.name = "";
- handle->idp_op = GNUNET_RECLAIM_attestation_delete (idp,
+ handle->idp_op = GNUNET_RECLAIM_credential_delete (idp,
priv_key,
&attr,
&delete_finished_cb,
@@ -877,13 +877,13 @@ add_attribute_cont (struct GNUNET_REST_RequestHandle *con_handle,
/**
* Parse a JWT and return the respective claim value as Attribute
*
- * @param attest the jwt attestation
+ * @param cred the jwt credential
* @param claim the name of the claim in the JWT
*
* @return a GNUNET_RECLAIM_Attribute, containing the new value
*/
struct GNUNET_RECLAIM_Attribute *
-parse_jwt (const struct GNUNET_RECLAIM_Attestation *attest,
+parse_jwt (const struct GNUNET_RECLAIM_Credential *cred,
const char *claim)
{
char *jwt_string;
@@ -899,9 +899,9 @@ parse_jwt (const struct GNUNET_RECLAIM_Attestation *attest,
json_t *json_val;
json_error_t *json_err = NULL;
- jwt_string = GNUNET_RECLAIM_attestation_value_to_string (attest->type,
- attest->data,
- attest->data_size);
+ jwt_string = GNUNET_RECLAIM_credential_value_to_string (cred->type,
+ cred->data,
+ cred->data_size);
char *jwt_body = strtok (jwt_string, delim);
jwt_body = strtok (NULL, delim);
GNUNET_STRINGS_base64_decode (jwt_body, strlen (jwt_body),
@@ -927,16 +927,16 @@ parse_jwt (const struct GNUNET_RECLAIM_Attestation *attest,
"Error: Referenced Claim Name not Found",
(void **) &data,
&data_size);
- attr = GNUNET_RECLAIM_attribute_new (claim, &attest->id,
+ attr = GNUNET_RECLAIM_attribute_new (claim, &cred->id,
type, data, data_size);
- attr->id = attest->id;
+ attr->id = cred->id;
attr->flag = 1;
}
else
{
- attr = GNUNET_RECLAIM_attribute_new (claim, &attest->id,
+ attr = GNUNET_RECLAIM_attribute_new (claim, &cred->id,
type, data, data_size);
- attr->id = attest->id;
+ attr->id = cred->id;
attr->flag = 1;
}
return attr;
@@ -965,7 +965,7 @@ attr_collect (void *cls,
json_object_set_new (attr_obj, "value", json_string (tmp_value));
json_object_set_new (attr_obj, "name", json_string (attr->name));
- if (GNUNET_RECLAIM_id_is_zero (&attr->attestation))
+ if (GNUNET_RECLAIM_id_is_zero (&attr->credential))
json_object_set_new (attr_obj, "flag", json_string ("0"));
else
json_object_set_new (attr_obj, "flag", json_string ("1"));
@@ -974,9 +974,9 @@ attr_collect (void *cls,
id_str = GNUNET_STRINGS_data_to_string_alloc (&attr->id,
sizeof(attr->id));
json_object_set_new (attr_obj, "id", json_string (id_str));
- id_str = GNUNET_STRINGS_data_to_string_alloc (&attr->attestation,
- sizeof(attr->attestation));
- json_object_set_new (attr_obj, "attestation", json_string (id_str));
+ id_str = GNUNET_STRINGS_data_to_string_alloc (&attr->credential,
+ sizeof(attr->credential));
+ json_object_set_new (attr_obj, "credential", json_string (id_str));
json_array_append (handle->resp_object, attr_obj);
json_decref (attr_obj);
GNUNET_free (tmp_value);
@@ -1180,7 +1180,7 @@ static void
consume_cont (void *cls,
const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
const struct GNUNET_RECLAIM_Attribute *attr,
- const struct GNUNET_RECLAIM_Attestation *attest)
+ const struct GNUNET_RECLAIM_Credential *cred)
{
struct RequestHandle *handle = cls;
char *val_str;
@@ -1427,11 +1427,11 @@ rest_identity_process_request (struct GNUNET_REST_RequestHandle *rest_handle,
{ MHD_HTTP_METHOD_DELETE,
GNUNET_REST_API_NS_RECLAIM_ATTRIBUTES, &delete_attribute_cont },
{ MHD_HTTP_METHOD_GET,
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION, &list_attestation_cont },
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL, &list_credential_cont },
{ MHD_HTTP_METHOD_POST,
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION, &add_attestation_cont },
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL, &add_credential_cont },
{ MHD_HTTP_METHOD_DELETE,
- GNUNET_REST_API_NS_RECLAIM_ATTESTATION, &delete_attestation_cont },
+ GNUNET_REST_API_NS_RECLAIM_CREDENTIAL, &delete_credential_cont },
{ MHD_HTTP_METHOD_GET,
GNUNET_REST_API_NS_IDENTITY_TICKETS, &list_tickets_cont },
{ MHD_HTTP_METHOD_POST,
diff --git a/src/reclaim/reclaim.h b/src/reclaim/reclaim.h
index 7b5d7ab19..6ba9fdcd7 100644
--- a/src/reclaim/reclaim.h
+++ b/src/reclaim/reclaim.h
@@ -139,9 +139,9 @@ struct AttributeResultMessage
uint16_t attr_len GNUNET_PACKED;
/**
- * Length of serialized attestation data
+ * Length of serialized credential data
*/
- uint16_t attestation_len GNUNET_PACKED;
+ uint16_t credential_len GNUNET_PACKED;
/**
* always zero (for alignment)
@@ -159,9 +159,9 @@ struct AttributeResultMessage
};
/**
- * Attestation is returned from the idp.
+ * Credential is returned from the idp.
*/
-struct AttestationResultMessage
+struct CredentialResultMessage
{
/**
* Message header
@@ -176,7 +176,7 @@ struct AttestationResultMessage
/**
* Length of serialized attribute data
*/
- uint16_t attestation_len GNUNET_PACKED;
+ uint16_t credential_len GNUNET_PACKED;
/**
* always zero (for alignment)
@@ -189,7 +189,7 @@ struct AttestationResultMessage
struct GNUNET_CRYPTO_EcdsaPublicKey identity;
/* followed by:
- * serialized attestation data
+ * serialized credential data
*/
};
@@ -234,9 +234,9 @@ struct AttributeIterationNextMessage
/**
- * Start a attestation iteration for the given identity
+ * Start a credential iteration for the given identity
*/
-struct AttestationIterationStartMessage
+struct CredentialIterationStartMessage
{
/**
* Message
@@ -256,9 +256,9 @@ struct AttestationIterationStartMessage
/**
- * Ask for next result of attestation iteration for the given operation
+ * Ask for next result of credential iteration for the given operation
*/
-struct AttestationIterationNextMessage
+struct CredentialIterationNextMessage
{
/**
* Type will be #GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_ITERATION_NEXT
@@ -273,9 +273,9 @@ struct AttestationIterationNextMessage
/**
- * Stop attestation iteration for the given operation
+ * Stop credential iteration for the given operation
*/
-struct AttestationIterationStopMessage
+struct CredentialIterationStopMessage
{
/**
* Type will be #GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_ITERATION_STOP
@@ -520,9 +520,9 @@ struct ConsumeTicketResultMessage
uint16_t attrs_len GNUNET_PACKED;
/**
- * Length of attestation data
+ * Length of presentation data
*/
- uint16_t attestations_len;
+ uint16_t presentations_len;
/**
* always zero (for alignment)
diff --git a/src/reclaim/reclaim_api.c b/src/reclaim/reclaim_api.c
index b432b4f2a..2cfcbad09 100644
--- a/src/reclaim/reclaim_api.c
+++ b/src/reclaim/reclaim_api.c
@@ -77,9 +77,9 @@ struct GNUNET_RECLAIM_Operation
GNUNET_RECLAIM_AttributeTicketResult atr_cb;
/**
- * Attestation result callback
+ * Credential result callback
*/
- GNUNET_RECLAIM_AttestationResult at_cb;
+ GNUNET_RECLAIM_CredentialResult at_cb;
/**
* Revocation result callback
@@ -239,19 +239,19 @@ struct GNUNET_RECLAIM_AttributeIterator
};
/**
- * Handle for a attestation iterator operation
+ * Handle for a credential iterator operation
*/
-struct GNUNET_RECLAIM_AttestationIterator
+struct GNUNET_RECLAIM_CredentialIterator
{
/**
* Kept in a DLL.
*/
- struct GNUNET_RECLAIM_AttestationIterator *next;
+ struct GNUNET_RECLAIM_CredentialIterator *next;
/**
* Kept in a DLL.
*/
- struct GNUNET_RECLAIM_AttestationIterator *prev;
+ struct GNUNET_RECLAIM_CredentialIterator *prev;
/**
* Main handle to access the service.
@@ -271,7 +271,7 @@ struct GNUNET_RECLAIM_AttestationIterator
/**
* The continuation to call with the results
*/
- GNUNET_RECLAIM_AttestationResult proc;
+ GNUNET_RECLAIM_CredentialResult proc;
/**
* Closure for @e proc.
@@ -349,12 +349,12 @@ struct GNUNET_RECLAIM_Handle
/**
* Head of active iterations
*/
- struct GNUNET_RECLAIM_AttestationIterator *ait_head;
+ struct GNUNET_RECLAIM_CredentialIterator *ait_head;
/**
* Tail of active iterations
*/
- struct GNUNET_RECLAIM_AttestationIterator *ait_tail;
+ struct GNUNET_RECLAIM_CredentialIterator *ait_tail;
/**
* Head of active iterations
@@ -464,7 +464,7 @@ free_it (struct GNUNET_RECLAIM_AttributeIterator *it)
* @param ait entry to free
*/
static void
-free_ait (struct GNUNET_RECLAIM_AttestationIterator *ait)
+free_ait (struct GNUNET_RECLAIM_CredentialIterator *ait)
{
struct GNUNET_RECLAIM_Handle *h = ait->h;
@@ -561,13 +561,13 @@ check_consume_ticket_result (void *cls,
{
size_t msg_len;
size_t attrs_len;
- size_t attests_len;
+ size_t pl_len;
msg_len = ntohs (msg->header.size);
attrs_len = ntohs (msg->attrs_len);
- attests_len = ntohs (msg->attestations_len);
+ pl_len = ntohs (msg->presentations_len);
if (msg_len !=
- sizeof(struct ConsumeTicketResultMessage) + attrs_len + attests_len)
+ sizeof(struct ConsumeTicketResultMessage) + attrs_len + pl_len)
{
GNUNET_break (0);
return GNUNET_SYSERR;
@@ -590,12 +590,12 @@ handle_consume_ticket_result (void *cls,
struct GNUNET_RECLAIM_Handle *h = cls;
struct GNUNET_RECLAIM_Operation *op;
size_t attrs_len;
- size_t attests_len;
+ size_t pl_len;
uint32_t r_id = ntohl (msg->id);
char *read_ptr;
attrs_len = ntohs (msg->attrs_len);
- attests_len = ntohs (msg->attestations_len);
+ pl_len = ntohs (msg->presentations_len);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Processing ticket result.\n");
@@ -608,13 +608,12 @@ handle_consume_ticket_result (void *cls,
{
struct GNUNET_RECLAIM_AttributeList *attrs;
struct GNUNET_RECLAIM_AttributeListEntry *le;
- struct GNUNET_RECLAIM_AttestationList *attests;
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
+ struct GNUNET_RECLAIM_PresentationList *pl;
+ struct GNUNET_RECLAIM_PresentationListEntry *ple;
attrs =
GNUNET_RECLAIM_attribute_list_deserialize ((char *) &msg[1], attrs_len);
read_ptr = ((char *) &msg[1]) + attrs_len;
- attests =
- GNUNET_RECLAIM_attestation_list_deserialize (read_ptr, attests_len);
+ pl = GNUNET_RECLAIM_presentation_list_deserialize (read_ptr, pl_len);
if (NULL != op->atr_cb)
{
if (NULL == attrs)
@@ -626,22 +625,22 @@ handle_consume_ticket_result (void *cls,
for (le = attrs->list_head; NULL != le; le = le->next)
{
if (GNUNET_NO ==
- GNUNET_RECLAIM_id_is_zero (&le->attribute->attestation))
+ GNUNET_RECLAIM_id_is_zero (&le->attribute->credential))
{
- for (ale = attests->list_head; NULL != ale; ale = ale->next)
+ for (ple = pl->list_head; NULL != ple; ple = ple->next)
{
if (GNUNET_YES ==
- GNUNET_RECLAIM_id_is_equal (&le->attribute->attestation,
- &ale->attestation->id))
+ GNUNET_RECLAIM_id_is_equal (&le->attribute->credential,
+ &ple->presentation->credential_id))
{
op->atr_cb (op->cls, &msg->identity,
- le->attribute, ale->attestation);
+ le->attribute, ple->presentation);
break;
}
}
}
- else // No attestations
+ else // No credentials
{
op->atr_cb (op->cls, &msg->identity,
le->attribute, NULL);
@@ -649,10 +648,10 @@ handle_consume_ticket_result (void *cls,
}
if (NULL != attrs)
GNUNET_RECLAIM_attribute_list_destroy (attrs);
- if (NULL != attests)
- GNUNET_RECLAIM_attestation_list_destroy (attests);
+ if (NULL != pl)
+ GNUNET_RECLAIM_presentation_list_destroy (pl);
attrs = NULL;
- attests = NULL;
+ pl = NULL;
}
op->atr_cb (op->cls, NULL, NULL, NULL);
}
@@ -768,21 +767,21 @@ handle_attribute_result (void *cls, const struct AttributeResultMessage *msg)
/**
* Handle an incoming message of type
- * #GNUNET_MESSAGE_TYPE_RECLAIM_attestation_RESULT
+ * #GNUNET_MESSAGE_TYPE_RECLAIM_credential_RESULT
*
* @param cls
* @param msg the message we received
* @return #GNUNET_OK on success, #GNUNET_SYSERR on error
*/
static int
-check_attestation_result (void *cls, const struct AttestationResultMessage *msg)
+check_credential_result (void *cls, const struct CredentialResultMessage *msg)
{
size_t msg_len;
- size_t attest_len;
+ size_t cred_len;
msg_len = ntohs (msg->header.size);
- attest_len = ntohs (msg->attestation_len);
- if (msg_len != sizeof(struct AttestationResultMessage) + attest_len)
+ cred_len = ntohs (msg->credential_len);
+ if (msg_len != sizeof(struct CredentialResultMessage) + cred_len)
{
GNUNET_break (0);
return GNUNET_SYSERR;
@@ -793,24 +792,24 @@ check_attestation_result (void *cls, const struct AttestationResultMessage *msg)
/**
* Handle an incoming message of type
- * #GNUNET_MESSAGE_TYPE_RECLAIM_attestation_RESULT
+ * #GNUNET_MESSAGE_TYPE_RECLAIM_credential_RESULT
*
* @param cls
* @param msg the message we received
*/
static void
-handle_attestation_result (void *cls, const struct
- AttestationResultMessage *msg)
+handle_credential_result (void *cls, const struct
+ CredentialResultMessage *msg)
{
static struct GNUNET_CRYPTO_EcdsaPrivateKey identity_dummy;
struct GNUNET_RECLAIM_Handle *h = cls;
- struct GNUNET_RECLAIM_AttestationIterator *it;
+ struct GNUNET_RECLAIM_CredentialIterator *it;
struct GNUNET_RECLAIM_Operation *op;
size_t att_len;
uint32_t r_id = ntohl (msg->id);
- att_len = ntohs (msg->attestation_len);
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Processing attestation result.\n");
+ att_len = ntohs (msg->credential_len);
+ LOG (GNUNET_ERROR_TYPE_DEBUG, "Processing credential result.\n");
for (it = h->ait_head; NULL != it; it = it->next)
@@ -848,8 +847,8 @@ handle_attestation_result (void *cls, const struct
}
{
- struct GNUNET_RECLAIM_Attestation *att;
- att = GNUNET_RECLAIM_attestation_deserialize ((char *) &msg[1], att_len);
+ struct GNUNET_RECLAIM_Credential *att;
+ att = GNUNET_RECLAIM_credential_deserialize ((char *) &msg[1], att_len);
if (NULL != it)
{
@@ -986,9 +985,9 @@ reconnect (struct GNUNET_RECLAIM_Handle *h)
GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_RESULT,
struct AttributeResultMessage,
h),
- GNUNET_MQ_hd_var_size (attestation_result,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_RESULT,
- struct AttestationResultMessage,
+ GNUNET_MQ_hd_var_size (credential_result,
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_RESULT,
+ struct CredentialResultMessage,
h),
GNUNET_MQ_hd_fixed_size (ticket_result,
GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT,
@@ -1175,22 +1174,22 @@ GNUNET_RECLAIM_attribute_delete (
/**
- * Store an attestation. If the attestation is already present,
- * it is replaced with the new attestation.
+ * Store an credential. If the credential is already present,
+ * it is replaced with the new credential.
*
* @param h handle to the re:claimID service
* @param pkey private key of the identity
- * @param attr the attestation value
- * @param exp_interval the relative expiration interval for the attestation
+ * @param attr the credential value
+ * @param exp_interval the relative expiration interval for the credential
* @param cont continuation to call when done
* @param cont_cls closure for @a cont
* @return handle to abort the request
*/
struct GNUNET_RECLAIM_Operation *
-GNUNET_RECLAIM_attestation_store (
+GNUNET_RECLAIM_credential_store (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
- const struct GNUNET_RECLAIM_Attestation *attr,
+ const struct GNUNET_RECLAIM_Credential *attr,
const struct GNUNET_TIME_Relative *exp_interval,
GNUNET_RECLAIM_ContinuationWithStatus cont,
void *cont_cls)
@@ -1205,15 +1204,15 @@ GNUNET_RECLAIM_attestation_store (
op->cls = cont_cls;
op->r_id = h->r_id_gen++;
GNUNET_CONTAINER_DLL_insert_tail (h->op_head, h->op_tail, op);
- attr_len = GNUNET_RECLAIM_attestation_serialize_get_size (attr);
+ attr_len = GNUNET_RECLAIM_credential_serialize_get_size (attr);
op->env = GNUNET_MQ_msg_extra (sam,
attr_len,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_STORE);
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_STORE);
sam->identity = *pkey;
sam->id = htonl (op->r_id);
sam->exp = GNUNET_htonll (exp_interval->rel_value_us);
- GNUNET_RECLAIM_attestation_serialize (attr, (char *) &sam[1]);
+ GNUNET_RECLAIM_credential_serialize (attr, (char *) &sam[1]);
sam->attr_len = htons (attr_len);
if (NULL != h->mq)
@@ -1223,21 +1222,21 @@ GNUNET_RECLAIM_attestation_store (
/**
- * Delete an attestation. Tickets used to share this attestation are updated
+ * Delete an credential. Tickets used to share this credential are updated
* accordingly.
*
* @param h handle to the re:claimID service
* @param pkey Private key of the identity to add an attribute to
- * @param attr The attestation
+ * @param attr The credential
* @param cont Continuation to call when done
* @param cont_cls Closure for @a cont
* @return handle Used to to abort the request
*/
struct GNUNET_RECLAIM_Operation *
-GNUNET_RECLAIM_attestation_delete (
+GNUNET_RECLAIM_credential_delete (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey,
- const struct GNUNET_RECLAIM_Attestation *attr,
+ const struct GNUNET_RECLAIM_Credential *attr,
GNUNET_RECLAIM_ContinuationWithStatus cont,
void *cont_cls)
{
@@ -1251,13 +1250,13 @@ GNUNET_RECLAIM_attestation_delete (
op->cls = cont_cls;
op->r_id = h->r_id_gen++;
GNUNET_CONTAINER_DLL_insert_tail (h->op_head, h->op_tail, op);
- attr_len = GNUNET_RECLAIM_attestation_serialize_get_size (attr);
+ attr_len = GNUNET_RECLAIM_credential_serialize_get_size (attr);
op->env = GNUNET_MQ_msg_extra (dam,
attr_len,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_DELETE);
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_DELETE);
dam->identity = *pkey;
dam->id = htonl (op->r_id);
- GNUNET_RECLAIM_attestation_serialize (attr, (char *) &dam[1]);
+ GNUNET_RECLAIM_credential_serialize (attr, (char *) &dam[1]);
dam->attr_len = htons (attr_len);
if (NULL != h->mq)
@@ -1376,12 +1375,12 @@ GNUNET_RECLAIM_get_attributes_stop (struct GNUNET_RECLAIM_AttributeIterator *it)
/**
- * List all attestations for a local identity.
+ * List all credentials for a local identity.
* This MUST lock the `struct GNUNET_RECLAIM_Handle`
- * for any other calls than #GNUNET_RECLAIM_get_attestations_next() and
- * #GNUNET_RECLAIM_get_attestations_stop. @a proc will be called once
+ * for any other calls than #GNUNET_RECLAIM_get_credentials_next() and
+ * #GNUNET_RECLAIM_get_credentials_stop. @a proc will be called once
* immediately, and then again after
- * #GNUNET_RECLAIM_get_attestations_next() is invoked.
+ * #GNUNET_RECLAIM_get_credentials_next() is invoked.
*
* On error (disconnect), @a error_cb will be invoked.
* On normal completion, @a finish_cb proc will be
@@ -1392,31 +1391,31 @@ GNUNET_RECLAIM_get_attributes_stop (struct GNUNET_RECLAIM_AttributeIterator *it)
* @param error_cb Function to call on error (i.e. disconnect),
* the handle is afterwards invalid
* @param error_cb_cls Closure for @a error_cb
- * @param proc Function to call on each attestation
+ * @param proc Function to call on each credential
* @param proc_cls Closure for @a proc
* @param finish_cb Function to call on completion
* the handle is afterwards invalid
* @param finish_cb_cls Closure for @a finish_cb
* @return an iterator Handle to use for iteration
*/
-struct GNUNET_RECLAIM_AttestationIterator *
-GNUNET_RECLAIM_get_attestations_start (
+struct GNUNET_RECLAIM_CredentialIterator *
+GNUNET_RECLAIM_get_credentials_start (
struct GNUNET_RECLAIM_Handle *h,
const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
GNUNET_SCHEDULER_TaskCallback error_cb,
void *error_cb_cls,
- GNUNET_RECLAIM_AttestationResult proc,
+ GNUNET_RECLAIM_CredentialResult proc,
void *proc_cls,
GNUNET_SCHEDULER_TaskCallback finish_cb,
void *finish_cb_cls)
{
- struct GNUNET_RECLAIM_AttestationIterator *ait;
+ struct GNUNET_RECLAIM_CredentialIterator *ait;
struct GNUNET_MQ_Envelope *env;
- struct AttestationIterationStartMessage *msg;
+ struct CredentialIterationStartMessage *msg;
uint32_t rid;
rid = h->r_id_gen++;
- ait = GNUNET_new (struct GNUNET_RECLAIM_AttestationIterator);
+ ait = GNUNET_new (struct GNUNET_RECLAIM_CredentialIterator);
ait->h = h;
ait->error_cb = error_cb;
ait->error_cb_cls = error_cb_cls;
@@ -1429,7 +1428,7 @@ GNUNET_RECLAIM_get_attestations_start (
GNUNET_CONTAINER_DLL_insert_tail (h->ait_head, h->ait_tail, ait);
env =
GNUNET_MQ_msg (msg,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_START);
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_START);
msg->id = htonl (rid);
msg->identity = *identity;
if (NULL == h->mq)
@@ -1441,21 +1440,21 @@ GNUNET_RECLAIM_get_attestations_start (
/**
- * Calls the record processor specified in #GNUNET_RECLAIM_get_attestation_start
+ * Calls the record processor specified in #GNUNET_RECLAIM_get_credential_start
* for the next record.
*
* @param it the iterator
*/
void
-GNUNET_RECLAIM_get_attestations_next (struct
- GNUNET_RECLAIM_AttestationIterator *ait)
+GNUNET_RECLAIM_get_credentials_next (struct
+ GNUNET_RECLAIM_CredentialIterator *ait)
{
struct GNUNET_RECLAIM_Handle *h = ait->h;
- struct AttestationIterationNextMessage *msg;
+ struct CredentialIterationNextMessage *msg;
struct GNUNET_MQ_Envelope *env;
env =
- GNUNET_MQ_msg (msg, GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_NEXT);
+ GNUNET_MQ_msg (msg, GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_NEXT);
msg->id = htonl (ait->r_id);
GNUNET_MQ_send (h->mq, env);
}
@@ -1469,18 +1468,18 @@ GNUNET_RECLAIM_get_attestations_next (struct
* @param it the iterator
*/
void
-GNUNET_RECLAIM_get_attestations_stop (struct
- GNUNET_RECLAIM_AttestationIterator *ait)
+GNUNET_RECLAIM_get_credentials_stop (struct
+ GNUNET_RECLAIM_CredentialIterator *ait)
{
struct GNUNET_RECLAIM_Handle *h = ait->h;
struct GNUNET_MQ_Envelope *env;
- struct AttestationIterationStopMessage *msg;
+ struct CredentialIterationStopMessage *msg;
if (NULL != h->mq)
{
env =
GNUNET_MQ_msg (msg,
- GNUNET_MESSAGE_TYPE_RECLAIM_ATTESTATION_ITERATION_STOP);
+ GNUNET_MESSAGE_TYPE_RECLAIM_CREDENTIAL_ITERATION_STOP);
msg->id = htonl (ait->r_id);
GNUNET_MQ_send (h->mq, env);
}
diff --git a/src/reclaim/reclaim_attribute.c b/src/reclaim/reclaim_attribute.c
index 971bfce23..2217987ac 100644
--- a/src/reclaim/reclaim_attribute.c
+++ b/src/reclaim/reclaim_attribute.c
@@ -222,7 +222,7 @@ GNUNET_RECLAIM_attribute_value_to_string (uint32_t type,
* Create a new attribute.
*
* @param attr_name the attribute name
- * @param attestation attestation ID of the attribute (maybe NULL)
+ * @param credential credential ID of the attribute (maybe NULL)
* @param type the attribute type
* @param data the attribute value
* @param data_size the attribute value size
@@ -231,7 +231,7 @@ GNUNET_RECLAIM_attribute_value_to_string (uint32_t type,
struct GNUNET_RECLAIM_Attribute *
GNUNET_RECLAIM_attribute_new (const char *attr_name,
const struct
- GNUNET_RECLAIM_Identifier *attestation,
+ GNUNET_RECLAIM_Identifier *credential,
uint32_t type,
const void *data,
size_t data_size)
@@ -244,8 +244,8 @@ GNUNET_RECLAIM_attribute_new (const char *attr_name,
attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_Attribute)
+ strlen (attr_name_tmp) + 1 + data_size);
- if (NULL != attestation)
- attr->attestation = *attestation;
+ if (NULL != credential)
+ attr->credential = *credential;
attr->type = type;
attr->data_size = data_size;
attr->flag = 0;
@@ -272,7 +272,7 @@ void
GNUNET_RECLAIM_attribute_list_add (
struct GNUNET_RECLAIM_AttributeList *al,
const char *attr_name,
- const struct GNUNET_RECLAIM_Identifier *attestation,
+ const struct GNUNET_RECLAIM_Identifier *credential,
uint32_t type,
const void *data,
size_t data_size)
@@ -281,7 +281,7 @@ GNUNET_RECLAIM_attribute_list_add (
ale = GNUNET_new (struct GNUNET_RECLAIM_AttributeListEntry);
ale->attribute =
- GNUNET_RECLAIM_attribute_new (attr_name, attestation,
+ GNUNET_RECLAIM_attribute_new (attr_name, credential,
type, data, data_size);
GNUNET_CONTAINER_DLL_insert (al->list_head,
al->list_tail,
@@ -403,7 +403,7 @@ GNUNET_RECLAIM_attribute_list_dup (
{
result_ale->attribute =
GNUNET_RECLAIM_attribute_new (ale->attribute->name,
- &ale->attribute->attestation,
+ &ale->attribute->credential,
ale->attribute->type,
ale->attribute->data,
ale->attribute->data_size);
@@ -478,7 +478,7 @@ GNUNET_RECLAIM_attribute_serialize (
attr_ser->attribute_type = htons (attr->type);
attr_ser->attribute_flag = htonl (attr->flag);
attr_ser->attribute_id = attr->id;
- attr_ser->attestation_id = attr->attestation;
+ attr_ser->credential_id = attr->credential;
name_len = strlen (attr->name);
attr_ser->name_len = htons (name_len);
write_ptr = (char *) &attr_ser[1];
@@ -530,7 +530,7 @@ GNUNET_RECLAIM_attribute_deserialize (const char *data, size_t data_size,
attribute->type = ntohs (attr_ser->attribute_type);
attribute->flag = ntohl (attr_ser->attribute_flag);
attribute->id = attr_ser->attribute_id;
- attribute->attestation = attr_ser->attestation_id;
+ attribute->credential = attr_ser->credential_id;
attribute->data_size = data_len;
write_ptr = (char *) &attribute[1];
diff --git a/src/reclaim/reclaim_attribute.h b/src/reclaim/reclaim_attribute.h
index 203c88a34..285d75d83 100644
--- a/src/reclaim/reclaim_attribute.h
+++ b/src/reclaim/reclaim_attribute.h
@@ -51,9 +51,9 @@ struct Attribute
struct GNUNET_RECLAIM_Identifier attribute_id;
/**
- * Attestation ID
+ * Credential ID
*/
- struct GNUNET_RECLAIM_Identifier attestation_id;
+ struct GNUNET_RECLAIM_Identifier credential_id;
/**
* Name length
@@ -68,39 +68,6 @@ struct Attribute
// followed by data_size Attribute value data
};
-/**
- * Serialized attestation claim
- */
-struct Attestation
-{
- /**
- * Attestation type
- */
- uint32_t attestation_type GNUNET_PACKED;
-
- /**
- * Attestation flag
- */
- uint32_t attestation_flag GNUNET_PACKED;
-
- /**
- * Attestation ID
- */
- struct GNUNET_RECLAIM_Identifier attestation_id;
-
- /**
- * Name length
- */
- uint32_t name_len GNUNET_PACKED;
-
- /**
- * Data size
- */
- uint32_t data_size GNUNET_PACKED;
-
- // followed by data_size Attestation value data
-};
-
GNUNET_NETWORK_STRUCT_BEGIN
#endif
diff --git a/src/reclaim/reclaim_attestation.c b/src/reclaim/reclaim_credential.c
index 1f2b1890b..10b17ae96 100644
--- a/src/reclaim/reclaim_attestation.c
+++ b/src/reclaim/reclaim_credential.c
@@ -19,14 +19,14 @@
*/
/**
- * @file reclaim-attribute/reclaim_attestation.c
- * @brief helper library to manage identity attribute attestations
+ * @file reclaim/reclaim_credential.c
+ * @brief helper library to manage identity attribute credentials
* @author Martin Schanzenbach
*/
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_reclaim_plugin.h"
-#include "reclaim_attestation.h"
+#include "reclaim_credential.h"
/**
@@ -42,14 +42,14 @@ struct Plugin
/**
* Plugin API
*/
- struct GNUNET_RECLAIM_AttestationPluginFunctions *api;
+ struct GNUNET_RECLAIM_CredentialPluginFunctions *api;
};
/**
* Plugins
*/
-static struct Plugin **attest_plugins;
+static struct Plugin **credential_plugins;
/**
@@ -74,16 +74,16 @@ static int initialized;
static void
add_plugin (void *cls, const char *library_name, void *lib_ret)
{
- struct GNUNET_RECLAIM_AttestationPluginFunctions *api = lib_ret;
+ struct GNUNET_RECLAIM_CredentialPluginFunctions *api = lib_ret;
struct Plugin *plugin;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Loading attestation plugin `%s'\n",
+ "Loading credential plugin `%s'\n",
library_name);
plugin = GNUNET_new (struct Plugin);
plugin->api = api;
plugin->library_name = GNUNET_strdup (library_name);
- GNUNET_array_append (attest_plugins, num_plugins, plugin);
+ GNUNET_array_append (credential_plugins, num_plugins, plugin);
}
@@ -96,7 +96,7 @@ init ()
if (GNUNET_YES == initialized)
return;
initialized = GNUNET_YES;
- GNUNET_PLUGIN_load_all ("libgnunet_plugin_reclaim_attestation_",
+ GNUNET_PLUGIN_load_all ("libgnunet_plugin_reclaim_credential_",
NULL,
&add_plugin,
NULL);
@@ -104,13 +104,13 @@ init ()
/**
- * Convert an attestation type name to the corresponding number
+ * Convert an credential type name to the corresponding number
*
* @param typename name to convert
* @return corresponding number, UINT32_MAX on error
*/
uint32_t
-GNUNET_RECLAIM_attestation_typename_to_number (const char *typename)
+GNUNET_RECLAIM_credential_typename_to_number (const char *typename)
{
unsigned int i;
struct Plugin *plugin;
@@ -118,7 +118,7 @@ GNUNET_RECLAIM_attestation_typename_to_number (const char *typename)
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (UINT32_MAX !=
(ret = plugin->api->typename_to_number (plugin->api->cls,
typename)))
@@ -129,13 +129,13 @@ GNUNET_RECLAIM_attestation_typename_to_number (const char *typename)
/**
- * Convert an attestation type number to the corresponding attestation type string
+ * Convert an credential type number to the corresponding credential type string
*
* @param type number of a type
* @return corresponding typestring, NULL on error
*/
const char *
-GNUNET_RECLAIM_attestation_number_to_typename (uint32_t type)
+GNUNET_RECLAIM_credential_number_to_typename (uint32_t type)
{
unsigned int i;
struct Plugin *plugin;
@@ -144,7 +144,7 @@ GNUNET_RECLAIM_attestation_number_to_typename (uint32_t type)
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (NULL !=
(ret = plugin->api->number_to_typename (plugin->api->cls, type)))
return ret;
@@ -154,7 +154,7 @@ GNUNET_RECLAIM_attestation_number_to_typename (uint32_t type)
/**
- * Convert human-readable version of a 'claim' of an attestation to the binary
+ * Convert human-readable version of a 'claim' of an credential to the binary
* representation
*
* @param type type of the claim
@@ -164,7 +164,7 @@ GNUNET_RECLAIM_attestation_number_to_typename (uint32_t type)
* @return #GNUNET_OK on success
*/
int
-GNUNET_RECLAIM_attestation_string_to_value (uint32_t type,
+GNUNET_RECLAIM_credential_string_to_value (uint32_t type,
const char *s,
void **data,
size_t *data_size)
@@ -175,7 +175,7 @@ GNUNET_RECLAIM_attestation_string_to_value (uint32_t type,
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (GNUNET_OK == plugin->api->string_to_value (plugin->api->cls,
type,
s,
@@ -188,15 +188,15 @@ GNUNET_RECLAIM_attestation_string_to_value (uint32_t type,
/**
- * Convert the 'claim' of an attestation to a string
+ * Convert the 'claim' of an credential to a string
*
- * @param type the type of attestation
+ * @param type the type of credential
* @param data claim in binary encoding
* @param data_size number of bytes in @a data
* @return NULL on error, otherwise human-readable representation of the claim
*/
char *
-GNUNET_RECLAIM_attestation_value_to_string (uint32_t type,
+GNUNET_RECLAIM_credential_value_to_string (uint32_t type,
const void *data,
size_t data_size)
{
@@ -207,7 +207,7 @@ GNUNET_RECLAIM_attestation_value_to_string (uint32_t type,
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (NULL != (ret = plugin->api->value_to_string (plugin->api->cls,
type,
data,
@@ -219,27 +219,27 @@ GNUNET_RECLAIM_attestation_value_to_string (uint32_t type,
/**
- * Create a new attestation.
+ * Create a new credential.
*
- * @param attr_name the attestation name
- * @param type the attestation type
- * @param data the attestation value
- * @param data_size the attestation value size
- * @return the new attestation
+ * @param attr_name the credential name
+ * @param type the credential type
+ * @param data the credential value
+ * @param data_size the credential value size
+ * @return the new credential
*/
-struct GNUNET_RECLAIM_Attestation *
-GNUNET_RECLAIM_attestation_new (const char *attr_name,
+struct GNUNET_RECLAIM_Credential *
+GNUNET_RECLAIM_credential_new (const char *attr_name,
uint32_t type,
const void *data,
size_t data_size)
{
- struct GNUNET_RECLAIM_Attestation *attr;
+ struct GNUNET_RECLAIM_Credential *attr;
char *write_ptr;
char *attr_name_tmp = GNUNET_strdup (attr_name);
GNUNET_STRINGS_utf8_tolower (attr_name, attr_name_tmp);
- attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_Attestation)
+ attr = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_Credential)
+ strlen (attr_name_tmp) + 1 + data_size);
attr->type = type;
attr->data_size = data_size;
@@ -262,17 +262,17 @@ GNUNET_RECLAIM_attestation_new (const char *attr_name,
* @return the required buffer size
*/
size_t
-GNUNET_RECLAIM_attestation_list_serialize_get_size (
- const struct GNUNET_RECLAIM_AttestationList *attestations)
+GNUNET_RECLAIM_credential_list_serialize_get_size (
+ const struct GNUNET_RECLAIM_CredentialList *credentials)
{
- struct GNUNET_RECLAIM_AttestationListEntry *le;
+ struct GNUNET_RECLAIM_CredentialListEntry *le;
size_t len = 0;
- for (le = attestations->list_head; NULL != le; le = le->next)
+ for (le = credentials->list_head; NULL != le; le = le->next)
{
- GNUNET_assert (NULL != le->attestation);
- len += GNUNET_RECLAIM_attestation_serialize_get_size (le->attestation);
- len += sizeof(struct GNUNET_RECLAIM_AttestationListEntry);
+ GNUNET_assert (NULL != le->credential);
+ len += GNUNET_RECLAIM_credential_serialize_get_size (le->credential);
+ len += sizeof(struct GNUNET_RECLAIM_CredentialListEntry);
}
return len;
}
@@ -286,20 +286,20 @@ GNUNET_RECLAIM_attestation_list_serialize_get_size (
* @return length of serialized data
*/
size_t
-GNUNET_RECLAIM_attestation_list_serialize (
- const struct GNUNET_RECLAIM_AttestationList *attestations,
+GNUNET_RECLAIM_credential_list_serialize (
+ const struct GNUNET_RECLAIM_CredentialList *credentials,
char *result)
{
- struct GNUNET_RECLAIM_AttestationListEntry *le;
+ struct GNUNET_RECLAIM_CredentialListEntry *le;
size_t len;
size_t total_len;
char *write_ptr;
write_ptr = result;
total_len = 0;
- for (le = attestations->list_head; NULL != le; le = le->next)
+ for (le = credentials->list_head; NULL != le; le = le->next)
{
- GNUNET_assert (NULL != le->attestation);
- len = GNUNET_RECLAIM_attestation_serialize (le->attestation, write_ptr);
+ GNUNET_assert (NULL != le->credential);
+ len = GNUNET_RECLAIM_credential_serialize (le->credential, write_ptr);
total_len += len;
write_ptr += len;
}
@@ -308,43 +308,43 @@ GNUNET_RECLAIM_attestation_list_serialize (
/**
- * Deserialize an attestation list
+ * Deserialize an credential list
*
* @param data the serialized attribute list
* @param data_size the length of the serialized data
* @return a GNUNET_IDENTITY_PROVIDER_AttributeList, must be free'd by caller
*/
-struct GNUNET_RECLAIM_AttestationList *
-GNUNET_RECLAIM_attestation_list_deserialize (const char *data, size_t data_size)
+struct GNUNET_RECLAIM_CredentialList *
+GNUNET_RECLAIM_credential_list_deserialize (const char *data, size_t data_size)
{
- struct GNUNET_RECLAIM_AttestationList *al;
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
+ struct GNUNET_RECLAIM_CredentialList *al;
+ struct GNUNET_RECLAIM_CredentialListEntry *ale;
size_t att_len;
const char *read_ptr;
- al = GNUNET_new (struct GNUNET_RECLAIM_AttestationList);
+ al = GNUNET_new (struct GNUNET_RECLAIM_CredentialList);
if ((data_size < sizeof(struct
- Attestation)
- + sizeof(struct GNUNET_RECLAIM_AttestationListEntry)))
+ Credential)
+ + sizeof(struct GNUNET_RECLAIM_CredentialListEntry)))
return al;
read_ptr = data;
- while (((data + data_size) - read_ptr) >= sizeof(struct Attestation))
+ while (((data + data_size) - read_ptr) >= sizeof(struct Credential))
{
- ale = GNUNET_new (struct GNUNET_RECLAIM_AttestationListEntry);
- ale->attestation =
- GNUNET_RECLAIM_attestation_deserialize (read_ptr,
+ ale = GNUNET_new (struct GNUNET_RECLAIM_CredentialListEntry);
+ ale->credential =
+ GNUNET_RECLAIM_credential_deserialize (read_ptr,
data_size - (read_ptr - data));
- if (NULL == ale->attestation)
+ if (NULL == ale->credential)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Failed to deserialize malformed attestation.\n");
+ "Failed to deserialize malformed credential.\n");
GNUNET_free (ale);
return al;
}
GNUNET_CONTAINER_DLL_insert (al->list_head, al->list_tail, ale);
- att_len = GNUNET_RECLAIM_attestation_serialize_get_size (ale->attestation);
+ att_len = GNUNET_RECLAIM_credential_serialize_get_size (ale->credential);
read_ptr += att_len;
}
return al;
@@ -352,29 +352,29 @@ GNUNET_RECLAIM_attestation_list_deserialize (const char *data, size_t data_size)
/**
- * Make a (deep) copy of the attestation list
+ * Make a (deep) copy of the credential list
* @param attrs claim list to copy
* @return copied claim list
*/
-struct GNUNET_RECLAIM_AttestationList *
-GNUNET_RECLAIM_attestation_list_dup (
- const struct GNUNET_RECLAIM_AttestationList *al)
+struct GNUNET_RECLAIM_CredentialList *
+GNUNET_RECLAIM_credential_list_dup (
+ const struct GNUNET_RECLAIM_CredentialList *al)
{
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
- struct GNUNET_RECLAIM_AttestationListEntry *result_ale;
- struct GNUNET_RECLAIM_AttestationList *result;
+ struct GNUNET_RECLAIM_CredentialListEntry *ale;
+ struct GNUNET_RECLAIM_CredentialListEntry *result_ale;
+ struct GNUNET_RECLAIM_CredentialList *result;
- result = GNUNET_new (struct GNUNET_RECLAIM_AttestationList);
+ result = GNUNET_new (struct GNUNET_RECLAIM_CredentialList);
for (ale = al->list_head; NULL != ale; ale = ale->next)
{
- result_ale = GNUNET_new (struct GNUNET_RECLAIM_AttestationListEntry);
- GNUNET_assert (NULL != ale->attestation);
- result_ale->attestation =
- GNUNET_RECLAIM_attestation_new (ale->attestation->name,
- ale->attestation->type,
- ale->attestation->data,
- ale->attestation->data_size);
- result_ale->attestation->id = ale->attestation->id;
+ result_ale = GNUNET_new (struct GNUNET_RECLAIM_CredentialListEntry);
+ GNUNET_assert (NULL != ale->credential);
+ result_ale->credential =
+ GNUNET_RECLAIM_credential_new (ale->credential->name,
+ ale->credential->type,
+ ale->credential->data,
+ ale->credential->data_size);
+ result_ale->credential->id = ale->credential->id;
GNUNET_CONTAINER_DLL_insert (result->list_head,
result->list_tail,
result_ale);
@@ -384,21 +384,21 @@ GNUNET_RECLAIM_attestation_list_dup (
/**
- * Destroy attestation list
+ * Destroy credential list
*
* @param attrs list to destroy
*/
void
-GNUNET_RECLAIM_attestation_list_destroy (
- struct GNUNET_RECLAIM_AttestationList *al)
+GNUNET_RECLAIM_credential_list_destroy (
+ struct GNUNET_RECLAIM_CredentialList *al)
{
- struct GNUNET_RECLAIM_AttestationListEntry *ale;
- struct GNUNET_RECLAIM_AttestationListEntry *tmp_ale;
+ struct GNUNET_RECLAIM_CredentialListEntry *ale;
+ struct GNUNET_RECLAIM_CredentialListEntry *tmp_ale;
for (ale = al->list_head; NULL != ale;)
{
- if (NULL != ale->attestation)
- GNUNET_free (ale->attestation);
+ if (NULL != ale->credential)
+ GNUNET_free (ale->credential);
tmp_ale = ale;
ale = ale->next;
GNUNET_free (tmp_ale);
@@ -410,108 +410,108 @@ GNUNET_RECLAIM_attestation_list_destroy (
/**
* Get required size for serialization buffer
*
- * @param attr the attestation to serialize
+ * @param attr the credential to serialize
* @return the required buffer size
*/
size_t
-GNUNET_RECLAIM_attestation_serialize_get_size (
- const struct GNUNET_RECLAIM_Attestation *attestation)
+GNUNET_RECLAIM_credential_serialize_get_size (
+ const struct GNUNET_RECLAIM_Credential *credential)
{
- return sizeof(struct Attestation) + strlen (attestation->name)
- + attestation->data_size;
+ return sizeof(struct Credential) + strlen (credential->name)
+ + credential->data_size;
}
/**
- * Serialize an attestation
+ * Serialize an credential
*
- * @param attr the attestation to serialize
- * @param result the serialized attestation
+ * @param attr the credential to serialize
+ * @param result the serialized credential
* @return length of serialized data
*/
size_t
-GNUNET_RECLAIM_attestation_serialize (
- const struct GNUNET_RECLAIM_Attestation *attestation,
+GNUNET_RECLAIM_credential_serialize (
+ const struct GNUNET_RECLAIM_Credential *credential,
char *result)
{
size_t data_len_ser;
size_t name_len;
- struct Attestation *atts;
+ struct Credential *atts;
char *write_ptr;
- atts = (struct Attestation *) result;
- atts->attestation_type = htons (attestation->type);
- atts->attestation_flag = htonl (attestation->flag);
- atts->attestation_id = attestation->id;
- name_len = strlen (attestation->name);
+ atts = (struct Credential *) result;
+ atts->credential_type = htons (credential->type);
+ atts->credential_flag = htonl (credential->flag);
+ atts->credential_id = credential->id;
+ name_len = strlen (credential->name);
atts->name_len = htons (name_len);
write_ptr = (char *) &atts[1];
- GNUNET_memcpy (write_ptr, attestation->name, name_len);
+ GNUNET_memcpy (write_ptr, credential->name, name_len);
write_ptr += name_len;
// TODO plugin-ize
// data_len_ser = plugin->serialize_attribute_value (attr,
// &attr_ser[1]);
- data_len_ser = attestation->data_size;
- GNUNET_memcpy (write_ptr, attestation->data, attestation->data_size);
+ data_len_ser = credential->data_size;
+ GNUNET_memcpy (write_ptr, credential->data, credential->data_size);
atts->data_size = htons (data_len_ser);
- return sizeof(struct Attestation) + strlen (attestation->name)
- + attestation->data_size;
+ return sizeof(struct Credential) + strlen (credential->name)
+ + credential->data_size;
}
/**
- * Deserialize an attestation
+ * Deserialize an credential
*
- * @param data the serialized attestation
+ * @param data the serialized credential
* @param data_size the length of the serialized data
*
* @return a GNUNET_IDENTITY_PROVIDER_Attribute, must be free'd by caller
*/
-struct GNUNET_RECLAIM_Attestation *
-GNUNET_RECLAIM_attestation_deserialize (const char *data, size_t data_size)
+struct GNUNET_RECLAIM_Credential *
+GNUNET_RECLAIM_credential_deserialize (const char *data, size_t data_size)
{
- struct GNUNET_RECLAIM_Attestation *attestation;
- struct Attestation *atts;
+ struct GNUNET_RECLAIM_Credential *credential;
+ struct Credential *atts;
size_t data_len;
size_t name_len;
char *write_ptr;
- if (data_size < sizeof(struct Attestation))
+ if (data_size < sizeof(struct Credential))
return NULL;
- atts = (struct Attestation *) data;
+ atts = (struct Credential *) data;
data_len = ntohs (atts->data_size);
name_len = ntohs (atts->name_len);
- if (data_size < sizeof(struct Attestation) + data_len + name_len)
+ if (data_size < sizeof(struct Credential) + data_len + name_len)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Buffer too small to deserialize\n");
return NULL;
}
- attestation = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_Attestation)
+ credential = GNUNET_malloc (sizeof(struct GNUNET_RECLAIM_Credential)
+ data_len + name_len + 1);
- attestation->type = ntohs (atts->attestation_type);
- attestation->flag = ntohl (atts->attestation_flag);
- attestation->id = atts->attestation_id;
- attestation->data_size = data_len;
+ credential->type = ntohs (atts->credential_type);
+ credential->flag = ntohl (atts->credential_flag);
+ credential->id = atts->credential_id;
+ credential->data_size = data_len;
- write_ptr = (char *) &attestation[1];
+ write_ptr = (char *) &credential[1];
GNUNET_memcpy (write_ptr, &atts[1], name_len);
write_ptr[name_len] = '\0';
- attestation->name = write_ptr;
+ credential->name = write_ptr;
write_ptr += name_len + 1;
GNUNET_memcpy (write_ptr, (char *) &atts[1] + name_len,
- attestation->data_size);
- attestation->data = write_ptr;
- return attestation;
+ credential->data_size);
+ credential->data = write_ptr;
+ return credential;
}
struct GNUNET_RECLAIM_AttributeList*
-GNUNET_RECLAIM_attestation_get_attributes (const struct
- GNUNET_RECLAIM_Attestation *attest)
+GNUNET_RECLAIM_credential_get_attributes (const struct
+ GNUNET_RECLAIM_Credential *credential)
{
unsigned int i;
struct Plugin *plugin;
@@ -519,10 +519,10 @@ GNUNET_RECLAIM_attestation_get_attributes (const struct
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (NULL !=
(ret = plugin->api->get_attributes (plugin->api->cls,
- attest)))
+ credential)))
return ret;
}
return NULL;
@@ -530,8 +530,8 @@ GNUNET_RECLAIM_attestation_get_attributes (const struct
char*
-GNUNET_RECLAIM_attestation_get_issuer (const struct
- GNUNET_RECLAIM_Attestation *attest)
+GNUNET_RECLAIM_credential_get_issuer (const struct
+ GNUNET_RECLAIM_Credential *credential)
{
unsigned int i;
struct Plugin *plugin;
@@ -539,10 +539,10 @@ GNUNET_RECLAIM_attestation_get_issuer (const struct
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (NULL !=
(ret = plugin->api->get_issuer (plugin->api->cls,
- attest)))
+ credential)))
return ret;
}
return NULL;
@@ -550,8 +550,8 @@ GNUNET_RECLAIM_attestation_get_issuer (const struct
int
-GNUNET_RECLAIM_attestation_get_expiration (const struct
- GNUNET_RECLAIM_Attestation *attest,
+GNUNET_RECLAIM_credential_get_expiration (const struct
+ GNUNET_RECLAIM_Credential *credential,
struct GNUNET_TIME_Absolute*exp)
{
unsigned int i;
@@ -559,9 +559,9 @@ GNUNET_RECLAIM_attestation_get_expiration (const struct
init ();
for (i = 0; i < num_plugins; i++)
{
- plugin = attest_plugins[i];
+ plugin = credential_plugins[i];
if (GNUNET_OK != plugin->api->get_expiration (plugin->api->cls,
- attest,
+ credential,
exp))
continue;
return GNUNET_OK;
diff --git a/src/reclaim/reclaim_attestation.h b/src/reclaim/reclaim_credential.h
index 5747d8896..cd3a9539a 100644
--- a/src/reclaim/reclaim_attestation.h
+++ b/src/reclaim/reclaim_credential.h
@@ -19,34 +19,34 @@
*/
/**
* @author Martin Schanzenbach
- * @file reclaim-attribute/reclaim_attestation.h
- * @brief GNUnet reclaim identity attribute attestations
+ * @file reclaim/reclaim_credential.h
+ * @brief GNUnet reclaim identity attribute credentials
*
*/
-#ifndef RECLAIM_ATTESTATION_H
-#define RECLAIM_ATTESTATION_H
+#ifndef RECLAIM_CREDENTIAL_H
+#define RECLAIM_CREDENTIAL_H
#include "gnunet_reclaim_service.h"
/**
- * Serialized attestation claim
+ * Serialized credential claim
*/
-struct Attestation
+struct Credential
{
/**
- * Attestation type
+ * Credential type
*/
- uint32_t attestation_type;
+ uint32_t credential_type;
/**
- * Attestation flag
+ * Credential flag
*/
- uint32_t attestation_flag;
+ uint32_t credential_flag;
/**
- * Attestation ID
+ * Credential ID
*/
- struct GNUNET_RECLAIM_Identifier attestation_id;
+ struct GNUNET_RECLAIM_Identifier credential_id;
/**
* Name length
@@ -58,7 +58,7 @@ struct Attestation
*/
uint32_t data_size;
- // followed by data_size Attestation value data
+ // followed by data_size Credential value data
};
#endif