aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2017-09-17 21:44:35 +0200
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2017-09-17 21:44:35 +0200
commit3777e05a09dc9f375354bf01542f4fd6807e58c5 (patch)
tree88f288f032cce433c91bf2444a9262a8865e1b21 /src
parent7e7ada0b9a26394e20b8562421799370299bff0d (diff)
downloadgnunet-3777e05a09dc9f375354bf01542f4fd6807e58c5.tar.gz
gnunet-3777e05a09dc9f375354bf01542f4fd6807e58c5.zip
-minor fixed, start consume
Diffstat (limited to 'src')
-rw-r--r--src/identity-provider/gnunet-idp.c8
-rw-r--r--src/identity-provider/gnunet-service-identity-provider.c12
-rw-r--r--src/identity-provider/identity_provider.h25
-rw-r--r--src/identity-provider/identity_provider_api.c51
-rw-r--r--src/identity-provider/plugin_gnsrecord_identity_provider.c6
-rw-r--r--src/include/gnunet_identity_provider_service.h2
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
1924store_after_abe_bootstrap (void *cls, 1924store_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 */
374struct 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
370GNUNET_NETWORK_STRUCT_END 395GNUNET_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 */
1207struct GNUNET_IDENTITY_PROVIDER_Operation *
1208GNUNET_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 */
231void * 233void *
232libgnunet_plugin_gnsrecord_identity_init (void *cls) 234libgnunet_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 */
251void * 253void *
252libgnunet_plugin_gnsrecord_identity_done (void *cls) 254libgnunet_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
403struct GNUNET_IDENTITY_PROVIDER_Operation * 403struct GNUNET_IDENTITY_PROVIDER_Operation *
404GNUNET_IDENTITY_PROVIDER_rp_ticket_consume (struct GNUNET_IDENTITY_PROVIDER_Handle *id, 404GNUNET_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