aboutsummaryrefslogtreecommitdiff
path: root/src/identity-provider/gnunet-idp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/identity-provider/gnunet-idp.c')
-rw-r--r--src/identity-provider/gnunet-idp.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/src/identity-provider/gnunet-idp.c b/src/identity-provider/gnunet-idp.c
index f85ede7aa..a8739e6f6 100644
--- a/src/identity-provider/gnunet-idp.c
+++ b/src/identity-provider/gnunet-idp.c
@@ -57,6 +57,11 @@ static char* attr_value;
57static char* issue_attrs; 57static char* issue_attrs;
58 58
59/** 59/**
60 * Ticket to consume
61 */
62static char* consume_ticket;
63
64/**
60 * Ego name 65 * Ego name
61 */ 66 */
62static char* ego_name; 67static char* ego_name;
@@ -96,6 +101,10 @@ static const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey;
96 */ 101 */
97static struct GNUNET_CRYPTO_EcdsaPublicKey rp_key; 102static struct GNUNET_CRYPTO_EcdsaPublicKey rp_key;
98 103
104/**
105 * Ticket to consume
106 */
107static struct GNUNET_IDENTITY_PROVIDER_Ticket2 ticket;
99 108
100/** 109/**
101 * Attribute list 110 * Attribute list
@@ -123,11 +132,10 @@ ticket_issue_cb (void* cls,
123{ 132{
124 char* ticket_str; 133 char* ticket_str;
125 if (NULL != ticket) { 134 if (NULL != ticket) {
126 ticket_str = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, 135 ticket_str = GNUNET_STRINGS_data_to_string_alloc (ticket,
127 sizeof (uint64_t)); 136 sizeof (struct GNUNET_IDENTITY_PROVIDER_Ticket2));
128 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 137 printf("%s\n",
129 "Got ticket, %s\n", 138 ticket_str);
130 ticket_str);
131 GNUNET_free (ticket_str); 139 GNUNET_free (ticket_str);
132 } 140 }
133 GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); 141 GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
@@ -150,6 +158,21 @@ store_attr_cont (void *cls,
150} 158}
151 159
152static void 160static void
161process_attrs (void *cls,
162 const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
163 const struct GNUNET_IDENTITY_PROVIDER_Attribute *attr)
164{
165 if (NULL == identity)
166 {
167 GNUNET_SCHEDULER_add_now (&do_cleanup, NULL);
168 return;
169 }
170 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
171 "%s: %s\n", attr->name, (char*)attr->data);
172}
173
174
175static void
153iter_error (void *cls) 176iter_error (void *cls)
154{ 177{
155 attr_iterator = NULL; 178 attr_iterator = NULL;
@@ -178,6 +201,14 @@ iter_finished (void *cls)
178 NULL); 201 NULL);
179 return; 202 return;
180 } 203 }
204 if (consume_ticket) {
205 idp_op = GNUNET_IDENTITY_PROVIDER_rp_ticket_consume (idp_handle,
206 pkey,
207 &ticket,
208 &process_attrs,
209 NULL);
210 return;
211 }
181 attr = GNUNET_IDENTITY_PROVIDER_attribute_new (attr_name, 212 attr = GNUNET_IDENTITY_PROVIDER_attribute_new (attr_name,
182 GNUNET_IDENTITY_PROVIDER_AT_STRING, 213 GNUNET_IDENTITY_PROVIDER_AT_STRING,
183 attr_value, 214 attr_value,
@@ -193,7 +224,7 @@ iter_finished (void *cls)
193 224
194static void 225static void
195iter_cb (void *cls, 226iter_cb (void *cls,
196 const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity, 227 const struct GNUNET_CRYPTO_EcdsaPublicKey *identity,
197 const struct GNUNET_IDENTITY_PROVIDER_Attribute *attr) 228 const struct GNUNET_IDENTITY_PROVIDER_Attribute *attr)
198{ 229{
199 struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *le; 230 struct GNUNET_IDENTITY_PROVIDER_AttributeListEntry *le;
@@ -243,6 +274,11 @@ ego_cb (void *cls,
243 GNUNET_CRYPTO_ecdsa_public_key_from_string (rp, 274 GNUNET_CRYPTO_ecdsa_public_key_from_string (rp,
244 strlen (rp), 275 strlen (rp),
245 &rp_key); 276 &rp_key);
277 if (NULL != consume_ticket)
278 GNUNET_STRINGS_string_to_data (consume_ticket,
279 strlen (consume_ticket),
280 &ticket,
281 sizeof (struct GNUNET_IDENTITY_PROVIDER_Ticket2));
246 282
247 attr_list = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_AttributeList); 283 attr_list = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_AttributeList);
248 284
@@ -317,6 +353,11 @@ main(int argc, char *const argv[])
317 NULL, 353 NULL,
318 gettext_noop ("Issue a ticket"), 354 gettext_noop ("Issue a ticket"),
319 &issue_attrs), 355 &issue_attrs),
356 GNUNET_GETOPT_option_string ('C',
357 "consume",
358 NULL,
359 gettext_noop ("Consume a ticket"),
360 &consume_ticket),
320 GNUNET_GETOPT_OPTION_END 361 GNUNET_GETOPT_OPTION_END
321 }; 362 };
322 return GNUNET_PROGRAM_run (argc, argv, "ct", 363 return GNUNET_PROGRAM_run (argc, argv, "ct",