/*
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
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.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
- * @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
-{
-
- /**
- * 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;
+#define MAX_UBLOCK_SIZE (60 * 1024)
- /**
- * 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 */
* 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
uint64_t offset GNUNET_PACKED;
};
-
+GNUNET_NETWORK_STRUCT_END
#endif
+
+/** @} */ /* end of group */