add prove and issue
authorSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>
Fri, 17 Aug 2018 13:18:39 +0000 (15:18 +0200)
committerSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>
Fri, 17 Aug 2018 13:18:39 +0000 (15:18 +0200)
src/include/gnunet_zklaim_service.h
src/zklaim/zklaim_functions.c

index 6654555ab8d2b1ceaee376338f3b68b83220d9e3..0a551e7033259214ec9fcd17427a486c136ebbba 100644 (file)
@@ -37,6 +37,7 @@ extern "C"
 #endif
 
 #include "gnunet_util_lib.h"
+#include "zklaim/zklaim.h"
 
 /**
  * Version number of GNUnet Identity Provider API.
@@ -80,6 +81,19 @@ typedef void
                                   uint64_t *data);
 
 
+/**
+ * Iterator called for each attribute to set a predicate in proof generation.
+ *
+ * @param cls closure
+ * @param name name of attribute
+ * @param data attribute data (can be modified)
+ */
+typedef void
+(*GNUNET_ZKLAIM_PredicateIterator) (void *cls,
+                                    const char* name,
+                                    enum zklaim_op *op,
+                                    uint64_t *ref);
+
 
 /**
  * Continuation called to notify client about result of the
index 2680566988aecd2838c9baeb67c727fc7ce60286..3c968cfeac5fce326378a7bce936b5bbffedc0ab 100644 (file)
@@ -98,3 +98,44 @@ ZKLAIM_context_issue (struct GNUNET_ZKLAIM_Context *ctx,
   ZKLAIM_context_sign (ctx,
                        key);
 }
+
+void
+ZKLAIM_context_prove (struct GNUNET_ZKLAIM_Context *ctx,
+                      GNUNET_ZKLAIM_PredicateIterator iter,
+                      void *iter_cls)
+{
+  int i;
+  int j;
+  char *attr_name;
+  char *tmp;
+  zklaim_wrap_payload_ctx *plw;
+
+  tmp = GNUNET_strdup (ctx->attrs);
+  attr_name = strtok (tmp, ",");
+  plw = ctx->ctx->pl_ctx_head;
+
+  for (i = 0; i < ctx->ctx->num_of_payloads; i++)
+  {
+    for (j = 0; j < ZKLAIM_MAX_PAYLOAD_ATTRIBUTES; j++)
+    {
+      GNUNET_assert (NULL != attr_name);
+      iter (iter_cls,
+            attr_name, 
+            &plw->pl.data_op[i],
+            &plw->pl.data_ref[i]);
+      attr_name = strtok (NULL, ",");
+    }
+    plw = plw->next;
+    GNUNET_assert (NULL != plw);
+  }
+  GNUNET_free (tmp);
+
+}
+
+int
+ZKLAIM_context_verify (struct GNUNET_ZKLAIM_Context *ctx,
+                       const struct GNUNET_CRYPTO_EcdsaPublicKey *ttp)
+{
+  //TODO check ttp pubkey against pubkey in ctx
+  return zklaim_ctx_verify (ctx->ctx);
+}