84 *data_size = strlen (s) + 1;
102 { NULL, UINT32_MAX } };
160 char *val_str = NULL;
165 json_error_t *json_err = NULL;
170 const char *jwt_body = strtok (jwt_string, delim);
171 jwt_body = strtok (NULL, delim);
173 (
void **) &decoded_jwt);
176 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err);
179 const char *addr_key;
183 json_object_foreach (json_val, key, value) {
184 if (0 == strcmp (
"iss", key))
186 if (0 == strcmp (
"jti", key))
188 if (0 == strcmp (
"exp", key))
190 if (0 == strcmp (
"iat", key))
192 if (0 == strcmp (
"nbf", key))
194 if (0 == strcmp (
"aud", key))
196 if (0 == strcmp (
"address", key))
198 if (!json_is_object(value)) {
200 "address claim in wrong format!");
203 json_object_foreach (value, addr_key, addr_value) {
204 val_str = json_dumps (addr_value, JSON_ENCODE_ANY);
210 if (tmp[strlen(tmp)-1] ==
'"')
211 tmp[strlen(tmp)-1] =
'\0';
222 val_str = json_dumps (value, JSON_ENCODE_ANY);
228 if (tmp[strlen(tmp)-1] ==
'"')
229 tmp[strlen(tmp)-1] =
'\0';
238 json_decref (json_val);
286 const char *jwt_body;
294 json_error_t *json_err = NULL;
297 jwt_body = strtok (jwt_string, delim);
298 jwt_body = strtok (NULL, delim);
300 (
void **) &decoded_jwt);
301 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err);
304 if (NULL == json_val)
306 issuer_json = json_object_get (json_val,
"iss");
307 if ((NULL == issuer_json) || (! json_is_string (issuer_json))) {
308 json_decref (json_val);
312 json_decref (json_val);
364 const char *jwt_body;
371 json_error_t *json_err = NULL;
374 jwt_body = strtok (jwt_string, delim);
375 jwt_body = strtok (NULL, delim);
377 (
void **) &decoded_jwt);
378 json_val = json_loads (decoded_jwt, JSON_DECODE_ANY, json_err);
381 if (NULL == json_val)
383 exp_json = json_object_get (json_val,
"exp");
384 if ((NULL == exp_json) || (! json_is_integer (exp_json))) {
385 json_decref (json_val);
388 exp->
abs_value_us = json_integer_value (exp_json) * 1000 * 1000;
389 json_decref (json_val);
GNUNET_RECLAIM_PresentationTypenameToNumberFunction typename_to_number_p
Typename to number.
static const char * jwt_number_to_typename(void *cls, uint32_t type)
Convert a type number (i.e.
struct GNUNET_RECLAIM_AttributeList * jwt_parse_attributes(void *cls, const char *data, size_t data_size)
Parse a JWT and return the respective claim value as Attribute.
int jwt_get_expiration_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred, struct GNUNET_TIME_Absolute *exp)
Parse a JWT and return the expiration.
uint32_t type
Type/Format of Claim.
uint32_t type
Type/Format of Claim.
static size_t data_size
Number of bytes in data.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
size_t data_size
Number of bytes in data.
GNUNET_RECLAIM_PresentationNumberToTypenameFunction number_to_typename_p
Number to typename.
GNUNET_RECLAIM_PresentationGetIssuerFunction get_issuer_p
Attesation issuer.
GNUNET_RECLAIM_CredentialValueToStringFunction value_to_string
Conversion to string.
GNUNET_RECLAIM_CredentialGetExpirationFunction get_expiration
Expiration.
A list of GNUNET_RECLAIM_Attribute structures.
static struct @54 jwt_cred_name_map[]
Mapping of credential type numbers to human-readable credential type names.
const void * data
Binary value stored as credential value.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
uint64_t abs_value_us
The actual value.
GNUNET_RECLAIM_PresentationValueToStringFunction value_to_string_p
Conversion to string.
static char * value
Value of the record to add/remove.
static uint32_t jwt_typename_to_number(void *cls, const char *jwt_typename)
Convert a type name to the corresponding number.
struct GNUNET_RECLAIM_AttributeList * jwt_parse_attributes_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred)
Parse a JWT and return the respective claim value as Attribute.
char * jwt_get_issuer(void *cls, const char *data, size_t data_size)
Parse a JWT and return the issuer.
GNUNET_RECLAIM_CredentialGetIssuerFunction get_issuer
Attesation issuer.
int jwt_create_presentation(void *cls, const struct GNUNET_RECLAIM_Credential *cred, const struct GNUNET_RECLAIM_AttributeList *attrs, struct GNUNET_RECLAIM_Presentation **pres)
const void * data
Binary value stored as presentation value.
GNUNET_RECLAIM_CredentialToPresentation create_presentation
Get presentation.
int jwt_get_expiration(void *cls, const char *data, size_t data_size, struct GNUNET_TIME_Absolute *exp)
Parse a JWT and return the expiration.
int jwt_get_expiration_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred, struct GNUNET_TIME_Absolute *exp)
Parse a JWT and return the expiration.
void * cls
Closure for all of the callbacks.
GNUNET_RECLAIM_PresentationGetAttributesFunction get_attributes_p
Attesation attributes.
GNUNET_RECLAIM_PresentationGetExpirationFunction get_expiration_p
Expiration.
A credential presentation.
struct GNUNET_HashCode key
The key used in the DHT.
size_t data_size
Number of bytes in data.
static int jwt_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.
Each plugin is required to return a pointer to a struct of this type as the return value from its ent...
static char * jwt_value_to_string(void *cls, uint32_t type, const void *data, size_t data_size)
Convert the 'value' of an credential to a string.
GNUNET_RECLAIM_CredentialTypenameToNumberFunction typename_to_number
Typename to number.
#define GNUNET_strndup(a, length)
Wrapper around GNUNET_xstrndup_.
struct GNUNET_RECLAIM_Presentation * GNUNET_RECLAIM_presentation_new(uint32_t type, const void *data, size_t data_size)
#define GNUNET_log(kind,...)
struct GNUNET_RECLAIM_AttributeList * jwt_parse_attributes_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred)
Parse a JWT and return the respective claim value as Attribute.
GNUNET_RECLAIM_CredentialNumberToTypenameFunction number_to_typename
Number to typename.
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.
GNUNET_RECLAIM_CredentialStringToValueFunction string_to_value
Conversion to binary.
GNUNET_RECLAIM_PresentationStringToValueFunction string_to_value_p
Conversion to binary.
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
char * jwt_get_issuer_p(void *cls, const struct GNUNET_RECLAIM_Presentation *cred)
Parse a JWT and return the issuer.
Time for absolute times used by GNUnet, in microseconds.
void * libgnunet_plugin_reclaim_credential_jwt_done(void *cls)
Exit point from the plugin.
void * libgnunet_plugin_reclaim_credential_jwt_init(void *cls)
Entry point for the plugin.
uint32_t data
The data value.
char * jwt_get_issuer_c(void *cls, const struct GNUNET_RECLAIM_Credential *cred)
Parse a JWT and return the issuer.
size_t GNUNET_STRINGS_base64url_decode(const char *data, size_t len, void **out)
Decode from Base64url.
void * cls
Closure for all of the callbacks.
A JSON Web Token credential.
#define GNUNET_free(ptr)
Wrapper around free.
GNUNET_RECLAIM_CredentialGetAttributesFunction get_attributes
Attesation attributes.