gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r34179 - gnunet/src/sensor


From: gnunet
Subject: [GNUnet-SVN] r34179 - gnunet/src/sensor
Date: Wed, 20 Aug 2014 12:18:03 +0200

Author: otarabai
Date: 2014-08-20 12:18:03 +0200 (Wed, 20 Aug 2014)
New Revision: 34179

Modified:
   gnunet/src/sensor/
   gnunet/src/sensor/sensor_util_lib_crypto.c
   gnunet/src/sensor/test_gnunet-service-sensor_reporting.c
   gnunet/src/sensor/test_pow_sign.c
Log:
sensor: fixes for proof-of-work, test passes now


Index: gnunet/src/sensor
===================================================================
--- gnunet/src/sensor   2014-08-20 09:17:55 UTC (rev 34178)
+++ gnunet/src/sensor   2014-08-20 10:18:03 UTC (rev 34179)

Property changes on: gnunet/src/sensor
___________________________________________________________________
Modified: svn:ignore
## -6,3 +6,4 ##
 sensor.conf
 test_sensor_api
 test_gnunet-service-sensor_reporting
+test_pow_sign
Modified: gnunet/src/sensor/sensor_util_lib_crypto.c
===================================================================
--- gnunet/src/sensor/sensor_util_lib_crypto.c  2014-08-20 09:17:55 UTC (rev 
34178)
+++ gnunet/src/sensor/sensor_util_lib_crypto.c  2014-08-20 10:18:03 UTC (rev 
34179)
@@ -167,8 +167,8 @@
         htonl (GNUNET_SIGNATURE_PURPOSE_SENSOR_ANOMALY_REPORT);
     result_block->purpose.size =
         htonl (sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose) +
-        sizeof (struct GNUNET_TIME_Absolute) +
-        sizeof (struct GNUNET_CRYPTO_EddsaPublicKey) + cx->msg_size);
+               sizeof (struct GNUNET_TIME_Absolute) +
+               sizeof (struct GNUNET_CRYPTO_EddsaPublicKey) + cx->msg_size);
     memcpy (&result_block[1], &cx[1], cx->msg_size);
     sign_result =
         GNUNET_CRYPTO_eddsa_sign (&cx->private_key, &result_block->purpose,
@@ -178,6 +178,7 @@
     GNUNET_SENSOR_crypto_pow_sign_cancel (cx);
     if (NULL != callback)
       callback (callback_cls, (GNUNET_OK == sign_result) ? result_block : 
NULL);
+    return;
   }
   cx->pow++;
   cx->calculate_pow_task = GNUNET_SCHEDULER_add_now (&calculate_pow, cx);
@@ -193,7 +194,13 @@
 GNUNET_SENSOR_crypto_pow_sign_cancel (struct GNUNET_SENSOR_crypto_pow_context
                                       *cx)
 {
+  if (GNUNET_SCHEDULER_NO_TASK != cx->calculate_pow_task)
+  {
+    GNUNET_SCHEDULER_cancel (cx->calculate_pow_task);
+    cx->calculate_pow_task = GNUNET_SCHEDULER_NO_TASK;
+  }
   GNUNET_free (cx);
+  cx = NULL;
 }
 
 
@@ -262,23 +269,27 @@
                                       void **payload)
 {
   /* Check public key */
-  if (0 != memcmp (public_key, &block->public_key, sizeof (struct 
GNUNET_CRYPTO_EddsaPublicKey)))
+  if (0 !=
+      memcmp (public_key, &block->public_key,
+              sizeof (struct GNUNET_CRYPTO_EddsaPublicKey)))
   {
     LOG (GNUNET_ERROR_TYPE_WARNING, "Public key mismatch.\n");
     return 0;
   }
   /* Check signature */
   if (GNUNET_OK !=
-      GNUNET_CRYPTO_eddsa_verify (purpose, &block->purpose,
-                                  &block->signature, public_key))
+      GNUNET_CRYPTO_eddsa_verify (purpose, &block->purpose, &block->signature,
+                                  public_key))
   {
     LOG (GNUNET_ERROR_TYPE_WARNING, "Invalid signature.\n");
     return 0;
   }
   /* Check pow */
-  if (GNUNET_NO == check_pow (&block->timestamp,
-      sizeof (struct GNUNET_TIME_Absolute) +
-              sizeof (struct GNUNET_CRYPTO_EddsaPublicKey) + block->msg_size, 
block->pow, matching_bits))
+  if (GNUNET_NO ==
+      check_pow (&block->timestamp,
+                 sizeof (struct GNUNET_TIME_Absolute) +
+                 sizeof (struct GNUNET_CRYPTO_EddsaPublicKey) + 
block->msg_size,
+                 block->pow, matching_bits))
   {
     LOG (GNUNET_ERROR_TYPE_WARNING, "Invalid proof-of-work.\n");
     return 0;

Modified: gnunet/src/sensor/test_gnunet-service-sensor_reporting.c
===================================================================
--- gnunet/src/sensor/test_gnunet-service-sensor_reporting.c    2014-08-20 
09:17:55 UTC (rev 34178)
+++ gnunet/src/sensor/test_gnunet-service-sensor_reporting.c    2014-08-20 
10:18:03 UTC (rev 34179)
@@ -356,7 +356,11 @@
 {
   struct TestPeer *peer = cls;
 
-  GNUNET_assert (NULL == emsg);
+  if (NULL != emsg)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ERROR: %s.\n", emsg);
+    GNUNET_assert (0);
+  }
   peer->sensor_op =
       GNUNET_TESTBED_service_connect (NULL, peer->testbed_peer, "sensor",
                                       &sensor_connect_cb, peer,
@@ -441,7 +445,11 @@
 dashboard_started (void *cls, struct GNUNET_TESTBED_Operation *op,
                    const char *emsg)
 {
-  GNUNET_assert (NULL == emsg);
+  if (NULL != emsg)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "ERROR: %s.\n", emsg);
+    GNUNET_assert (0);
+  }
   GNUNET_TESTBED_operation_done (op);
   /* Connect to peerstore service on first peer */
   peerstore_op =

Modified: gnunet/src/sensor/test_pow_sign.c
===================================================================
--- gnunet/src/sensor/test_pow_sign.c   2014-08-20 09:17:55 UTC (rev 34178)
+++ gnunet/src/sensor/test_pow_sign.c   2014-08-20 10:18:03 UTC (rev 34179)
@@ -107,18 +107,29 @@
 }
 
 
-static void pow_cb (void *cls, struct GNUNET_SENSOR_crypto_pow_block *block)
+static void
+pow_cb (void *cls, struct GNUNET_SENSOR_crypto_pow_block *block)
 {
   void *response;
 
-  printf ("Received block:\n"
-      "pow: %" PRIu64 ".\n", block->pow);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Received block:\n" "pow: %" PRIu64 ".\n", block->pow);
+  /* Test that the block is valid */
   GNUNET_assert (MSG_SIZE ==
-  GNUNET_SENSOR_crypto_verify_pow_sign (block, MATCHING_BITS,
-      public_key, GNUNET_SIGNATURE_PURPOSE_SENSOR_ANOMALY_REPORT, &response));
-  GNUNET_assert (0 == memcmp(msg, response, MSG_SIZE));
+                 GNUNET_SENSOR_crypto_verify_pow_sign (block, MATCHING_BITS,
+                                                       public_key,
+                                                       
GNUNET_SIGNATURE_PURPOSE_SENSOR_ANOMALY_REPORT,
+                                                       &response));
+  GNUNET_assert (0 == memcmp (msg, response, MSG_SIZE));
+  /* Modify the payload and test that verification returns invalid */
+  block->pow++;
+  GNUNET_assert (0 ==
+                 GNUNET_SENSOR_crypto_verify_pow_sign (block, MATCHING_BITS,
+                                                       public_key,
+                                                       
GNUNET_SIGNATURE_PURPOSE_SENSOR_ANOMALY_REPORT,
+                                                       &response));
   ok = 0;
-  GNUNET_SCHEDULER_cancel(shutdown_task);
+  GNUNET_SCHEDULER_cancel (shutdown_task);
   GNUNET_SCHEDULER_add_now (do_shutdown, NULL);
 }
 
@@ -140,17 +151,19 @@
   struct GNUNET_TIME_Absolute timestamp;
 
   /* generate random data block */
-  GNUNET_CRYPTO_random_block(GNUNET_CRYPTO_QUALITY_WEAK, msg, MSG_SIZE);
+  GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, msg, MSG_SIZE);
   /* get private and public keys */
   private_key =
       GNUNET_CRYPTO_eddsa_key_create_from_configuration (pinfo->result.cfg);
   GNUNET_assert (NULL != private_key);
   public_key = GNUNET_new (struct GNUNET_CRYPTO_EddsaPublicKey);
+
   GNUNET_CRYPTO_eddsa_key_get_public (private_key, public_key);
   /* create pow and sign */
-  timestamp = GNUNET_TIME_absolute_get();
-  GNUNET_SENSOR_crypto_pow_sign (msg, MSG_SIZE, &timestamp,
-      public_key, private_key, MATCHING_BITS, &pow_cb, NULL);
+  timestamp = GNUNET_TIME_absolute_get ();
+  GNUNET_SENSOR_crypto_pow_sign (msg, MSG_SIZE, &timestamp, public_key,
+                                 private_key, MATCHING_BITS, &pow_cb, NULL);
+  GNUNET_TESTBED_operation_done (op);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]