diff options
author | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2017-09-17 21:44:35 +0200 |
---|---|---|
committer | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2017-09-17 21:44:35 +0200 |
commit | 3777e05a09dc9f375354bf01542f4fd6807e58c5 (patch) | |
tree | 88f288f032cce433c91bf2444a9262a8865e1b21 /src | |
parent | 7e7ada0b9a26394e20b8562421799370299bff0d (diff) | |
download | gnunet-3777e05a09dc9f375354bf01542f4fd6807e58c5.tar.gz gnunet-3777e05a09dc9f375354bf01542f4fd6807e58c5.zip |
-minor fixed, start consume
Diffstat (limited to 'src')
-rw-r--r-- | src/identity-provider/gnunet-idp.c | 8 | ||||
-rw-r--r-- | src/identity-provider/gnunet-service-identity-provider.c | 12 | ||||
-rw-r--r-- | src/identity-provider/identity_provider.h | 25 | ||||
-rw-r--r-- | src/identity-provider/identity_provider_api.c | 51 | ||||
-rw-r--r-- | src/identity-provider/plugin_gnsrecord_identity_provider.c | 6 | ||||
-rw-r--r-- | src/include/gnunet_identity_provider_service.h | 2 |
6 files changed, 87 insertions, 17 deletions
diff --git a/src/identity-provider/gnunet-idp.c b/src/identity-provider/gnunet-idp.c index fdd4720e0..f85ede7aa 100644 --- a/src/identity-provider/gnunet-idp.c +++ b/src/identity-provider/gnunet-idp.c | |||
@@ -138,9 +138,6 @@ store_attr_cont (void *cls, | |||
138 | int32_t success, | 138 | int32_t success, |
139 | const char*emsg) | 139 | const char*emsg) |
140 | { | 140 | { |
141 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
142 | "Store continuation\n"); | ||
143 | |||
144 | if (GNUNET_SYSERR == success) { | 141 | if (GNUNET_SYSERR == success) { |
145 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 142 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
146 | "%s\n", emsg); | 143 | "%s\n", emsg); |
@@ -166,8 +163,6 @@ iter_finished (void *cls) | |||
166 | { | 163 | { |
167 | struct GNUNET_IDENTITY_PROVIDER_Attribute *attr; | 164 | struct GNUNET_IDENTITY_PROVIDER_Attribute *attr; |
168 | 165 | ||
169 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
170 | "Attribute collection finished!\n"); | ||
171 | attr_iterator = NULL; | 166 | attr_iterator = NULL; |
172 | if (list) { | 167 | if (list) { |
173 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 168 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
@@ -187,9 +182,6 @@ iter_finished (void *cls) | |||
187 | GNUNET_IDENTITY_PROVIDER_AT_STRING, | 182 | GNUNET_IDENTITY_PROVIDER_AT_STRING, |
188 | attr_value, | 183 | attr_value, |
189 | strlen (attr_value)); | 184 | strlen (attr_value)); |
190 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | ||
191 | "Adding attribute\n"); | ||
192 | |||
193 | idp_op = GNUNET_IDENTITY_PROVIDER_attribute_store (idp_handle, | 185 | idp_op = GNUNET_IDENTITY_PROVIDER_attribute_store (idp_handle, |
194 | pkey, | 186 | pkey, |
195 | attr, | 187 | attr, |
diff --git a/src/identity-provider/gnunet-service-identity-provider.c b/src/identity-provider/gnunet-service-identity-provider.c index b481c00c0..0eb6599e6 100644 --- a/src/identity-provider/gnunet-service-identity-provider.c +++ b/src/identity-provider/gnunet-service-identity-provider.c | |||
@@ -620,7 +620,7 @@ bootstrap_store_task (void *cls) | |||
620 | rd[0].data_size = GNUNET_CRYPTO_cpabe_serialize_master_key (abh->abe_key, | 620 | rd[0].data_size = GNUNET_CRYPTO_cpabe_serialize_master_key (abh->abe_key, |
621 | (void**)&rd[0].data); | 621 | (void**)&rd[0].data); |
622 | rd[0].record_type = GNUNET_GNSRECORD_TYPE_ABE_MASTER; | 622 | rd[0].record_type = GNUNET_GNSRECORD_TYPE_ABE_MASTER; |
623 | rd[0].flags = GNUNET_GNSRECORD_RF_NONE | GNUNET_GNSRECORD_RF_PRIVATE; | 623 | rd[0].flags = GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION | GNUNET_GNSRECORD_RF_PRIVATE; |
624 | rd[0].expiration_time = GNUNET_TIME_UNIT_HOURS.rel_value_us; //TODO sane? | 624 | rd[0].expiration_time = GNUNET_TIME_UNIT_HOURS.rel_value_us; //TODO sane? |
625 | abh->ns_qe = GNUNET_NAMESTORE_records_store (ns_handle, | 625 | abh->ns_qe = GNUNET_NAMESTORE_records_store (ns_handle, |
626 | &abh->identity, | 626 | &abh->identity, |
@@ -1869,7 +1869,7 @@ attr_store_cont (void *cls, | |||
1869 | return; | 1869 | return; |
1870 | } | 1870 | } |
1871 | 1871 | ||
1872 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 1872 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1873 | "Sending ATTRIBUTE_STORE_RESPONSE message\n"); | 1873 | "Sending ATTRIBUTE_STORE_RESPONSE message\n"); |
1874 | env = GNUNET_MQ_msg (acr_msg, | 1874 | env = GNUNET_MQ_msg (acr_msg, |
1875 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_STORE_RESPONSE); | 1875 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_ATTRIBUTE_STORE_RESPONSE); |
@@ -1888,7 +1888,7 @@ attr_store_task (void *cls) | |||
1888 | char* buf; | 1888 | char* buf; |
1889 | size_t buf_size; | 1889 | size_t buf_size; |
1890 | 1890 | ||
1891 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 1891 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1892 | "Storing attribute\n"); | 1892 | "Storing attribute\n"); |
1893 | buf_size = attribute_serialize_get_size (as_handle->attribute); | 1893 | buf_size = attribute_serialize_get_size (as_handle->attribute); |
1894 | buf = GNUNET_malloc (buf_size); | 1894 | buf = GNUNET_malloc (buf_size); |
@@ -1924,7 +1924,7 @@ static void | |||
1924 | store_after_abe_bootstrap (void *cls, | 1924 | store_after_abe_bootstrap (void *cls, |
1925 | struct GNUNET_CRYPTO_AbeMasterKey *abe_key) | 1925 | struct GNUNET_CRYPTO_AbeMasterKey *abe_key) |
1926 | { | 1926 | { |
1927 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 1927 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1928 | "Finished ABE bootstrap\n"); | 1928 | "Finished ABE bootstrap\n"); |
1929 | struct AttributeStoreHandle *ash = cls; | 1929 | struct AttributeStoreHandle *ash = cls; |
1930 | ash->abe_key = abe_key; | 1930 | ash->abe_key = abe_key; |
@@ -1969,7 +1969,7 @@ handle_attribute_store_message (void *cls, | |||
1969 | struct AttributeStoreHandle *as_handle; | 1969 | struct AttributeStoreHandle *as_handle; |
1970 | struct IdpClient *idp = cls; | 1970 | struct IdpClient *idp = cls; |
1971 | size_t data_len; | 1971 | size_t data_len; |
1972 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 1972 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1973 | "Received ATTRIBUTE_STORE message\n"); | 1973 | "Received ATTRIBUTE_STORE message\n"); |
1974 | 1974 | ||
1975 | data_len = ntohs (sam->attr_len); | 1975 | data_len = ntohs (sam->attr_len); |
@@ -2059,7 +2059,7 @@ attr_iter_cb (void *cls, | |||
2059 | key, | 2059 | key, |
2060 | (void**)&attr_ser); | 2060 | (void**)&attr_ser); |
2061 | GNUNET_CRYPTO_cpabe_delete_key (key); | 2061 | GNUNET_CRYPTO_cpabe_delete_key (key); |
2062 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 2062 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
2063 | "Found attribute: %s\n", label); | 2063 | "Found attribute: %s\n", label); |
2064 | env = GNUNET_MQ_msg_extra (arm, | 2064 | env = GNUNET_MQ_msg_extra (arm, |
2065 | msg_extra_len, | 2065 | msg_extra_len, |
diff --git a/src/identity-provider/identity_provider.h b/src/identity-provider/identity_provider.h index 098885e3c..9b6fe6237 100644 --- a/src/identity-provider/identity_provider.h +++ b/src/identity-provider/identity_provider.h | |||
@@ -367,6 +367,31 @@ struct TicketResultMessage | |||
367 | uint32_t id GNUNET_PACKED; | 367 | uint32_t id GNUNET_PACKED; |
368 | 368 | ||
369 | }; | 369 | }; |
370 | |||
371 | /** | ||
372 | * Ticket consume message | ||
373 | */ | ||
374 | struct ConsumeTicketMessage | ||
375 | { | ||
376 | /** | ||
377 | * Type will be #GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ISSUE | ||
378 | */ | ||
379 | struct GNUNET_MessageHeader header; | ||
380 | |||
381 | /** | ||
382 | * Unique identifier for this request (for key collisions). | ||
383 | */ | ||
384 | uint32_t id GNUNET_PACKED; | ||
385 | |||
386 | /** | ||
387 | * Identity. | ||
388 | */ | ||
389 | struct GNUNET_CRYPTO_EcdsaPrivateKey identity; | ||
390 | |||
391 | //Followed by a serialized ticket | ||
392 | }; | ||
393 | |||
394 | |||
370 | GNUNET_NETWORK_STRUCT_END | 395 | GNUNET_NETWORK_STRUCT_END |
371 | 396 | ||
372 | #endif | 397 | #endif |
diff --git a/src/identity-provider/identity_provider_api.c b/src/identity-provider/identity_provider_api.c index 74d15bbe0..25c14793d 100644 --- a/src/identity-provider/identity_provider_api.c +++ b/src/identity-provider/identity_provider_api.c | |||
@@ -81,6 +81,11 @@ struct GNUNET_IDENTITY_PROVIDER_Operation | |||
81 | GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus as_cb; | 81 | GNUNET_IDENTITY_PROVIDER_ContinuationWithStatus as_cb; |
82 | 82 | ||
83 | /** | 83 | /** |
84 | * Attribute result callback | ||
85 | */ | ||
86 | GNUNET_IDENTITY_PROVIDER_AttributeResult ar_cb; | ||
87 | |||
88 | /** | ||
84 | * Ticket result callback | 89 | * Ticket result callback |
85 | */ | 90 | */ |
86 | GNUNET_IDENTITY_PROVIDER_TicketCallback tr_cb; | 91 | GNUNET_IDENTITY_PROVIDER_TicketCallback tr_cb; |
@@ -1188,6 +1193,52 @@ GNUNET_IDENTITY_PROVIDER_idp_ticket_issue (struct GNUNET_IDENTITY_PROVIDER_Handl | |||
1188 | return op; | 1193 | return op; |
1189 | } | 1194 | } |
1190 | 1195 | ||
1196 | /** | ||
1197 | * Consumes an issued ticket. The ticket is persisted | ||
1198 | * and used to retrieve identity information from the issuer | ||
1199 | * | ||
1200 | * @param id the identity provider to use | ||
1201 | * @param identity the identity that is the subject of the issued ticket (the relying party) | ||
1202 | * @param ticket the issued ticket to consume | ||
1203 | * @param cb the callback to call | ||
1204 | * @param cb_cls the callback closure | ||
1205 | * @return handle to abort the operation | ||
1206 | */ | ||
1207 | struct GNUNET_IDENTITY_PROVIDER_Operation * | ||
1208 | GNUNET_IDENTITY_PROVIDER_rp_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *h, | ||
1209 | const struct GNUNET_CRYPTO_EcdsaPrivateKey * identity, | ||
1210 | const struct GNUNET_IDENTITY_PROVIDER_Ticket2 *ticket, | ||
1211 | GNUNET_IDENTITY_PROVIDER_AttributeResult cb, | ||
1212 | void *cb_cls) | ||
1213 | { | ||
1214 | struct GNUNET_IDENTITY_PROVIDER_Operation *op; | ||
1215 | struct ConsumeTicketMessage *ctm; | ||
1216 | |||
1217 | op = GNUNET_new (struct GNUNET_IDENTITY_PROVIDER_Operation); | ||
1218 | op->h = h; | ||
1219 | op->ar_cb = cb; | ||
1220 | op->cls = cb_cls; | ||
1221 | op->r_id = h->r_id_gen++; | ||
1222 | GNUNET_CONTAINER_DLL_insert_tail (h->op_head, | ||
1223 | h->op_tail, | ||
1224 | op); | ||
1225 | op->env = GNUNET_MQ_msg_extra (ctm, | ||
1226 | sizeof (const struct GNUNET_IDENTITY_PROVIDER_Ticket2), | ||
1227 | GNUNET_MESSAGE_TYPE_IDENTITY_PROVIDER_TICKET_ISSUE); | ||
1228 | ctm->identity = *identity; | ||
1229 | ctm->id = htonl (op->r_id); | ||
1230 | |||
1231 | GNUNET_memcpy ((char*)&ctm[1], | ||
1232 | ticket, | ||
1233 | sizeof (const struct GNUNET_IDENTITY_PROVIDER_Ticket2)); | ||
1234 | |||
1235 | if (NULL != h->mq) | ||
1236 | GNUNET_MQ_send_copy (h->mq, | ||
1237 | op->env); | ||
1238 | return op; | ||
1239 | |||
1240 | } | ||
1241 | |||
1191 | 1242 | ||
1192 | 1243 | ||
1193 | 1244 | ||
diff --git a/src/identity-provider/plugin_gnsrecord_identity_provider.c b/src/identity-provider/plugin_gnsrecord_identity_provider.c index 1f1973783..cee0a9506 100644 --- a/src/identity-provider/plugin_gnsrecord_identity_provider.c +++ b/src/identity-provider/plugin_gnsrecord_identity_provider.c | |||
@@ -175,6 +175,8 @@ static struct { | |||
175 | } name_map[] = { | 175 | } name_map[] = { |
176 | { "ID_ATTR", GNUNET_GNSRECORD_TYPE_ID_ATTR }, | 176 | { "ID_ATTR", GNUNET_GNSRECORD_TYPE_ID_ATTR }, |
177 | { "ID_TOKEN", GNUNET_GNSRECORD_TYPE_ID_TOKEN }, | 177 | { "ID_TOKEN", GNUNET_GNSRECORD_TYPE_ID_TOKEN }, |
178 | { "ABE_KEY", GNUNET_GNSRECORD_TYPE_ABE_KEY }, | ||
179 | { "ABE_MASTER", GNUNET_GNSRECORD_TYPE_ABE_MASTER }, | ||
178 | { "ID_TOKEN_METADATA", GNUNET_GNSRECORD_TYPE_ID_TOKEN_METADATA }, | 180 | { "ID_TOKEN_METADATA", GNUNET_GNSRECORD_TYPE_ID_TOKEN_METADATA }, |
179 | { NULL, UINT32_MAX } | 181 | { NULL, UINT32_MAX } |
180 | }; | 182 | }; |
@@ -229,7 +231,7 @@ number_to_typename (void *cls, | |||
229 | * @return the exported block API | 231 | * @return the exported block API |
230 | */ | 232 | */ |
231 | void * | 233 | void * |
232 | libgnunet_plugin_gnsrecord_identity_init (void *cls) | 234 | libgnunet_plugin_gnsrecord_identity_provider_init (void *cls) |
233 | { | 235 | { |
234 | struct GNUNET_GNSRECORD_PluginFunctions *api; | 236 | struct GNUNET_GNSRECORD_PluginFunctions *api; |
235 | 237 | ||
@@ -249,7 +251,7 @@ libgnunet_plugin_gnsrecord_identity_init (void *cls) | |||
249 | * @return NULL | 251 | * @return NULL |
250 | */ | 252 | */ |
251 | void * | 253 | void * |
252 | libgnunet_plugin_gnsrecord_identity_done (void *cls) | 254 | libgnunet_plugin_gnsrecord_identity_provider_done (void *cls) |
253 | { | 255 | { |
254 | struct GNUNET_GNSRECORD_PluginFunctions *api = cls; | 256 | struct GNUNET_GNSRECORD_PluginFunctions *api = cls; |
255 | 257 | ||
diff --git a/src/include/gnunet_identity_provider_service.h b/src/include/gnunet_identity_provider_service.h index 7aaae2e85..4b1dcd641 100644 --- a/src/include/gnunet_identity_provider_service.h +++ b/src/include/gnunet_identity_provider_service.h | |||
@@ -403,7 +403,7 @@ GNUNET_IDENTITY_PROVIDER_idp_ticket_revoke (struct GNUNET_IDENTITY_PROVIDER_Hand | |||
403 | struct GNUNET_IDENTITY_PROVIDER_Operation * | 403 | struct GNUNET_IDENTITY_PROVIDER_Operation * |
404 | GNUNET_IDENTITY_PROVIDER_rp_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *id, | 404 | GNUNET_IDENTITY_PROVIDER_rp_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *id, |
405 | const struct GNUNET_CRYPTO_EcdsaPrivateKey * identity, | 405 | const struct GNUNET_CRYPTO_EcdsaPrivateKey * identity, |
406 | const struct GNUNET_IDENTITY_PROVIDER_Ticket *ticket, | 406 | const struct GNUNET_IDENTITY_PROVIDER_Ticket2 *ticket, |
407 | GNUNET_IDENTITY_PROVIDER_AttributeResult cb, | 407 | GNUNET_IDENTITY_PROVIDER_AttributeResult cb, |
408 | void *cb_cls); | 408 | void *cb_cls); |
409 | 409 | ||