diff options
Diffstat (limited to 'src/identity-provider/gnunet-idp.c')
-rw-r--r-- | src/identity-provider/gnunet-idp.c | 53 |
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; | |||
57 | static char* issue_attrs; | 57 | static char* issue_attrs; |
58 | 58 | ||
59 | /** | 59 | /** |
60 | * Ticket to consume | ||
61 | */ | ||
62 | static char* consume_ticket; | ||
63 | |||
64 | /** | ||
60 | * Ego name | 65 | * Ego name |
61 | */ | 66 | */ |
62 | static char* ego_name; | 67 | static char* ego_name; |
@@ -96,6 +101,10 @@ static const struct GNUNET_CRYPTO_EcdsaPrivateKey *pkey; | |||
96 | */ | 101 | */ |
97 | static struct GNUNET_CRYPTO_EcdsaPublicKey rp_key; | 102 | static struct GNUNET_CRYPTO_EcdsaPublicKey rp_key; |
98 | 103 | ||
104 | /** | ||
105 | * Ticket to consume | ||
106 | */ | ||
107 | static 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 | ||
152 | static void | 160 | static void |
161 | process_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 | |||
175 | static void | ||
153 | iter_error (void *cls) | 176 | iter_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 | ||
194 | static void | 225 | static void |
195 | iter_cb (void *cls, | 226 | iter_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", |