gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r27811 - gnunet/src/namestore


From: gnunet
Subject: [GNUnet-SVN] r27811 - gnunet/src/namestore
Date: Tue, 9 Jul 2013 09:24:44 +0200

Author: grothoff
Date: 2013-07-09 09:24:44 +0200 (Tue, 09 Jul 2013)
New Revision: 27811

Modified:
   gnunet/src/namestore/gnunet-service-namestore.c
Log:
-simplify zone key loading by using synchronous ECC key API

Modified: gnunet/src/namestore/gnunet-service-namestore.c
===================================================================
--- gnunet/src/namestore/gnunet-service-namestore.c     2013-07-09 07:18:53 UTC 
(rev 27810)
+++ gnunet/src/namestore/gnunet-service-namestore.c     2013-07-09 07:24:44 UTC 
(rev 27811)
@@ -192,27 +192,8 @@
  */
 static struct GNUNET_CONTAINER_MultiHashMap *zonekeys;
 
-/**
- * DLL head for key loading contexts
- */
-static struct KeyLoadContext *kl_head;
 
 /**
- * DLL tail for key loading contexts
- */
-static struct KeyLoadContext *kl_tail;
-
-struct KeyLoadContext
-{
-  struct KeyLoadContext *next;
-  struct KeyLoadContext *prev;
-  struct GNUNET_CRYPTO_EccKeyGenerationContext *keygen;
-  char *filename;
-  unsigned int *counter;
-};
-
-
-/**
  * Writes the encrypted private key of a zone in a file
  *
  * @param filename where to store the zone
@@ -402,7 +383,6 @@
 {
   struct GNUNET_NAMESTORE_ZoneIteration *no;
   struct GNUNET_NAMESTORE_Client *nc;
-  struct KeyLoadContext *kl;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping namestore service\n");
   if (NULL != snc)
@@ -410,16 +390,6 @@
     GNUNET_SERVER_notification_context_destroy (snc);
     snc = NULL;
   }
-
-  while (NULL != (kl = kl_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (kl_head, kl_tail, kl);
-    if (NULL != kl->keygen)
-      GNUNET_CRYPTO_ecc_key_create_stop (kl->keygen);
-    GNUNET_free (kl->filename);
-    GNUNET_free (kl);
-  }
-
   GNUNET_CONTAINER_multihashmap_iterate (zonekeys, &zone_to_disk_it, NULL);
   GNUNET_CONTAINER_multihashmap_destroy (zonekeys);
   zonekeys = NULL;
@@ -1712,30 +1682,7 @@
   GNUNET_SERVER_receive_done (client, GNUNET_OK);
 }
 
-static void
-zonekey_it_key_cb (void *cls,
-                   struct GNUNET_CRYPTO_EccPrivateKey *pk,
-                   const char *emsg)
-{
-  struct KeyLoadContext *kl = cls;
 
-  kl->keygen = NULL;
-  if (NULL == pk)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                _("Could not parse zone key file `%s'\n"),
-                kl->filename);
-    return;
-  }
-  learn_private_key (pk);
-  (*kl->counter) ++;
-
-  GNUNET_CONTAINER_DLL_remove (kl_head, kl_tail, kl);
-  GNUNET_free (kl->filename);
-  GNUNET_free (kl);
-}
-
-
 /**
  * Load zone keys from directory by reading all .zkey files in this directory
  *
@@ -1746,24 +1693,17 @@
 static int
 zonekey_file_it (void *cls, const char *filename)
 {
-  struct KeyLoadContext *kl;
+  unsigned int *counter = cls;
+  struct GNUNET_CRYPTO_EccPrivateKey *pk;
+  
 
   if ((NULL == filename) ||
-      (NULL == strstr(filename, ".zkey")))
+      (NULL == strstr (filename, ".zkey")))
     return GNUNET_OK;
-
-  kl = GNUNET_malloc (sizeof (struct KeyLoadContext));
-  kl->filename = strdup (filename);
-  kl->counter = cls;
-  kl->keygen = GNUNET_CRYPTO_ecc_key_create_start (filename, 
zonekey_it_key_cb, kl);
-  if (NULL == kl->keygen)
-  {
-    GNUNET_free (kl->filename);
-    GNUNET_free (kl);
-    return GNUNET_OK;
-  }
-
-  GNUNET_CONTAINER_DLL_insert (kl_head, kl_tail, kl);
+  pk = GNUNET_CRYPTO_ecc_key_create_from_file (filename);
+  learn_private_key (pk);
+  GNUNET_CRYPTO_ecc_key_free (pk);
+  (*counter)++;
   return GNUNET_OK;
 }
 
@@ -1832,10 +1772,12 @@
   }
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
-             "Scanning directory `%s' for zone files\n", zonefile_directory);
+             "Scanning directory `%s' for zone files\n", 
+             zonefile_directory);
   zonekeys = GNUNET_CONTAINER_multihashmap_create (16, GNUNET_NO);
   counter = 0;
-  GNUNET_DISK_directory_scan (zonefile_directory, zonekey_file_it, &counter);
+  GNUNET_DISK_directory_scan (zonefile_directory, 
+                             &zonekey_file_it, &counter);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
              "Found %u zone files\n", 
              counter);




reply via email to

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