#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;
-
- /**
- * Key generated (!) from the H(keyword) as the seed!
- */
- struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded keyspace;
-
- /**
- * GNUNET_RSA_Signature using RSA-key of the namespace
- */
- struct GNUNET_CRYPTO_RsaSignature ns_signature;
+ struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
/**
- * What is being signed and why?
+ * Public key used to sign this block.
*/
- struct GNUNET_CRYPTO_RsaSignaturePurpose ns_purpose;
+ struct GNUNET_CRYPTO_EcdsaPublicKey verification_key;
- /**
- * Public key of the namespace.
- */
- struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded subspace;
+ /* rest of the data is encrypted */
- /* 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