block_fs.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. This file is part of GNUnet.
  3. Copyright (C) 2010 GNUnet e.V.
  4. GNUnet is free software: you can redistribute it and/or modify it
  5. under the terms of the GNU Affero General Public License as published
  6. by the Free Software Foundation, either version 3 of the License,
  7. or (at your option) any later version.
  8. GNUnet is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Affero General Public License for more details.
  12. You should have received a copy of the GNU Affero General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. SPDX-License-Identifier: AGPL3.0-or-later
  15. */
  16. /**
  17. * @author Christian Grothoff
  18. *
  19. * @file
  20. * FS block formats (shared between FS and Block)
  21. *
  22. * @defgroup block-fs FS block formats
  23. * Shared between the [FS service](@ref fs) and the [Block library](@ref block).
  24. * @{
  25. */
  26. #ifndef BLOCK_FS_H
  27. #define BLOCK_FS_H
  28. #include "gnunet_util_lib.h"
  29. #include "gnunet_fs_service.h"
  30. /**
  31. * Maximum legal size for a ublock.
  32. */
  33. #define MAX_UBLOCK_SIZE (60 * 1024)
  34. GNUNET_NETWORK_STRUCT_BEGIN
  35. /**
  36. * @brief universal block for keyword and namespace search results
  37. */
  38. struct UBlock
  39. {
  40. /**
  41. * Signature using pseudonym and search keyword / identifier.
  42. */
  43. struct GNUNET_CRYPTO_EcdsaSignature signature;
  44. /**
  45. * What is being signed and why?
  46. */
  47. struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
  48. /**
  49. * Public key used to sign this block.
  50. */
  51. struct GNUNET_CRYPTO_EcdsaPublicKey verification_key;
  52. /* rest of the data is encrypted */
  53. /* 0-terminated update-identifier here (ignored for keyword results) */
  54. /* 0-terminated URI here */
  55. /* variable-size Meta-Data follows here */
  56. };
  57. /**
  58. * @brief index block (indexing a DBlock that
  59. * can be obtained directly from reading
  60. * the plaintext file)
  61. */
  62. struct OnDemandBlock
  63. {
  64. /**
  65. * Hash code of the entire content of the
  66. * file that was indexed (used to uniquely
  67. * identify the plaintext file).
  68. */
  69. struct GNUNET_HashCode file_id;
  70. /**
  71. * At which offset should we be able to find
  72. * this on-demand encoded block? (in NBO)
  73. */
  74. uint64_t offset GNUNET_PACKED;
  75. };
  76. GNUNET_NETWORK_STRUCT_END
  77. #endif
  78. /** @} */ /* end of group */