aboutsummaryrefslogtreecommitdiff
path: root/src/block/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/block/block.c')
-rw-r--r--src/block/block.c37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/block/block.c b/src/block/block.c
index 2e3c1dc70..98095b51c 100644
--- a/src/block/block.c
+++ b/src/block/block.c
@@ -70,19 +70,40 @@ struct GNUNET_BLOCK_Context
70}; 70};
71 71
72 72
73GNUNET_NETWORK_STRUCT_BEGIN
74
75
76/**
77 * Serialization to use in #GNUNET_BLOCK_mingle_hash.
78 */
79struct MinglePacker
80{
81 /**
82 * Original hash.
83 */
84 struct GNUNET_HashCode in;
85
86 /**
87 * Mingle value.
88 */
89 uint32_t mingle GNUNET_PACKED;
90};
91
92GNUNET_NETWORK_STRUCT_END
93
73void 94void
74GNUNET_BLOCK_mingle_hash (const struct GNUNET_HashCode *in, 95GNUNET_BLOCK_mingle_hash (const struct GNUNET_HashCode *in,
75 uint32_t mingle_number, 96 uint32_t mingle_number,
76 struct GNUNET_HashCode *hc) 97 struct GNUNET_HashCode *hc)
77{ 98{
78 struct GNUNET_HashCode m; 99 struct MinglePacker mp = {
79 100 .in = *in,
80 GNUNET_CRYPTO_hash (&mingle_number, 101 .mingle = mingle_number
81 sizeof(uint32_t), 102 };
82 &m); 103
83 GNUNET_CRYPTO_hash_xor (&m, 104 GNUNET_CRYPTO_hash (&mp,
84 in, 105 sizeof(mp),
85 hc); 106 hc);
86} 107}
87 108
88 109