gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r30304 - gnunet/src/gnsrecord


From: gnunet
Subject: [GNUnet-SVN] r30304 - gnunet/src/gnsrecord
Date: Fri, 18 Oct 2013 13:58:09 +0200

Author: grothoff
Date: 2013-10-18 13:58:09 +0200 (Fri, 18 Oct 2013)
New Revision: 30304

Modified:
   gnunet/src/gnsrecord/gnsrecord_crypto.c
   gnunet/src/gnsrecord/test_gnsrecord_crypto.c
Log:
-fix testcase to not use expired records

Modified: gnunet/src/gnsrecord/gnsrecord_crypto.c
===================================================================
--- gnunet/src/gnsrecord/gnsrecord_crypto.c     2013-10-18 11:50:24 UTC (rev 
30303)
+++ gnunet/src/gnsrecord/gnsrecord_crypto.c     2013-10-18 11:58:09 UTC (rev 
30304)
@@ -93,9 +93,19 @@
   struct GNUNET_CRYPTO_SymmetricInitializationVector iv;
   struct GNUNET_CRYPTO_SymmetricSessionKey skey;
   uint32_t rd_count_nbo;
+  unsigned int i;
 
   if (payload_len > GNUNET_GNSRECORD_MAX_BLOCK_SIZE)
     return NULL;
+  /* sanity check */
+  for (i=0;i<rd_count;i++)
+    if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
+      {
+        /* encrypted blocks must never have relative expiration times, skip! */
+        GNUNET_break (0);
+        return NULL;
+      }
+  /* serialize */
   rd_count_nbo = htonl (rd_count);
   memcpy (payload, &rd_count_nbo, sizeof (uint32_t));
   GNUNET_assert (payload_len ==
@@ -108,9 +118,10 @@
                               sizeof (struct GNUNET_TIME_AbsoluteNBO));
   block->purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_GNS_RECORD_SIGN);
   block->expiration_time = GNUNET_TIME_absolute_hton (expire);
+  /* encrypt and sign */
   dkey = GNUNET_CRYPTO_ecdsa_private_key_derive (key,
-                                      label,
-                                      "gns");
+                                                 label,
+                                                 "gns");
   GNUNET_CRYPTO_ecdsa_key_get_public (dkey,
                                    &block->derived_key);
   GNUNET_CRYPTO_ecdsa_key_get_public (key,
@@ -118,8 +129,8 @@
   derive_block_aes_key (&iv, &skey, label, &pkey);
   GNUNET_break (payload_len + sizeof (uint32_t) ==
                GNUNET_CRYPTO_symmetric_encrypt (payload, payload_len + sizeof 
(uint32_t),
-                                          &skey, &iv,
-                                          &block[1]));
+                                                 &skey, &iv,
+                                                 &block[1]));
   if (GNUNET_OK !=
       GNUNET_CRYPTO_ecdsa_sign (dkey,
                              &block->purpose,

Modified: gnunet/src/gnsrecord/test_gnsrecord_crypto.c
===================================================================
--- gnunet/src/gnsrecord/test_gnsrecord_crypto.c        2013-10-18 11:50:24 UTC 
(rev 30303)
+++ gnunet/src/gnsrecord/test_gnsrecord_crypto.c        2013-10-18 11:58:09 UTC 
(rev 30304)
@@ -53,12 +53,12 @@
 create_record (int count)
 {
   unsigned int c;
-  struct GNUNET_GNSRECORD_Data * rd;
+  struct GNUNET_GNSRECORD_Data *rd;
 
   rd = GNUNET_malloc (count * sizeof (struct GNUNET_GNSRECORD_Data));
   for (c = 0; c < count; c++)
   {
-    rd[c].expiration_time = GNUNET_TIME_absolute_get().abs_value_us;
+    rd[c].expiration_time = GNUNET_TIME_absolute_get().abs_value_us + 
1000000000;
     rd[c].record_type = TEST_RECORD_TYPE;
     rd[c].data_size = TEST_RECORD_DATALEN;
     rd[c].data = GNUNET_malloc(TEST_RECORD_DATALEN);
@@ -70,23 +70,21 @@
 
 static void
 rd_decrypt_cb (void *cls,
-                                                unsigned int rd_count,
-                                                const struct 
GNUNET_GNSRECORD_Data *rd)
+               unsigned int rd_count,
+               const struct GNUNET_GNSRECORD_Data *rd)
 {
   char rd_cmp_data[TEST_RECORD_DATALEN];
-
   int c;
 
   GNUNET_assert (RECORDS == rd_count);
   GNUNET_assert (NULL != rd);
 
   memset (rd_cmp_data, 'a', TEST_RECORD_DATALEN);
-
   for (c = 0; c < rd_count; c++)
   {
-       GNUNET_assert (TEST_RECORD_TYPE == rd[c].record_type);
-       GNUNET_assert (TEST_RECORD_DATALEN == rd[c].data_size);
-       GNUNET_assert (0 == memcmp (&rd_cmp_data, rd[c].data, 
TEST_RECORD_DATALEN));
+    GNUNET_assert (TEST_RECORD_TYPE == rd[c].record_type);
+    GNUNET_assert (TEST_RECORD_DATALEN == rd[c].data_size);
+    GNUNET_assert (0 == memcmp (&rd_cmp_data, rd[c].data, 
TEST_RECORD_DATALEN));
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Block was decrypted successfully \n");
@@ -103,9 +101,13 @@
 
   /* load privat key */
   char *hostkey_file;
-  GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR,
-      "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey");
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", 
hostkey_file);
+  GNUNET_asprintf(&hostkey_file,
+                  "zonefiles%s%s",
+                  DIR_SEPARATOR_STR,
+                  "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey");
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Using zonekey file `%s'\n",
+              hostkey_file);
   privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file);
   GNUNET_free (hostkey_file);
   GNUNET_assert (privkey != NULL);




reply via email to

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