33 #include <pabc/pabc.h>
104 { NULL, UINT32_MAX } };
149 char const *
const value,
157 "Found attribute in PABC credential: `%s': `%s'\n",
159 if (0 == strcmp (
key,
"expiration"))
161 if (0 == strcmp (
key,
"issuer"))
163 if (0 == strcmp (
key,
"subject"))
189 "Collecting PABC attributes...\n");
192 pabc_cred_inspect_credential (
data,
245 if (PABC_OK != pabc_cred_get_attr_by_name_from_cred (
data,
303 if (PABC_OK != pabc_cred_get_attr_by_name_from_cred (
data,
308 if (1 != sscanf (exp_str,
"%llu", &exp_i))
311 "Invalid expiration `%s'\n", exp_str);
316 "Converted expiration string `%s' to %llu",
367 struct pabc_context *
ctx = NULL;
368 struct pabc_user_context *usr_ctx = NULL;
369 struct pabc_public_parameters *pp = NULL;
370 struct pabc_credential *cred = NULL;
371 struct pabc_blinded_proof *
proof = NULL;
381 PABC_ASSERT (pabc_new_ctx (&
ctx));
386 "No issuer found in credential\n");
387 pabc_free_ctx (&
ctx);
391 "Got issuer for credential: %s\n", issuer);
396 "Failed to read public parameters.\n");
397 pabc_free_ctx (&
ctx);
401 if (PABC_OK != pabc_cred_get_attr_by_name_from_cred (
credential->data,
406 "Failed to get subject.\n");
407 pabc_free_ctx (&
ctx);
417 "Failed to read user context.\n");
418 pabc_free_public_parameters (
ctx, &pp);
422 status = pabc_new_credential (
ctx, pp, &cred);
426 "Failed to allocate credential.\n");
427 pabc_free_user_context (
ctx, pp, &usr_ctx);
428 pabc_free_public_parameters (
ctx, &pp);
436 "Failed to decode credential.\n");
437 pabc_free_credential (
ctx, pp, &cred);
438 pabc_free_user_context (
ctx, pp, &usr_ctx);
439 pabc_free_public_parameters (
ctx, &pp);
447 "Failed to allocate proof.\n");
448 pabc_free_credential (
ctx, pp, &cred);
449 pabc_free_user_context (
ctx, pp, &usr_ctx);
450 pabc_free_public_parameters (
ctx, &pp);
459 PABC_DISCLOSED, cred);
463 "Failed to configure proof.\n");
464 pabc_free_credential (
ctx, pp, &cred);
465 pabc_free_user_context (
ctx, pp, &usr_ctx);
466 pabc_free_public_parameters (
ctx, &pp);
476 "Failed to sign proof.\n");
478 pabc_free_credential (
ctx, pp, &cred);
479 pabc_free_user_context (
ctx, pp, &usr_ctx);
480 pabc_free_public_parameters (
ctx, &pp);
491 pabc_cred_encode_proof (
ctx, pp,
proof, userid, ppid, &json);
497 "Failed to serialize proof.\n");
499 pabc_free_credential (
ctx, pp, &cred);
500 pabc_free_user_context (
ctx, pp, &usr_ctx);
501 pabc_free_public_parameters (
ctx, &pp);
509 "Presentation: %s\n", json_enc);
514 strlen (json_enc) + 1);
516 PABC_FREE_NULL (json);
518 pabc_free_credential (
ctx, pp, &cred);
519 pabc_free_user_context (
ctx, pp, &usr_ctx);
520 pabc_free_public_parameters (
ctx, &pp);
static size_t data_size
Number of bytes in data.
static char * subject
Subject pubkey string.
struct GNUNET_HashCode key
The key used in the DHT.
uint32_t data
The data value.
uint16_t status
See PRISM_STATUS_*-constants.
static char * value
Value of the record to add/remove.
static struct GNUNET_RECLAIM_Identifier credential
Credential ID.
static struct GNUNET_DNSSTUB_Context * ctx
Context for DNS resolution.
Plugin API for reclaim attribute types.
#define GNUNET_log(kind,...)
GNUNET_GenericReturnValue
Named constants for return values.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
@ GNUNET_ERROR_TYPE_ERROR
@ GNUNET_ERROR_TYPE_DEBUG
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_strndup(a, length)
Wrapper around GNUNET_xstrndup_.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_free(ptr)
Wrapper around free.
void GNUNET_RECLAIM_attribute_list_add(struct GNUNET_RECLAIM_AttributeList *attrs, const char *attr_name, const struct GNUNET_RECLAIM_Identifier *credential, uint32_t type, const void *data, size_t data_size)
Add a new attribute to a claim list.
struct GNUNET_RECLAIM_Presentation * GNUNET_RECLAIM_presentation_new(uint32_t type, const void *data, size_t data_size)
@ GNUNET_RECLAIM_CREDENTIAL_TYPE_PABC
libpabc credential
@ GNUNET_RECLAIM_ATTRIBUTE_TYPE_STRING
String attribute.
size_t GNUNET_STRINGS_base64_encode(const void *in, size_t len, char **output)
Encode into Base64.
enum GNUNET_GenericReturnValue PABC_load_public_parameters(struct pabc_context *const ctx, char const *const pp_name, struct pabc_public_parameters **pp)
enum GNUNET_GenericReturnValue PABC_read_usr_ctx(char const *const usr_name, char const *const pp_name, struct pabc_context const *const ctx, struct pabc_public_parameters const *const pp, struct pabc_user_context **usr_ctx)
enum GNUNET_GenericReturnValue pabc_get_expiration_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred, struct GNUNET_TIME_Absolute *exp)
Parse a pabc and return the expiration.
char * pabc_get_issuer_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred)
Parse a pabc and return the issuer.
enum GNUNET_GenericReturnValue pabc_get_expiration_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred, struct GNUNET_TIME_Absolute *exp)
Parse a pabc and return the expiration.
char * pabc_get_issuer(void *cls, const char *data, size_t data_size)
Parse a pabc and return the issuer.
struct GNUNET_RECLAIM_AttributeList * pabc_parse_attributes(void *cls, const char *data, size_t data_size)
Parse a pabc and return the respective claim value as Attribute.
static uint32_t pabc_typename_to_number(void *cls, const char *pabc_typename)
Convert a type name to the corresponding number.
static void inspect_attrs(char const *const key, char const *const value, void *ctx)
int pabc_create_presentation(void *cls, const struct GNUNET_RECLAIM_Credential *credential, const struct GNUNET_RECLAIM_AttributeList *attrs, struct GNUNET_RECLAIM_Presentation **presentation)
static struct @56 pabc_cred_name_map[]
Mapping of credential type numbers to human-readable credential type names.
void * libgnunet_plugin_reclaim_credential_pabc_init(void *cls)
Entry point for the plugin.
struct GNUNET_RECLAIM_AttributeList * pabc_parse_attributes_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred)
Parse a pabc and return the respective claim value as Attribute.
void * libgnunet_plugin_reclaim_credential_pabc_done(void *cls)
Exit point from the plugin.
struct GNUNET_RECLAIM_AttributeList * pabc_parse_attributes_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred)
Parse a pabc and return the respective claim value as Attribute.
static const char * pabc_number_to_typename(void *cls, uint32_t type)
Convert a type number (i.e.
static int pabc_string_to_value(void *cls, uint32_t type, const char *s, void **data, size_t *data_size)
Convert human-readable version of a 'value' of an credential to the binary representation.
char * pabc_get_issuer_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred)
Parse a pabc and return the issuer.
static char * pabc_value_to_string(void *cls, uint32_t type, const void *data, size_t data_size)
Convert the 'value' of an credential to a string.
enum GNUNET_GenericReturnValue pabc_get_expiration(void *cls, const char *data, size_t data_size, struct GNUNET_TIME_Absolute *exp)
Parse a pabc and return the expiration.
struct GNUNET_RECLAIM_Attribute * attribute
The attribute claim.
struct GNUNET_RECLAIM_AttributeListEntry * next
DLL.
A list of GNUNET_RECLAIM_Attribute structures.
struct GNUNET_RECLAIM_AttributeListEntry * list_head
List head.
const char * name
The name of the attribute.
Each plugin is required to return a pointer to a struct of this type as the return value from its ent...
GNUNET_RECLAIM_CredentialValueToStringFunction value_to_string
Conversion to string.
GNUNET_RECLAIM_CredentialTypenameToNumberFunction typename_to_number
Typename to number.
GNUNET_RECLAIM_PresentationGetIssuerFunction get_issuer_p
Attesation issuer.
GNUNET_RECLAIM_CredentialNumberToTypenameFunction number_to_typename
Number to typename.
GNUNET_RECLAIM_CredentialGetIssuerFunction get_issuer
Attesation issuer.
GNUNET_RECLAIM_PresentationGetExpirationFunction get_expiration_p
Expiration.
GNUNET_RECLAIM_PresentationValueToStringFunction value_to_string_p
Conversion to string.
GNUNET_RECLAIM_CredentialStringToValueFunction string_to_value
Conversion to binary.
GNUNET_RECLAIM_CredentialGetExpirationFunction get_expiration
Expiration.
void * cls
Closure for all of the callbacks.
GNUNET_RECLAIM_CredentialGetAttributesFunction get_attributes
Attesation attributes.
GNUNET_RECLAIM_PresentationStringToValueFunction string_to_value_p
Conversion to binary.
GNUNET_RECLAIM_PresentationTypenameToNumberFunction typename_to_number_p
Typename to number.
GNUNET_RECLAIM_PresentationNumberToTypenameFunction number_to_typename_p
Number to typename.
GNUNET_RECLAIM_CredentialToPresentation create_presentation
Get presentation.
GNUNET_RECLAIM_PresentationGetAttributesFunction get_attributes_p
Attesation attributes.
uint32_t type
Type/Format of Claim.
const void * data
Binary value stored as credential value.
size_t data_size
Number of bytes in data.
A credential presentation.
const void * data
Binary value stored as presentation value.
uint32_t type
Type/Format of Claim.
size_t data_size
Number of bytes in data.
Time for absolute times used by GNUnet, in microseconds.
uint64_t abs_value_us
The actual value.
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model