diff options
Diffstat (limited to 'src/credential')
-rw-r--r-- | src/credential/gnunet-service-credential.c | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/src/credential/gnunet-service-credential.c b/src/credential/gnunet-service-credential.c index ec84d18a6..ce040fe2b 100644 --- a/src/credential/gnunet-service-credential.c +++ b/src/credential/gnunet-service-credential.c | |||
@@ -265,45 +265,46 @@ start_backward_resolution (void* cls, | |||
265 | struct CredentialRecordEntry *cred_pointer; | 265 | struct CredentialRecordEntry *cred_pointer; |
266 | const char *attribute; | 266 | const char *attribute; |
267 | const char *cred_attribute; | 267 | const char *cred_attribute; |
268 | char *issuer_key; | ||
269 | char *cred_issuer_key; | ||
270 | const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key_ecdsa; | ||
271 | const struct GNUNET_CRYPTO_EcdsaPublicKey *cred_issuer_key_ecdsa; | ||
272 | 268 | ||
273 | for(cred_pointer = vrh->cred_chain_head; cred_pointer != NULL; | 269 | for(cred_pointer = vrh->cred_chain_head; cred_pointer != NULL; |
274 | cred_pointer = cred_pointer->next){ | 270 | cred_pointer = cred_pointer->next){ |
275 | cred = &cred_pointer->record_data; | 271 | cred = &cred_pointer->record_data; |
276 | issuer_key_ecdsa = &vrh->attr_pointer->record_data.subject_key; | ||
277 | cred_issuer_key_ecdsa = &cred_pointer->record_data.issuer_key; | ||
278 | 272 | ||
279 | issuer_key = GNUNET_CRYPTO_ecdsa_public_key_to_string(issuer_key_ecdsa); | 273 | if(0 == memcmp (&vrh->attr_pointer->record_data.subject_key, |
280 | cred_issuer_key = GNUNET_CRYPTO_ecdsa_public_key_to_string(cred_issuer_key_ecdsa); | 274 | &cred_pointer->record_data.issuer_key, |
281 | if(0 == strcmp(issuer_key,cred_issuer_key)) | 275 | sizeof(struct GNUNET_CRYPTO_EcdsaPublicKey))){ |
282 | { | 276 | |
283 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 277 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
284 | "Found issuer\n"); | 278 | "Found issuer\n"); |
285 | } | 279 | |
280 | } | ||
281 | |||
282 | |||
283 | |||
286 | 284 | ||
287 | } | 285 | } |
288 | |||
289 | 286 | ||
290 | 287 | ||
288 | |||
291 | //Start from next to head | 289 | //Start from next to head |
292 | for(vrh->attr_pointer = vrh->attr_queue_head->next ; vrh->attr_pointer->next != NULL ; | 290 | vrh->attr_pointer = vrh->attr_pointer->next; |
293 | vrh->attr_pointer = vrh->attr_pointer->next ){ | 291 | |
294 | 292 | ||
293 | |||
294 | if(vrh->attr_pointer->next != NULL){ | ||
295 | //Start with backward resolution | 295 | //Start with backward resolution |
296 | GNUNET_GNS_lookup (gns, | 296 | vrh->lookup_request = GNUNET_GNS_lookup (gns, |
297 | vrh->issuer_attribute, | 297 | vrh->issuer_attribute, |
298 | &vrh->issuer_key, //issuer_key, | 298 | &vrh->issuer_key, //issuer_key, |
299 | GNUNET_GNSRECORD_TYPE_ATTRIBUTE, | 299 | GNUNET_GNSRECORD_TYPE_ATTRIBUTE, |
300 | GNUNET_GNS_LO_DEFAULT, | 300 | GNUNET_GNS_LO_DEFAULT, |
301 | NULL, //shorten_key, always NULL | 301 | NULL, //shorten_key, always NULL |
302 | &start_backward_resolution, | 302 | &start_backward_resolution, |
303 | vrh); | 303 | vrh); |
304 | } | 304 | } |
305 | 305 | ||
306 | 306 | ||
307 | |||
307 | } | 308 | } |
308 | 309 | ||
309 | /** | 310 | /** |
@@ -333,7 +334,7 @@ send_lookup_response (void* cls, | |||
333 | 334 | ||
334 | struct GNUNET_CREDENTIAL_AttributeRecordData *ard = | 335 | struct GNUNET_CREDENTIAL_AttributeRecordData *ard = |
335 | GNUNET_new(struct GNUNET_CREDENTIAL_AttributeRecordData); | 336 | GNUNET_new(struct GNUNET_CREDENTIAL_AttributeRecordData); |
336 | 337 | ||
337 | attr_entry->record_data = *ard; | 338 | attr_entry->record_data = *ard; |
338 | ard->subject_key = vrh->issuer_key; | 339 | ard->subject_key = vrh->issuer_key; |
339 | GNUNET_CONTAINER_DLL_insert_tail (vrh->attr_queue_head, | 340 | GNUNET_CONTAINER_DLL_insert_tail (vrh->attr_queue_head, |
@@ -376,17 +377,19 @@ send_lookup_response (void* cls, | |||
376 | if(cred_verified != GNUNET_YES){ | 377 | if(cred_verified != GNUNET_YES){ |
377 | 378 | ||
378 | 379 | ||
379 | vrh->attr_pointer = vrh->attr_queue_head; | 380 | vrh->attr_pointer = vrh->attr_pointer->next; |
381 | if(vrh->attr_pointer != NULL){ | ||
380 | 382 | ||
381 | //Start with backward resolution | 383 | //Start with backward resolution |
382 | GNUNET_GNS_lookup (gns, | 384 | GNUNET_GNS_lookup (gns, |
383 | vrh->issuer_attribute, | 385 | vrh->issuer_attribute, |
384 | &vrh->issuer_key, //issuer_key, | 386 | &vrh->issuer_key, //issuer_key, |
385 | GNUNET_GNSRECORD_TYPE_ATTRIBUTE, | 387 | GNUNET_GNSRECORD_TYPE_ATTRIBUTE, |
386 | GNUNET_GNS_LO_DEFAULT, | 388 | GNUNET_GNS_LO_DEFAULT, |
387 | NULL, //shorten_key, always NULL | 389 | NULL, //shorten_key, always NULL |
388 | &start_backward_resolution, | 390 | &start_backward_resolution, |
389 | vrh); | 391 | vrh); |
392 | } | ||
390 | } | 393 | } |
391 | 394 | ||
392 | 395 | ||