46 #define GNUNET_DID_DEFAULT_DID_DOCUMENT_EXPIRATION_TIME "1d"
167 printf (
"%s\n", did_document);
169 printf (
"An error occured: %s\n", did_document);
185 printf (
"Set DID option to resolve DID\n");
193 printf (
"An error occured while resoling the DID\n");
234 if (event->
cont != NULL)
236 event->cont (event->
cls);
247 printf (
"Something went wrong when deleting the DID Document\n");
288 printf (
"Remove requieres an ego option\n");
294 event = malloc (
sizeof(*event));
319 printf (
"DID has been created.\n%s\n", (
char *)
cls);
325 printf (
"An error occured while creating the DID.\n");
365 printf (
"Ego was not found. Creating new one.\n");
376 void *
cls = malloc (strlen (
did) + 1);
388 printf (
"Failed to read given expiration time\n");
403 printf (
"An error occured while creating the DID.\n");
421 printf (
"Set the Ego argument to create a new DID(-Document)\n");
473 "Set the DID Document and expiration time argument to replace the DID Document\n");
528 printf (
"%s:\n\t%s\n",
name, did_str);
537 printf (
"%s:\n\t%s\n",
name, did_str);
581 main (
int argc,
char *
const argv[])
587 "Create a DID Document and display its DID"),
592 "Get the DID Document associated with the given DID"),
615 "The Decentralized Identity (DID)"),
621 "The DID Document to store in GNUNET"),
632 "The time until the DID Document is going to expire (e.g. 5d)"),
640 "Manage Decentralized Identities (DIDs)",
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
struct GNUNET_GETOPT_CommandLineOption options[]
const char * GNUNET_ErrorCode_get_hint(enum GNUNET_ErrorCode ec)
Returns a hint for a given error code.
GNUNET_ErrorCode
Taler error codes.
@ GNUNET_EC_NONE
No error (success).
enum GNUNET_GenericReturnValue DID_resolve(const char *did, struct GNUNET_GNS_Handle *gns_handle, DID_resolve_callback *cont, void *cls)
Resolve a DID.
enum GNUNET_GenericReturnValue DID_create(const struct GNUNET_IDENTITY_Ego *ego, const char *did_document, const struct GNUNET_TIME_Relative *expire_time, struct GNUNET_NAMESTORE_Handle *namestore_handle, DID_action_callback *cont, void *cls)
Creates a DID and saves DID Document in Namestore.
Core functionality for GNUNET Decentralized Identifier.
#define DID_DOCUMENT_DEFAULT_EXPIRATION_TIME
char * DID_identity_to_did(struct GNUNET_IDENTITY_Ego *ego)
Generate a DID for a given gnunet EGO.
helper library for DID related functions
#define gettext_noop(String)
static int replace
Replace DID Document Flag.
static void create_did_ego_lockup_cb()
static struct GNUNET_GNS_Handle * gns_handle
static char * egoname
Ego Attribut String.
static char * didd
DID Document Attribut String.
static void print_did_document(enum GNUNET_GenericReturnValue status, char *did_document, void *cls)
GNS lookup callback.
static void replace_did_document_remove_cb(void *cls)
Replace a DID Document.
static int show_all
Show DID for Ego Flag.
static char * expire
DID Document expiration Date Attribut String.
static void remove_did_document_ego_lookup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Callback called after the ego has been locked up.
static void cleanup(void *cls)
Disconnect and shutdown.
static void create_did_cb(enum GNUNET_GenericReturnValue status, void *cls)
Create a DID(-Document).
static int remove_did
Remove DID Document Flag.
static int ego_exists
Give ego exists.
static struct GNUNET_NAMESTORE_Handle * namestore_handle
static const struct GNUNET_CONFIGURATION_Handle * my_cfg
static int ret
return value
static void remove_did_document_namestore_cb(void *cls, enum GNUNET_ErrorCode ec)
Implements the GNUNET_NAMESTORE_ContinuationWithStatus Calls the callback function and cls in the eve...
static void create_did_ego_create_cb(void *cls, const struct GNUNET_IDENTITY_PrivateKey *pk, enum GNUNET_ErrorCode ec)
Create a DID(-Document) - Called after a new Identity has been created.
static void post_ego_iteration(void *cls)
static void remove_did_document(remove_did_document_callback cont, void *cls)
Remove a DID Document.
static void replace_did_document_ego_lookup_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Replace a DID Docuemnt.
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c)
void(* remove_did_document_callback)(void *cls)
Signature of a callback function that is called after a did has been removed.
static int show
Show DID for Ego Flag.
static int get
Get DID Documement for DID Flag.
static int create
Create DID Document Flag.
static void resolve_did()
Resolve a DID given by the user.
static void replace_did_document()
Replace a DID Docuemnt.
static struct GNUNET_IDENTITY_Handle * identity_handle
static void process_dids(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
static void create_did()
Create a DID(-Document).
static char * did
DID Attribut String.
int main(int argc, char *const argv[])
uint16_t status
See PRISM_STATUS_*-constants.
struct GNUNET_IDENTITY_PrivateKey pk
Private key from command line option, or NULL.
static struct GNUNET_DNSSTUB_Context * ctx
Context for DNS resolution.
API that can be used to manipulate GNS record data.
Identity service; implements identity management for GNUnet.
API that can be used to store naming information on a GNUnet node;.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_string(char shortName, const char *name, const char *argumentHelp, const char *description, char **str)
Allow user to specify a string.
void GNUNET_GNS_disconnect(struct GNUNET_GNS_Handle *handle)
Shutdown connection with the GNS service.
struct GNUNET_GNS_Handle * GNUNET_GNS_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Initialize the connection with the GNS service.
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
const struct GNUNET_IDENTITY_PrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_create(struct GNUNET_IDENTITY_Handle *h, const char *name, const struct GNUNET_IDENTITY_PrivateKey *privkey, enum GNUNET_IDENTITY_KeyType ktype, GNUNET_IDENTITY_CreateContinuation cont, void *cont_cls)
Create a new ego with the given name.
struct GNUNET_IDENTITY_Handle * GNUNET_IDENTITY_connect(const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_IDENTITY_Callback cb, void *cb_cls)
Connect to the identity service.
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
struct GNUNET_IDENTITY_EgoLookup * GNUNET_IDENTITY_ego_lookup(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *name, GNUNET_IDENTITY_EgoCallback cb, void *cb_cls)
Lookup an ego by name.
@ GNUNET_IDENTITY_TYPE_EDDSA
EDDSA identity.
GNUNET_GenericReturnValue
Named constants for return values.
#define GNUNET_free(ptr)
Wrapper around free.
void GNUNET_NAMESTORE_disconnect(struct GNUNET_NAMESTORE_Handle *h)
Disconnect from the namestore service (and free associated resources).
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_store(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_PrivateKey *pkey, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd, GNUNET_NAMESTORE_ContinuationWithStatus cont, void *cont_cls)
Store an item in the namestore.
struct GNUNET_NAMESTORE_Handle * GNUNET_NAMESTORE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namestore service.
enum GNUNET_GenericReturnValue GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration,...
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_relative(const char *fancy_time, struct GNUNET_TIME_Relative *rtime)
Convert a given fancy human-readable time to our internal representation.
A Structure containing a cont and cls.
remove_did_document_callback cont
Definition of a command line option.
Connection to the GNS service.
A private key for an identity as per LSD0001.
Connection to the NAMESTORE service.
Time for relative time used by GNUnet, in microseconds.