[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] 28/171: - starting backward resolution
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] 28/171: - starting backward resolution |
Date: |
Thu, 04 Jan 2018 16:08:56 +0100 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository gnunet.
commit 0f854e736bf6f2d62649fe38e25967dd71aec97f
Author: Adnan H <address@hidden>
AuthorDate: Mon Dec 5 22:15:25 2016 +0100
- starting backward resolution
---
src/credential/gnunet-service-credential.c | 99 +++++++++++++++++++++++++++++-
1 file changed, 97 insertions(+), 2 deletions(-)
diff --git a/src/credential/gnunet-service-credential.c
b/src/credential/gnunet-service-credential.c
index aa3c02003..047ea0075 100644
--- a/src/credential/gnunet-service-credential.c
+++ b/src/credential/gnunet-service-credential.c
@@ -82,11 +82,12 @@ struct AttributeRecordEntry
struct AttributeRecordEntry *prev;
/**
- *
+ * Payload
*/
struct GNUNET_CREDENTIAL_AttributeRecordData record_data;
};
+
/**
* Handle to a lookup operation from api
*/
@@ -117,6 +118,11 @@ struct VerifyRequestHandle
* Issuer public key
*/
struct GNUNET_CRYPTO_EcdsaPublicKey issuer_key;
+
+ /**
+ * Issuer attribute
+ */
+ char *issuer_attribute;
/**
* Subject public key
@@ -142,6 +148,11 @@ struct VerifyRequestHandle
* Attribute Queue
*/
struct AttributeRecordEntry *attr_queue_tail;
+
+ /**
+ * Current Attribute Pointer
+ */
+ struct AttributeRecordEntry* attr_pointer;
/**
* request id
@@ -245,6 +256,58 @@ check_verify (void *cls,
return GNUNET_OK;
}
+static void
+start_backward_resolution (void* cls,
+ uint32_t rd_count,
+ const struct GNUNET_GNSRECORD_Data *rd)
+{
+ struct VerifyRequestHandle *vrh = cls;
+ int i;
+ struct GNUNET_CREDENTIAL_CredentialRecordData *cred;
+ struct GNUNET_CREDENTIAL_AttributeRecordData *attr;
+ struct CredentialRecordEntry *cred_pointer;
+ const char *attribute;
+ const char *cred_attribute;
+ char *issuer_key;
+ char *cred_issuer_key;
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *issuer_key_ecdsa;
+ const struct GNUNET_CRYPTO_EcdsaPublicKey *cred_issuer_key_ecdsa;
+
+ for(cred_pointer = vrh->cred_chain_head; cred_pointer != NULL;
+ cred_pointer = cred_pointer->next){
+ cred = &cred_pointer->record_data;
+ issuer_key_ecdsa = &vrh->attr_pointer->record_data.subject_key;
+ cred_issuer_key_ecdsa = &cred_pointer->record_data.issuer_key;
+
+ issuer_key = GNUNET_CRYPTO_ecdsa_public_key_to_string(issuer_key_ecdsa);
+ cred_issuer_key =
GNUNET_CRYPTO_ecdsa_public_key_to_string(cred_issuer_key_ecdsa);
+ if(0 == strcmp(issuer_key,cred_issuer_key))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Found issuer\n");
+ }
+
+ }
+
+
+
+ //Start from next to head
+ for(vrh->attr_pointer = vrh->attr_queue_head->next ; vrh->attr_pointer->next
!= NULL ;
+ vrh->attr_pointer = vrh->attr_pointer->next ){
+
+ //Start with backward resolution
+ GNUNET_GNS_lookup (gns,
+ vrh->issuer_attribute,
+ &vrh->issuer_key, //issuer_key,
+ GNUNET_GNSRECORD_TYPE_ATTRIBUTE,
+ GNUNET_GNS_LO_DEFAULT,
+ NULL, //shorten_key, always NULL
+ &start_backward_resolution,
+ vrh);
+ }
+
+
+}
/**
* Result from GNS lookup.
@@ -269,6 +332,16 @@ send_lookup_response (void* cls,
int cred_verified;
cred_record_count = 0;
+ struct AttributeRecordEntry *attr_entry;
+
+ struct GNUNET_CREDENTIAL_AttributeRecordData *ard =
+ GNUNET_new(struct GNUNET_CREDENTIAL_AttributeRecordData);
+
+ attr_entry->record_data = *ard;
+ ard->subject_key = vrh->issuer_key;
+ GNUNET_CONTAINER_DLL_insert_tail (vrh->attr_queue_head,
+ vrh->attr_queue_tail,
+ attr_entry);
for (i=0; i < rd_count; i++)
{
if (GNUNET_GNSRECORD_TYPE_CREDENTIAL != rd[i].record_type)
@@ -298,7 +371,28 @@ send_lookup_response (void* cls,
}
}
-
+
+
+ /**
+ * Check for attributes from the issuer and follow the chain
+ * till you get the required subject's attributes
+ */
+ if(cred_verified != GNUNET_YES){
+
+
+ vrh->attr_pointer = vrh->attr_queue_head;
+
+ //Start with backward resolution
+ GNUNET_GNS_lookup (gns,
+ vrh->issuer_attribute,
+ &vrh->issuer_key, //issuer_key,
+ GNUNET_GNSRECORD_TYPE_ATTRIBUTE,
+ GNUNET_GNS_LO_DEFAULT,
+ NULL, //shorten_key, always NULL
+ &start_backward_resolution,
+ vrh);
+ }
+
/**
@@ -395,6 +489,7 @@ handle_verify (void *cls,
vrh->request_id = v_msg->id;
vrh->issuer_key = v_msg->issuer_key;
vrh->subject_key = v_msg->subject_key;
+ vrh->issuer_attribute = issuer_attribute;
if (NULL == subject_attribute)
{
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnunet] 25/171: -fix verifymessage, (continued)
- [GNUnet-SVN] [gnunet] 25/171: -fix verifymessage, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 16/171: -update test, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 21/171: - add verify and issue to cli, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 03/171: - move towards verification, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 14/171: -cleanup cli tool, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 22/171: -add issue test, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 24/171: -add tests, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 29/171: Merge branch 'credentials' of git+ssh://gnunet.org/gnunet into credentials, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 36/171: -fix, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 26/171: - add signature to cred, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 28/171: - starting backward resolution,
gnunet <=
- [GNUnet-SVN] [gnunet] 31/171: Merge branch 'credentials' of git+ssh://gnunet.org/gnunet into credentials, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 41/171: - fix test, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 34/171: - minor fixes, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 33/171: -fix, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 32/171: -add expiration to cred, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 42/171: -add confs, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 35/171: Merge branch 'credentials' of git+ssh://gnunet.org/gnunet into credentials, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 38/171: - add signature check, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 40/171: - add delegation resolution, gnunet, 2018/01/04
- [GNUnet-SVN] [gnunet] 44/171: - Add rest plugin for credential, gnunet, 2018/01/04