diff options
Diffstat (limited to 'src/block/block.c')
-rw-r--r-- | src/block/block.c | 37 |
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 | ||
73 | GNUNET_NETWORK_STRUCT_BEGIN | ||
74 | |||
75 | |||
76 | /** | ||
77 | * Serialization to use in #GNUNET_BLOCK_mingle_hash. | ||
78 | */ | ||
79 | struct 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 | |||
92 | GNUNET_NETWORK_STRUCT_END | ||
93 | |||
73 | void | 94 | void |
74 | GNUNET_BLOCK_mingle_hash (const struct GNUNET_HashCode *in, | 95 | GNUNET_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 | ||