[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30304 - gnunet/src/gnsrecord,
gnunet <=