fix bad free
[oweals/gnunet.git] / src / include / block_fs.h
index c3dcdeced1b26d144a500b53f3b470959674c88f..f0034d7693758fc19f97aef0609fd3019e1129da 100644 (file)
 /*
      This file is part of GNUnet.
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010 GNUnet e.V.
 
-     GNUnet is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 3, or (at your
-     option) any later version.
+     GNUnet is free software: you can redistribute it and/or modify it
+     under the terms of the GNU Affero General Public License as published
+     by the Free Software Foundation, either version 3 of the License,
+     or (at your option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
      WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
-
-     You should have received a copy of the GNU General Public License
-     along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Affero General Public License for more details.
+    
+     You should have received a copy of the GNU Affero General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /**
- * @file include/block_fs.h
- * @brief fs block formats (shared between fs and block)
  * @author Christian Grothoff
+ *
+ * @file
+ * FS block formats (shared between FS and Block)
+ *
+ * @defgroup block-fs  FS block formats
+ * Shared between the [FS service](@ref fs) and the [Block library](@ref block).
+ * @{
  */
 #ifndef BLOCK_FS_H
 #define BLOCK_FS_H
 
 #include "gnunet_util_lib.h"
-
-/**
- * @brief keyword block (advertising data under a keyword)
- */
-struct KBlock
-{
-
-  /**
-   * GNUNET_RSA_Signature using RSA-key generated from search keyword.
-   */
-  struct GNUNET_CRYPTO_RsaSignature signature;
-
-  /**
-   * What is being signed and why?
-   */
-  struct GNUNET_CRYPTO_RsaSignaturePurpose purpose;
-
-  /**
-   * Key generated (!) from the H(keyword) as the seed!
-   */
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded keyspace;
-
-  /* 0-terminated URI here */
-
-  /* variable-size Meta-Data follows here */
-
-};
+#include "gnunet_fs_service.h"
 
 
 /**
- * @brief namespace content block (advertising data under an identifier in a namespace)
+ * Maximum legal size for a ublock.
  */
-struct SBlock
-{
+#define MAX_UBLOCK_SIZE (60 * 1024)
 
-  /**
-   * GNUNET_RSA_Signature using RSA-key of the namespace
-   */
-  struct GNUNET_CRYPTO_RsaSignature signature;
 
-  /**
-   * What is being signed and why?
-   */
-  struct GNUNET_CRYPTO_RsaSignaturePurpose purpose;
-
-  /**
-   * Hash of the hash of the human-readable identifier used for
-   * this entry (the hash of the human-readable identifier is
-   * used as the key for decryption; the xor of this identifier
-   * and the hash of the "keyspace" is the datastore-query hash).
-   */
-  GNUNET_HashCode identifier;
-
-  /**
-   * Public key of the namespace.
-   */
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded subspace;
-
-  /* 0-terminated update-identifier here */
-
-  /* 0-terminated URI here (except for NBlocks) */
-
-  /* variable-size Meta-Data follows here */
-
-};
 
+GNUNET_NETWORK_STRUCT_BEGIN
 
 /**
- * @brief namespace advertisement block (advertising root of a namespace)
+ * @brief universal block for keyword and namespace search results
  */
-struct NBlock
+struct UBlock
 {
 
   /**
-   * GNUNET_RSA_Signature using RSA-key generated from search keyword.
+   * Signature using pseudonym and search keyword / identifier.
    */
-  struct GNUNET_CRYPTO_RsaSignature ksk_signature;
+  struct GNUNET_CRYPTO_EcdsaSignature signature;
 
   /**
    * What is being signed and why?
    */
-  struct GNUNET_CRYPTO_RsaSignaturePurpose ksk_purpose;
+  struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
 
   /**
-   * Key generated (!) from the H(keyword) as the seed!
+   * Public key used to sign this block.
    */
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded keyspace;
+  struct GNUNET_CRYPTO_EcdsaPublicKey verification_key;
 
-  /**
-   * GNUNET_RSA_Signature using RSA-key of the namespace
-   */
-  struct GNUNET_CRYPTO_RsaSignature ns_signature;
-
-  /**
-   * What is being signed and why?
-   */
-  struct GNUNET_CRYPTO_RsaSignaturePurpose ns_purpose;
+  /* rest of the data is encrypted */
 
-  /**
-   * Public key of the namespace.
-   */
-  struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded subspace;
-
-  /* from here on, data is encrypted with H(keyword) */
+  /* 0-terminated update-identifier here (ignored for keyword results) */
 
-  /* 0-terminated root identifier here */
+  /* 0-terminated URI here */
 
   /* variable-size Meta-Data follows here */
 
@@ -140,7 +75,7 @@ struct NBlock
 
 
 /**
- * @brief index block (indexing a DBlock that 
+ * @brief index block (indexing a DBlock that
  *        can be obtained directly from reading
  *        the plaintext file)
  */
@@ -151,7 +86,7 @@ struct OnDemandBlock
    * file that was indexed (used to uniquely
    * identify the plaintext file).
    */
-  GNUNET_HashCode file_id;
+  struct GNUNET_HashCode file_id;
 
   /**
    * At which offset should we be able to find
@@ -160,6 +95,8 @@ struct OnDemandBlock
   uint64_t offset GNUNET_PACKED;
 
 };
-
+GNUNET_NETWORK_STRUCT_END
 
 #endif
+
+/** @} */  /* end of group */